计划,每天学习两小时,坚持带来大改变。

单机、集群和分布式(微服务)三者之间的区别

架构设计 阿尤 2380浏览 0评论

一、单机

  单机就是所有的业务全部写在一个项目中,部署服务到一台服务器上,所有的请求业务都由这台服务器处理。显然,当业务增长到一定程度的时候,服务器的硬件会无法满足业务需求。自然而然地想到一个程序不行就部署多个喽,这就是集群。

二、 集群

         集群就是单机的多实例,在多个服务器上部署多个服务,每个服务就是一个节点,部署N个节点,处理业务的能力就提升 N倍(大约),这些节点的集合就叫做集群。

         负载均衡:协调集群里的每个节点均衡地接受业务请求。通俗的讲就是服务A和服务B相同时间段内处理的同类业务请求数量是相似的

       

          

         小伙伴们看到这里可能会问了,平时生产环境中我们都用什么做负载均衡器?

         财大气粗的用硬件F5

         不差钱的使用DNS负载均衡

         技术牛逼的用LVS

         苦逼的创业型小公司只能使用Nginx

         当然,负载均衡器不止以上几种,有兴趣的同学自行谷歌了解。

         集群的特点:

         扩展性好:集群只是单机的多个复制,没有改变单机的原有的代码结构,每次部署新节点只需要复制部署即可。

         单个节点业务耦合度高、资源浪费:节点是多个业务处理集合(耦合高),每个具体业务的访问量可能差异很大,比如JD上账户管理模块的访问量肯定低于订单模块,

         然而账户管理模块和订单模块的部署数量是一样的(因为每个节点里都有这两个模块),相对订单模块来说,部署同样多的账户管理模块就是浪费。

         那就把单机节点不同的业务处理模块拆开喽,这就是分布式了

三、分布式(微服务)

        简单的说,微服务是架构设计方式,分布式是系统部署方式,两者概念不同,但是微服务也是在分布式范畴之内的,微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器

       分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式或者是WebService通信。

       举个例子,假设需要开发一个在线商城。按照微服务的思想,我们需要按照功能模块拆分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。

       这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间有依赖关系,那么通过RPC方式或者是WebService调用。

       

     优点:

  1. 系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。
  2. 系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务,就是对子系统集群。例如双十一时,订单子系统、支付子系统需要集群,账户管理子系统不需要集群。
  3. 服务的复用性更高。比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发。

四、总结

       集群是个物理形态,分布式是个工作方式,微服务是一种架构风格。

  • 分布式:一个业务分拆多个子业务,部署在不同的服务器
  • 集群:同一个业务,部署在多个服务器上
  • 分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。
  • 分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。


参考链接:https://www.zhihu.com/question/20004877/answer/282033178


转载请注明:阿尤博客 » 单机、集群和分布式(微服务)三者之间的区别

游客
发表我的评论 换个身份
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  • 验证码 (必填)点击刷新验证码