分布式、集群和微服务之间的区别
一、分布式
分布式服务是指将多台服务器集中在一起,每台服务器都实现总体中的不同业务,做不同的事情。服务是分散部署在不同的机器上的。一个服务可能负责几个功能,是一种面向 SOA 的架构。
各分开部署的部分彼此通过各种通讯协议交互信息,并且每台服务器都缺一不可,如果某台服务器故障,则部分功能缺失,或导致整体无法运行。分布式存在的主要作用是大幅度的提高效率,缓解服务器的访问和存储压力。同时分布式中的每一个节点,都可以做集群。
例如:将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。
说明:上图中 Service A、B、C、D 分别是业务组件,通过 API Gateway 进行业务访问。
二、集群
集群是在不同服务器部署同一套服务对外访问,实现服务的负载均衡。区别集群的方式是根据部署多台服务器业务是否相同。
它将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事情。但是每台服务器并不是缺一不可,存在的作用主要是缓解并发压力和单点故障转移问题。
如下图:
三、微服务
微服务是一种架构风格,从开发的角度来说: 微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务。彻底地去解耦,每一个微服务能够自行独立启动或者销毁,拥有自己独立的数据库。
每个微服务仅关注于完成一件任务并很好地完成该任务,这个服务可以单独部署运行。 各个微服务之间是松耦合的,服务之间可以通过 RPC 来相互交互。每个微服务都是由独立的小团队开发、测试、部署,上线,负责它的整个生命周期。
微服务的设计是为了不因为某个模块的升级和 BUG 影响现有的整个系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,它也可以是同一个服务器。
如下图:
微服务很适合用 Docker 容器实现,每个容器承载一个服务。一台计算机同时运行多个容器,从而就能很轻松地模拟出复杂的微服务架构。
微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低。由于每个微服务都由独立的小团队负责,因此它敏捷性更高。分布式服务最后都会向微服务架构演化,这是一种趋势。不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维难度会增大。
注意事项:
1)微服务划分的程度根据业务不同而粒度不同,不是越细越好。因为一旦一个微服务的实体对象进行了调整,那么有多少个关联的微服务被污染了,就要不断定位其他微服务的依赖关系并重新发布,这种工作量已经超出了本该解决业务问题的工作量。
2)RPC之间的对象传递尽量用简单、松散的结构来做。以提高通信效率、降低系统复杂性,并支持系统的可扩展性和灵活性。
四、分布式、集群、微服务的异同及联系
1. 分布式与集群
1)分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
2)分布式架构往往要结合集群架构来提高可用性,例如支付系统被拆分为3个服务,为了提高每个服务的可用性,则每个服务都要采用集群模式部署。
2. 分布式与微服务
1)分布式系统是一种系统架构,而微服务是一种设计思想或架构风格。
2)分布式系统可以包含多种不同的架构风格比如:SOA、P2P等,微服务只是其中之一。
3)微服务是在分布式系统的基础上发展出来的一种更加细粒度的架构方式,强调服务的自治性和独立部署。
4)微服务架构是一种分布式系统的设计选择,但并不是所有分布式系统都采用微服务架构。
5)分布式和微服务的架构很相似,只是部署的方式不一样而已。生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的。比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。
参考链接:https://www.cnblogs.com/liaowenhui/p/14905175.html