分布式理论基础
什么是分布式系统
分布式系统是集中式系统的对应面,在明确分布式系统定义之前,让我们看看什么是集中式系统
集中式系统
集中式系统通常是由一台性能超强的计算机支撑的,系统所有的数据集和所有的业务单元都集中部署在这个中心节点上,所有的业务逻辑都是在中心节点上处理的
特点
集中式系统最大的特点就是结构简单,因为系统所有的部分都是在这一个节点上实现的,不需要考虑多个节点之间的协作问题。
也正是因为系统单机部署,导致整个系统庞大且复杂,很难进行扩展(牵一发而动全身),并且还存在单点故障、性能差等问题。
分布式系统
分布式系统就是为解决集中式系统的瓶颈而生的。分布式系统核心思想就是“分治”,将大问题拆分成一个一个小问题,将系统拆分成一个一个小服务单元,分而治之。每一个服务单元分散到不同的网络节点上,彼此之间协调服务,共同完成系统的整体功能。

特点
- 分散性:分布式系统中的节点都是独立运行的,并且可以在空间任意分布,而且可以随时变动。这种分散性可以有效的提高分布式系统的可用性和伸缩性,并且具备很强的容错能力
- 并发性:分布式系统中有多个进程并发运行,从而实现更高的性能
- 异构性:分布式系统中的节点可能具有不同的硬件和软件资源
- 容错性:分布式系统可以通过备份、复制以及一些容错算法来避免单点故障,提高系统的可靠性
- 可扩展性:分布式系统可以灵活的增加和删减系统资源来适应不同的业务场景
- 透明性:分布式系统对外是无感知的,对用户而言系统就是一个整体
单机和集群以及分布式的关系
单机
单机架构比较简单,就是系统的所有服务都运行在同一台机器上
集群
单机架构所有的服务都运行在一台机器上,机器的硬件资源往往是性能的瓶颈。一个很直接的想法就是一台机器不行,那就引入多台机器,这就是集群架构的做法。
所以集群架构可以简单理解为是多个单机架构组成的,集群中每一台机器都是一个节点,每个节点都提供着相同的服务
分布式
集群虽然能够有效解决单机架构的性能瓶颈,但是每个节点上依旧运行着所有的服务,耦合度太高,维护起来比较麻烦。不如从业务功能角度出发,将每个业务功能拆分成一个完全独立的子系统,这些子系统之间通过消息传递进行通信和协调工作,共同提供一个完整的系统功能。
上图所示就是一个分布式系统,并且是一个分布式集群,将电商业务拆成了多个服务部署到了不同的服务器上,并且订单服务,物流服务,还有商品服务都是集群化部署,部署了多份。当然这个例子只是为了说明分布式和集群的关系,现在真正的业务场景一般不会这样部署了,不会一台服务器部署一个应用服务,都是容器化多实例部署
单机、集群、分布式、微服务
分布式优点
CAP理论
数据一致性(C)
可用性(A)
分区容错性(P)
要么CP要么AP