荐 深入理解集群、分布式、微服务的概念、关系和区别
一、集群与分布式的区别
区别: 集群是个物理形态,分布式是个工作方式。
分布式:
1、一个业务分拆多个子业务,部署在不同的服务器上,
2、将不同的业务分布在不同的地方。
3、分布式中的每一个节点,都可以做集群
4、从窄意上理解,也跟集群差不多,但是它的组织比较松散
5、分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务就不可访问了
6、以缩短单个任务的执行时间来提升效率的
举例
分布式的目标是降低单个对象的重要度,从而提升整个系统的性能(稳定性,计算能力等等),不过代价是增加了数据传输量
假如中国专门造了一台超级电脑,用来计算天气预报的数据,然后所有的电视台都从这台电脑获取数据,然后播放天气预报。那么这种模式就是核心式的,这台电脑处于核心位置,如果这台电脑坏了,不能工作了,那么所有电视台的天气预报都不能进行了。
现在这样设计,每个省各自出一台普通电脑,然后这些电脑联合工作,一起计算天气预报(一个业务拆分成多个子业务),虽然每台电脑的计算能力远没有那台超级电脑强,但是它们协同工作,即使某台或者某几台电脑坏了,计算仍然能继续(坏了的那几台的计算工作将会转移到其他电脑上【这里是负载均衡-集群】)。这样就降低了每台电脑的重要程度,使得天气预报系统更加稳定,不过这些电脑之间的协调就比较复杂了。
···························································································································
集群:
1、同一个业务,部署在多个服务器上
2、分担并发量,提升计算机的运算速度
3、几台服务器集中在一起,实现同一业务。
4、集群并不一定就是分布式的。
5、有一个组织性,一台服务器垮了,其它的服务器可以顶上来
6、通过提高单位时间内执行的任务数来提升效率
7、不同服务器部署同一套服务对外访问,一般配置Nginx(5w并发量)的负载容器实现服务的负载均衡、静态资源缓存、Session共享。
8、区别集群的方式是根据部署多台服务器业务是否相同。
注:集群模式需要做好session共享,确保在不同服务器切换的过程中不会因为没有获取到session而中止退出服务。
举例:
就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成,实现了负载均衡的原理。
例如: 如果一个任务由 10 个子任务组成,每个子任务单独执行需 1 小时,则在一台服务器上执行该任务需 10 小时。
采用分布式方案,提供 10 台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是 Hadoop 的 Map/Reduce 分布式计算模型)
而采用集群方案,同样提供 10 台服务器,每台服务器都能独立处理这个任务。假设有 10 个任务同时到达,10 个服务器将同时工作,1 小时后,10 个任务同时完成,这样,整身来看,还是 1 小时内完成一个任务!
注意:
好的设计应该是分布式和集群的结合,先分布式再集群,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样每个子业务如果出了问题,整个系统完全不会受影响。
···························································································································
二、微服务与分布式的区别
微服务
是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
微服务:
1、微服务是系统架构的设计方式
2、当业务模块A出了问题,不影响业务模块B正常工作(因为分解成了2个独立的服务,但服务A和服务B可以都部署在同一服务器上。
3、微服务的核心要素是服务划分的“微小”。
4、纵向扩展单个业务,实现微服务。
5、微服务重在解耦合,使每个模块都独立
6、微服务一定会去解决分布式事务问题
分布式:
分布式:
1、分布式是系统的部署方式
2、分布式系统中可横向扩展服务器,降低业务的耦合度。
3、将不同业务部署在多台服务器或者虚拟机上,通过RPC或者Restful进行数据传输。
4、分布式重在资源共享与加快计算机计算速度
将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务。
上面:service A、B、C、D 分别是业务组件,通过API Geteway进行业务访问。
注:分布式需要做好事务管理。
分布式事务可参考:微服务架构的分布式事务解决方案
注意:
分布式未必是微服务,比如将一个单体应用划分成三块部署,这符合分布式;但这三块依旧很大,不符合微服务。但分布式最后都会向微服务演进。
**问:** 分布式是否属于微服务?
答案是肯定的。微服务的意思也就是将模块拆分成一个独立的服务单元通过接口来实现数据的交互。
**问:** 什么是微服务架构
微服务的设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。
分布式和微服的架构很相似,只是部署的方式不一样而已。记得点赞、收藏、评论呦!!!!
····························································································································
本文地址:https://blog.csdn.net/weixin_42103983/article/details/107305368