分布式系统、集群和微服务之间的区别

分布式系统、集群和微服务之间的区别

    一、分布式系统

    分布式系统是由多台计算机组成的系统,这些计算机通过网络进行通信和协作,共同完成一个或多个共享目标。在分布式系统中,各个计算机节点可以分布在不同的地理位置,它们通过消息传递或共享存储等方式进行通信。分布式系统的设计目标包括提高性能、可靠性、可扩展性、容错性等。

    例如:将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。

 

    

    说明:上图中 Service A、B、C、D 分别是业务组件,通过 API Gateway 进行业务访问。

    二、集群

    集群是在不同服务器部署同一套服务对外访问,实现服务的负载均衡。区别集群的方式是根据部署多台服务器业务是否相同。

    它将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事情。但是每台服务器并不是缺一不可,存在的作用主要是缓解并发压力和单点故障转移问题。

    如下图:

 

    三、微服务

    微服务是一种架构风格,从开发的角度来说: 微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务。彻底地去解耦,每一个微服务能够自行独立启动或者销毁,拥有自己独立的数据库。

    每个微服务仅关注于完成一件任务并很好地完成该任务,这个服务可以单独部署运行。 各个微服务之间是松耦合的,服务之间可以通过 RPC 来相互交互。每个微服务都是由独立的小团队开发、测试、部署,上线,负责它的整个生命周期。

    微服务的设计是为了不因为某个模块的升级和 BUG 影响现有的整个系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,它也可以是同一个服务器。

   如下图:

 

    

    微服务很适合用 Docker 容器实现,每个容器承载一个服务。一台计算机同时运行多个容器,从而就能很轻松地模拟出复杂的微服务架构。

    注意事项:

    1)微服务划分的程度根据业务不同而粒度不同,不是越细越好。因为一旦一个微服务的实体对象进行了调整,那么有多少个关联的微服务被污染了,就要不断定位其他微服务的依赖关系并重新发布,这种工作量已经超出了本该解决业务问题的工作量。

    2)RPC之间的对象传递尽量用简单、松散的结构来做。以提高通信效率、降低系统复杂性,并支持系统的可扩展性和灵活性。

    四、分布式系统、集群、微服务的异同及联系

    1.  分布式系统与集群

    1)分布式系统是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

    2)分布式系统往往要结合集群架构来提高可用性,例如支付系统被拆分为3个服务,为了提高每个服务的可用性,则每个服务都要采用集群模式部署。

    2.  分布式系统与微服务

    1)分布式系统是一种系统架构,而微服务是一种设计思想或架构风格。

    2)分布式系统可以包含多种不同的架构风格比如:SOA、P2P等,微服务只是其中之一。

  •  SOA 是一种通过服务来构建软件系统的架构风格。更适合大型企业级系统的集成,倾向于重用和集中化管理。
  •  P2P 是一种网络架构,其中所有节点在网络中地位平等,每个节点既是客户端也是服务器,不存在中心控制的服务器。 

    3)微服务是在分布式系统的基础上发展出来的一种更加细粒度的架构方式,强调服务的自治性和独立部署

    4)微服务架构是一种分布式系统的设计选择,但并不是所有分布式系统都采用微服务架构。

    5)分布式和微服务的架构很相似,只是部署的方式不一样而已。生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的。比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。

 

 

    参考链接:https://www.cnblogs.com/liaowenhui/p/14905175.html

posted @   欢乐豆123  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示