单机架构、集架构与分布式架构
⼀、图解
分布式和微服务的关系
⼆、理解
集:同⼀个业务,部署在多个服务器上(多个⼈在⼀起做同样的事)
分布式:⼀个业务拆分为多个⼦业务,部署在多个服务器上(多个⼈在⼀起做不同的事)
⼩饭店原来只有⼀个厨师,备料洗菜切菜炒菜全⼲。后来客⼈多了,厨房⼀个厨师忙不过来,⼜请了个厨师,两个厨师都能炒⼀样的菜,两个厨师的关系是集。
为了让厨师专⼼炒菜,把菜做到极致,再请了个配菜师负责备料,备菜,切菜…厨师和配菜师的关系是分布式。
⼀个配菜师也忙不过来了,⼜请了个配菜师,两个配菜师关系是集。
⼀个配菜师因故请假了,但是其余的配菜师还是该啥就⼲啥,只是没请假的配菜师任务均匀的加量了,但他们的任务和职责是不变的,这是集。
三、概念
1 单机架构
⼀个业务量很⼩的系统,所有的代码都放在⼀个项⽬中,然后这个项⽬部署在⼀台服务器上。整个项⽬所有的服务都由这台服务器提供,这就是单机结构。单机结构的缺点: 单机的处理能⼒是有限的,当业务增长到⼀定程度的时候,单机的硬件资源将⽆法满⾜业务需求。此时便出现了集模式。
2 集架构
单机处理到达瓶颈的时候,⼯程师就把单机复制⼏份,这样就构成了⼀个“集”。集中每台服务器就叫做这个集的⼀个“节点”,所有节点构成了⼀个集。每个节点都提供相同的服务,那么这样系统的处理能⼒就相当于提升了好⼏倍(有⼏个节点就相当于提升了多少倍)。
问题是⽤户的请求究竟由哪个节点来处理呢?最好能够让此时此刻负载较⼩的节点来处理,这样使得每个节点的压⼒都⽐较平均。要实现这个功能,就需要在所有节点之前增加⼀个“调度者”的⾓⾊,⽤户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这个“调度者”就是负载均衡服务器。 特点 集结构的好处就是系统易于扩展。如果随着系统业务的发展,当前的系统⼜⽀撑不住了,那么给这个集再增加节点就⾏了。但是,当业务发展到⼀定程度的时候,会产⽣⼀个问题——⽆论怎么增加节点,整个集性能的提升效果并不明显了。这时候,就需要使⽤微服务结构了。
3 分布式架构
从单机结构到集结构,业务代码基本不需要作任何修改,⼯程师要做的仅仅是多部署⼏台服务器,每台服务器上运⾏相同的代码就⾏了。但是,从集结构演进到微服务结构,之前的代码就需要发⽣较⼤的改动。所以对于新系统,系统设计之初就采⽤微服务架构,这样后期运维的成本更低。但如果⼀套⽼系统需要升级成微服务结构的话,那就得对代码⼤动⼲⼽了。所以,对于⽼系统⽽⾔,究竟是继续保持集模式,还是升级成微服务架构,这需要架构师深思熟虑、权衡投⼊产出⽐。
分布式结构就是将⼀个完整的系统,按照业务功能,拆分成⼀个个独⽴的⼦系统。在分布式结构中,每个⼦系统就被称为“服务”。这些⼦系统能够独⽴运⾏在 中,它们之间通过 ⽅式通信。
举个例⼦,假设需要开发⼀个在线商城。按照微服务的思想,需要按照功能模块拆分成多个独⽴的服务,如:⽤户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。这⼀个个服务都是⼀个个独⽴的项⽬,可以独⽴运⾏。如果服务之间有依赖关系,那么通过 RPC ⽅式调⽤。
分布式架构优点
1. 系统之间的耦合度⼤⼤降低,可以独⽴开发、独⽴部署、独⽴测试,系统与系统之间的边界⾮常明确,排错也变得相当容易,开发效
率⼤⼤提升。
2. 系统之间的耦合度降低,从⽽系统更易于扩展,可以针对性地扩展某些服务。假设商城要搞⼤促,下单量可能会⼤⼤提升,因此可以
针对性地提升订单系统、产品系统的节点数量,⽽对于后台管理系统、数据分析系统⽽⾔,节点数量维持原有⽔平即可。
3. 服务的复⽤性更⾼。⽐如,将⽤户系统作为单独的服务后,该公司所有的产品都可以使⽤该系统作为⽤户系统,⽆需重复开发。
四、区别联系
1. 集主要的使⽤场景是为了分担请求的压⼒,也就是在⼏个服务器上部署相同的应⽤程序,来分担客户端请求。
当压⼒进⼀步增⼤的时候,可能在需要存储的部分,MySQL ⽆法⾯对很多的写压⼒。因为在 MySQL 做成集之后,主要的写压⼒还是在master 的机器上⾯,其他 slave 机器⽆法分担写压⼒,从⽽这个时候,也就引出来分布式。
分布式的主要应⽤场景是单台机器已经⽆法满⾜这种性能的要求,必须要融合多个节点,并且节点之间是有交互的。相当于在写 MySQL 的时候,每个节点存储部分数据,也就是分布式存储的由来。在
存储⼀些⾮结构化数据:静态⽂件、图⽚、pdf、⼩视频 … 这些也就是分布式⽂件系统的由来。
2. 分布式是指多个系统协同合作完成⼀个特定任务的系统。分布式是解决中⼼化管理的问题,如果把所有的任务叠加到⼀个节点处理,
太慢了。所以把⼀个⼤的问题拆分为多个⼩的问题,并分别解决,最终协同合作。分布式的主要⼯作是分解任务,将职能拆解。
3. 集主要是简单加机器解决问题,对于问题本⾝不做任何分解。
分布式处理⾥必然包含任务分解与答案归并。分布式中的某个⼦任务系统,可能由⼀个集来代替;集中任⼀节点,都是做⼀个完整的任务。
集和分布式都是由多个节点组成,但是集之间的通信协调基本不需要;⽽分布式各个节点的通信协调必不可少。
将⼀套系统拆分成不同⼦系统部署在不同服务器上,这叫分布式。
然后部署多个相同的⼦系统在不同的服务器上,这叫集。
部署在不同服务器上的同⼀个⼦系统,叫做负载均衡。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论