微服务、分布式、集群等概念

1.概念:

  集群是个物理形态,分布式是一个工作方式。

  集群:同一个业务,部署在多个服务器上。

  分布式:一个业务拆分多个子业务,部署在不同的服务器上。

  √:分布式是指将不同的业务分布在不同的地方,而集群指的是将几台服务器集中在一起,实现同一个业务(每台服务器都可以单独实现该任务)

     分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。

     举例说明:比如一个访问量很多的网站,访问的人多了,可以做一个集群,前面放一个响应服务器,后面几台服务器完成同一个业务,如果由业务访问的时候,响应服务器看那台服务器的负载不是很重,就将给那一台去完成。

    窄意上理解,分布式与集群差不多,但是它的组织计较松散,不像集群,有一个组织性,一台服务器垮了,其他的服务器可以顶上来。而分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务就不可访问了。

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

   例如:如果一个任务由 10 个子任务组成,每个子任务单独执行需 1 小时,则在一台服务器上执行该任务需 10 小时。

            1)采用分布式方案,提供 10 台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是 Hadoop 的 Map/Reduce 分布式计算模型)

       2)采用集群方案,同样提供 10 台服务器,每台服务器都能独立处理这个任务。假设有 10 个任务同时到达,10 个服务器将同时工作,10 小时后,10 个任务同时完成,这样,整身来看,还是 1 小时内完成一个任务!


  好的设计应该是分布式和集群的结合,先分布式再集群,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样每个子业务如果出了问题,整个系统完全不会受影响。

  另外,还有一个概念和分布式比较相似,那就是微服务。

  微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

区别:分布式:

    

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

    上面:service A、B、C、D 分别是业务组件,通过API Geteway进行业务访问。

    注:分布式需要做好事务管理。

    分布式事务可参考:微服务架构的分布式事务解决方案

  集群模式:

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

      注:集群模式需要做好session共享,确保在不同服务器切换的过程中不会因为没有获取到session而中止退出服务。

      一般配置Nginx*的负载容器实现:静态资源缓存、Session共享可以附带实现,Nginx支持5000个并发量。

      分布式属于微服务,微服务的意思也就是将模块拆分成一个独立的服务单元通过接口来实现数据的交互。

微服务架构

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

    √:简单的说,微服务是架构设计方式,分布式是系统部署方式,两者概念不同。分布式和微服的架构很相似,只是部署的方式不一样而已。

mark
mark

1)微服务是啥?简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事。这个服务可以单独部署运行,服务之间可以通过RPC来相互交互,每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期。

2)微服务架构又是啥?先做逻辑架构,再做物理架构,当你拿到需求后,估算过最大用户量和并发量后,计算单个应用服务器能否满足需求,如果用户量只有几百人的小应用,单体应用就能搞定,即所有应用部署在一个应用服务器里,如果是很大用户量,且某些功能会被频繁访问,或者某些功能计算量很大,建议将应用拆解为多个子系统,各自负责各自功能,这就是微服务架构。

3)那么分布式又是啥?分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。

 

原文地址:https://www.cnblogs.com/hyshareex/p/10973005.html