概念:
丛集是一个物理形态,分散式是个工作方式。
分散式:一个业务拆分成多个子业务,部署在不同的服务器上。
丛集:同一个业务,部署在多个服务器上。
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
来源于网络
区别:
1. 分散式是以缩短单个任务的执行时间来提升效率的,而丛集则是通过提高单位时间内执行的任务数来提升效率。
例如:如果一个任务由 10 个子任务组成,每个子任务单独执行需 1 小时,则在一台服务器上执行该任务需 10 小时。
采用分散式方案,提供 10 台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是 Hadoop 的 Map/Reduce 分散式计算模型)
采用丛集方案,同样提供 10 台服务器,每台服务器都能独立处理这个任务。假设有 10 个任务同时到达,10 个服务器将同时工作,1 小时后,10 个任务同时完成。这样整体来看,还是 1 小时内完成一个任务。
注:分散式需要做好事务管理。
2.丛集模式是不同服务器部署同一套服务对外访问,实现服务的负载均衡。区别丛集的方式是根据部署多台服务器业务是否相同,分散式中的每一个节点都可以做丛集。而丛集不一定就是分散式的。
来源于网络
注:丛集模式需要做好session共享,确保在不同服务器切换的过程中不会因为没有获取到session而中止退出服务。
3. 分散式与微服务的关系
分散式和微服务的架构很相似,只是部署的方式不一样而已。
生产环境下的微服务肯定是分散式部署的,分散式部署的应用不一定是微服务架构的。
微服务的意思也就是将模组拆分成一个独立的服务单元通过界面来实现资料的互动。
4. 在开发中我们可以将分散式和丛集分开吗?
分散式的主要功能是用来将我们的系统模组化,将系统进行解耦的,方便我们以后的维护和开发的。但是其并不能解决我们的并发问题,也无法保证我们的系统在服务器宕机后的正常运转。而丛集恰好弥补了分散式的缺陷,丛集就是多个服务器处理相同的业务。好的设计应该是分散式和丛集相结合,先分散式再丛集。具体实现就是业务拆分成很多子业务,然后针对每个子业务进行丛集部署。
所以说分散式和丛集谁都离不开谁。