什么是分布式?什么是系统单例模式/集群模式?



 什么是分布式?什么是系统单机模式/集群模式? 



简单的讲,分布式是一个大型业务系统拆分成多个小系统子业务,部署在不同的服务器上。而集群则是同一个大型的系统服务,将同一套代码部署在多个服务器上(PC机、PC Server、小型机、云服务器等)。



单机模式:

当一个系统的业务量很小的时候所有的代码都放在一个 Web 项目中,然后将这个 Web 项目部署在一台服务器上,整个项目所有的业务服务都由这台服务器来完成,这就是系统单机模式。


缺点:
单机模式的处理能力是有限的,不能灵活的扩展,当伴随着业务量增长到一定程度的时候,单机的硬件资源将无法满足业务需求。
此时便引出现了 “ 集群模式 ”。


集群模式:
当单机模式的业务处理量达到服务器自身所承载的极限的时候,把相同的代码复制几份部署到多台服务器上,同时提供业务服务,就构成了一个系统“ 集群 ”。
在集群中的每台服务器都被称作为 “ 节点 ”,所有节点构成了一个集群服务,每个节点都提供相同的服务,新增了多少个节点就相当于提升了多少倍的业务处理量。
在一个集群中具体由哪个节点来处理当前请求呢?肯定让当前 “ 负载量 ” 较小的节点来处理该请求,使得集群中的每个节点的负载量能保持一个平衡的状态。
要想维持节点的 ”负载量  ”的平衡功能,就需要在节点处理请求前新增一个领导者(leader) ,所有请求提交由 leader ,由 leader 来指定由哪个节点来负责处理该请求。

这个指挥员就是我们常说的 “ 负载均衡服务器  ”。


集群优点:

易于系统扩展:随着系统业务量的不断增长,当系统业务处理流量达到极限时,在集群中再新增节点就 OK 咯!!!


问题:

但是,当系统业务发展到一定程度的时候,会发现无论再怎么在集群中增加节点,集群的性能提升效果并不理想了。
此时便引出了 “ 微服务结构 ”。



微服务结构:
对于微服务,本人深受其带来的利好,上面总的来说,从单例模式到集群模式,需要部署的 Web 项目无需作代码的修改操作,只是将同一套代码部署到多台服务器上即可!!!
但是,当从集群结构进军到微服务结构的时候,之前的那套业务代码就需要发生较大的改动了,如果代码整洁还好,不然非让你吐血不可几升不可。
所以,一般在系统架构的开始之初,如果不是我来架构,我都会建议团队进行微服务架构。有利于后期运维工作的开展,和降低运维成本。
如果在工作中遇到公司内部需要将老系统升级为 “ 微服务结构 ” 的话,那么就需要对系统代码进行重构了。
所以,对于老系统和微服务而言,是否继续保持原集群模式,还是需要升级成 “ 微服务架构 ”,这就需要公司的架构师或者项目经理对投入/产出比的一个权衡了。


分布式结构:
分布式结构就是将一个完整的业务系统按照其业务功能拆分成多个独立的子系统,每个独立的子系统被称为 “ 服务 ”。而这些子系统能够独立的运行在 Web 容器中,系统与系统之间通过 RPC(Remote Procedure Call)远程过程调用的方式进行通信。比如,现在需要架构一个在线网购商城,以 “ 微服务架构 ”思想为核心,就需要按照业务功能拆分成多个独立的服务,那么该商城就可以拆细分为:后台商品管理服务、前台商品展示服务(只负责商品展示)、前台商品查询服务、商品搜索服务、单点登录服务、会员服务、订单服务、大数据分析服务、商品追根述源服务等。
每个项目都可以看作独立的项目,可以独立运行并提供服务,服务与服务之间分工明确,互不影响。

如果服务之间存在依赖关系,那么通过 RPC(Remote Procedure Call)远程过程调用的方式进行通信。


优点:


低耦合:

降低了系统之间的耦合度,让系统更易于扩展,并且每个项目都可以独立开发、独立部署、独立测试,系统排错也变得简单了很多,大大提高了项目的开发效率。


易扩展:
可以对某些服务进行针对性的扩展。比如天猫双十一,单日商品成交量突飞猛增,因此单独地提升商品搜索系统、单点登录系统、会员系统、订单系统等高负载的系统新增节点数量,

而对于像后台管理系统、大数据分析系统、商品追根述源系统等低负载的系统只需保持原节点数量即可。


高复用:
系统的复用性更高,系统的重复使用可以有效的降低项目的开发成本。

例如:支付宝、淘宝、天猫都是马云的,将用户登录独立到单点登录系统后,以上三个应用都都可以使用  RPC(Remote Procedure Call)远程过程调用的方式进行通信,一次登录,任意切换,就不需要重复登录,更不需要重复开发了。。。


缺点:

增加了服务之间通信接口开发的工作量。。。






好了,关于 系统的架构就总结到这儿,当然在实际的系统构建过程中,是需要投入/产出比率的一个权衡的,不要一昧的求新式的东西,而需要重长远来考虑的,如果还有什么疑问或遇到什么问题,可以给我留言。

歇后语:“共同学习,共同进步”,也希望大家多多关注CSND的IT社区


你可能感兴趣的:(Other)