常用概念系列目录
正文
分布式系统是建立在网络之上的软件系统,此定义包含了两个关键点
- 软件系统
此处的软件是一个通用概念,可以是业务软件、也可以是数据库软件、也可以是中间件软件;
系统指这些软件作为一个整体统一对外提供服务; - 网络之上
网络通信是分布式系统的显著特点,也是导致分布式系统产生数据不一致、服务不可用等问题的根源;
本文以具备多个功能模块的业务软件为例,介绍分布式系统的相关知识。数据库软件、中间件软件可以认为是具备一个功能模块的业务软件。
一般情况下,软件系统包含多个功能模块,这些功能模块相互协调合作,向用户提供各类服务。
在单体系统中,这些功能模块在一个工程中,模块之间的调用都在本地完成,不经过网络,最终单体系统经过编译打包后,部署在一台服务器上。
分布式系统同样也是一个软件系统,它同样包含了多个功能模块。不同的是,这些功能模块被部署在不同的服务器节点上(分布式,即分布在不同的服务器节点上),这些模块之间的交互需要通过网络完成。
为何要使用分布式系统?
-
S: 用户请求量大或数据量大,单体系统无法有效响应请求或处理数据。
-
T: 单体系统问题实质是物理层面单台服务器的性能不够问题,其根本解决办法是提高服务器性能。
- 当进行垂直扩展时(即提升服务器性能),系统部署包仍部署在一个服务器上,系统各个功能模块之间的调用不走网络,此时不是分布式系统。
- 当进行水平扩展时(即增加服务器数量),就需要对单体系统进行切分,并将切分后功能模块运行在多个服务器,此时系统各个功能模块之间调用需要通过网络,此时是分布式系统;
-
A:对单体系统的切分是功能模块层面,这些功能模块可以认为是一项任务,这些任务分布在不同的服务器上。常见三种切分方式
- 水平切分
复制单体系统的部署包,将其部署在不同的服务器上,即同一个系统部署到多台机器上。
对应水平扩展; - 垂直切分
按照业务维度,将单体系统拆分为多个功能模块,这些功能模块分别形成不同的部署包,部署在不同的服务器上;
对应垂直扩展; - 混合切分
将水平切分和垂直切分结合起来;
- 水平切分
-
S: 以具备A、B、C三个模块的单体系统为例,单体系统的部署情况为 服务器1(A、B、C)
-
水平切分
服务器1(A、B、C) <----> 服务器2(A、B、C)<----> 服务器3(A、B、C)
箭头表示存在交互关系 -
垂直切分
服务器1(只有A) <----> 服务器2(只有B)<----> 服务器3(只有C)
箭头表示存在交互关系 -
混合切分
服务器1(只有A) <----> 服务器2(只有B1) <----> 服务器3(只有B2)<----> 服务器4(只有C)A B C垂直切分,B1、B2水平切分
箭头表示存在交互关系
-
分布式系统实质是分布式部署系统,其特点是功能模块部署在不同的服务器上,通过网络交互。
微服务是一种软件架构设计思想,强调在业务层面将大的功能拆分为小的服务模块,是上文的切分过程。而分布式是在系统切分完成之后,强调系统部署包分布在不同的服务器上面。