【初出江湖】大白话解释集中式、分布式、微服务的区别?

2024-09-02 05:28

本文主要是介绍【初出江湖】大白话解释集中式、分布式、微服务的区别?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录标题

  • 什么是集中式?
  • 什么是分布式?
    • 分布式系统的架构一般构成模块
    • 分布式的优点
    • 分布式的缺点
    • 什么是分布式集群?
  • 什么是微服务?
    • 微服务和分布式系统有什么主要区别?
    • 微服务架构与分布式系统在开发过程中有何不同?
    • 为什么选择微服务架构而不是传统的分布式系统?

什么是集中式?

所谓集中式计算系统,是指所有计算都由位于同一位置的单台计算机来执行。(集中式系统就是把所有的程序、功能都集中到一台主机上,从而往外提供服务的方式)。集中式和分布式系统的主要区别在于系统节点之间的通信模式。集中式系统的状态控制在中央节点内,客户端以定制方式访问此节点。集中式系统的各个节点都要访问此中央节点,因此可能会导致网络拥塞和速度缓慢集中式系统存在单点故障,而分布式系统则没有单点故障。左:集中式;右:分布式。
在这里插入图片描述
比如,我们主机的PC电脑,或者手机,我们把各种软件都安装在一台机子上,当我需要什么功能,我就从这台机子上去获取。再比如,我们在学生时代做的课程设计或者开发时的小应用,我们把Web服务器、数据库等都会安装到一台电脑上。好处是,易于理解、方便维护,想要的东西我都放到了一个地方,东西好找啊。当然弊端也是显而易见的,如果这台机子崩了,或者硬盘坏了,那相当与整个系统就奔溃了,而且如果备份也是在这个硬盘上,那相当于招了灭顶之灾。

什么是分布式?

分布式系统由在网络上分散的多个计算单元组成的集合,这些单元利用跨多个独立计算单元的计算资源来实现共同的目标,以提供一种看似单一的协调服务。分布式系统旨在消除系统的瓶颈或中心故障点。广义上就是 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
在这里插入图片描述
狭义上,从进程角度看,两个程序分别运行在两个台主机的进程上,它们相互协作最终完成同一个服务(或者功能),那么理论上这两个程序所组成的系统,也可以称作是“分布式系统”。当然,这个两个程序可以是不同的程序,也可以是相同的程序。如果是相同的程序,我们又可以称之为“集群”。所谓集群,就是将相同的程序,通过不断横向扩展,以提高服务能力的方式。

毫无疑问,分布式系统对于集中式系统而言,在实现上会更加复杂。分布式系统将会是更难理解、设计、构建 和管理的,同时意味着应用程序的根源问题更难发现。

分布式系统的架构一般构成模块

分布式系统的架构

分布式的优点

项目描述
经济微处理机提供了比大型主机更好的性能价格比
速度分布式系统总的计算能力比单个大型主机更强
固有的分布性一些应用涉及到空间上分散的机器
可靠性如果一个机器崩溃,整个系统还可以运转
渐增计算能力可以逐渐有所增加

分布式的缺点

项目描述
软件分布式系统开发的软件还很少
网络网络可能饱和和引起其它的问题
安全容易造成对保密数据的访问

什么是分布式集群?

集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器。一组集群服务器包括一堆做做同一件事的服务器,这些机器可能需要统一协调管理,可以分布在一个机房,也可以分布在全国全球各个地区的多个机房。比如下面的Redis集群,每个客户端请求的方式都是一样的,但是背后是很多台机器在协同工作,每台机器干的事情都是一样的(存储和操作数据),只不过通过分片机制不同机器上存储的数据不一样,这样可以分散风险,假如有某个节点的机器挂了也只会影响部分数据。
在这里插入图片描述

什么是微服务?

微服务架构是一种将应用程序作为一组小型服务的设计方法,每个服务运行在其独立的进程中,并通过轻量级机制(TCP或者HTTP)进行通信。

微服务架构是一种分布式系统,因为它会将应用分解为单独的组件或“服务”。例如,微服务架构可能具有与业务功能(支付、用户、产品等)相对应的服务,其中各个对应组件负责相关职责的业务逻辑。因此,系统拥有服务的多个冗余副本,服务便不会出现集中故障点。


微服务里面的每个模块都可以是一个分布式集群
在这里插入图片描述


Spring Cloud微服务治理架构图
在这里插入图片描述

微服务和分布式系统有什么主要区别?

微服务是一种架构风格,它将应用程序分解为一组小的、独立的服务,每个服务都有特定的业务功能。分布式系统则是指多个网络中的计算机协同工作以完成共同的任务或目标。

微服务架构与分布式系统在开发过程中有何不同?

微服务架构强调服务的独立部署、扩展和灵活性,每个服务通常由不同的团队负责。而分布式系统更注重不同计算机之间的通信和协作。

为什么选择微服务架构而不是传统的分布式系统?

微服务架构提供了更好的模块化、更高的灵活性和可扩展性,允许快速开发和部署独立服务。它也有助于更好的错误隔离和容错,适合快速迭代的开发环境。微服务架构适用于需要快速迭代和独立扩展不同业务功能的应用程序。

在这里插入图片描述

这篇关于【初出江湖】大白话解释集中式、分布式、微服务的区别?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129113

相关文章

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v