分布式与集群

Technorati 标签: 分布式,负载均衡,科普

本文整理自分布式与集群

分布式

有3个系统,他们所做的业务不同,被部署在独立的机器上运行。
这三个系统之间可以互相调用,一起来完成公司的业务流程。

那么什么是分布式系统呢?将不同的业务分布在不同的地方就构成了分布式系统。
如下图所示,client只通过系统A访问整个分布式系统,所以如果用户量大的时候,有可以挂掉,这就是单点失败

f2e8b19d-171e-4cb7-b7a2-83460f55d37f

集群Cluster

既然系统A有可能因为访问量大出现无法处理的情况,那就多用几台主机对外提供服务。

下图所示为系统A部署了3份,每一份都是系统A的实例。但是每台主机都有自己的IP地址,到底访问哪一个呢?如果只访问一个,除了可靠性得到提升,实际上性能上没有大的改变。

这种模式也可以理解为“一人干活,多人围观”

**总结一下集群就是将相同服务部署在多台服务器上构成一个集群整体对外提供服务,
**
2e3f9807-24ff-442f-abbe-682df6765abc

负载均衡(Load Balancer)

负载均衡就是让3台主机上的工作均衡一点,每台主机都帮忙分担一点,而不是让一台主机全部扛起来。

而且这个负载均衡的工作,最好独立出来,放到独立的服务器或者设备上(比如Nginx),但是负载均衡的单点故障也来了,所以至少把负载均衡也搞成一个集群。
36ab8467-f32c-46c3-a4c4-b4cae82319b5

不过负载均衡的集群与系统A的业务集群有不同:

  • 负载均衡集群虽然有两台机器,但是对外只呈现一个IP,也就是用户仿佛只看到一台机器。
  • 同一时刻,只让一台负载均衡工作,另一台只在工作的机器出现故障以后才切换过去。
    这种方式又称为HA

弹性

主要适用于有业务峰值的场景,比如双十一,用户量是平时的若干倍,但是只要双十一一过,就不需要这么多服务器呢。为了节省成本,可以不使用物理服务器,而是通过虚拟机的方式,在原有的物理机上加一层软件逻辑层,可以抽象出虚拟的服务器,在其上可以安装操作系统以及应用系统。

这样可以在云端进行虚拟机的创建了,双十一以后把虚拟服务器关掉即可。

于是这套系统有了弹性。

失效转移

上面的系统看上去美好,但是做了一个假设服务其实是无状态的,也就是说用户两次请求没有关系

比如用户访问系统,在服务器A上创建了一个购物车,加入了商品,然后服务器A就挂了,此时其他服务器会去接管用户的访问,这就是失效转移

但是其他服务器上并没有购物车信息,那么用户就会发现原来的购物车里面的东西没有了。用户体验相当不好。所以集群一定要处理好状态的转移

一般来说有两种思路share-nothing和共享存储

  • 共享存储,也就是有一个公有的地方,可以把状态信息集中存储,各个服务器都可以访问。比如Redis服务器
    1ba87b98-c808-4816-ae9b-7ca17393689d
  • share-nothing,也就是不使用共享存储,可以由Websphere,Weblogic这样的应用服务器将状态信息同步到其他的服务器上,保持集群服务器上状态信息一致就可以了。

分布式与集群的区别

分布式是将不同的业务部署在不同的地方,而集群是将几台服务器集中在一起完成同一业务。
分布式的每一个节点都可以做集群,集群不一定就是分布式。

总之,一个分布式系统是由多个节点组成,各节点可能是集群化的,而且各集群还是分布式的。

也可以参见简书主页:https://www.jianshu.com/u/482f183ec380
原文地址:https://www.cnblogs.com/dy2903/p/8323654.html