概念
1.分布式
一个业务分拆多个子业务,部署在不同的服务器上,各个子业务模块之间通过接口进行数据交互。
上面:service A、B、C、D 分别是业务组件,通过API Geteway进行业务访问。
注:分布式需要做好事务管理。
2.集群
同一个业务,部署在多个服务器上实现服务的负载均衡。
注:集群模式需要做好session共享,确保在不同服务器切换的过程中不会因为没有获取到session而中止退出服务。
3.微服务
微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底去掉耦合,每一个微服务提供单个业务功能,一个服务只做一件事。
区别与联系
1.分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集中在一起实现同一业务,有一定组织性,一台服务器垮了,其它的服务器可以顶上来;
2.分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的;
3.分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务就不可访问了(在节点不做集群的情况下);
4.分布式是以缩短单个任务的执行时间来提升效率的,集群则是通过提高单位时间内执行的任务数来提升效率;
5.分布式是微服务的一种表现形式,分布式是部署层面,微服务是设计层面;
6.微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。
举例
去饭店吃饭就是一个完整的业务,饭店的厨师、配菜师、传菜员、服务员就是分布式;厨师、配菜师、传菜员和服务员都不止一个人,这就是集群。
总结
好的设计应该是分布式和集群的结合,先分布式再集群,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样每个子业务如果出了问题,整个系统完全不会受影响。
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成,系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。