分布式和集群概念的简单的认识

来源:互联网 发布:lbp算法实现 编辑:程序博客网 时间:2024/05/16 07:11

分布式的概念:

目前有三个系统,系统A,系统B,系统C,这三个系统所做的业务不同,被部署在三个不同的服务器上运行,他们之间是相互调用(当然是跨域网络的),同理合作完成公司的业务流程。


将不同的业务分布在不同的地方,这就构成了一个分布式的系统,现在问题来了,系统A是整个分布式系统的脸面,用户直接访问,用户访问大的时候要么是速度巨慢,要么是直接挂掉,怎么办呢?

由于系统A只有一份,所以会引起单点失败。


集群的概念:


假如公司有钱的话,那就多买几台机器吧,把系统A一下子部署了好几份,每一份都是系统A的一个实例,对外提供同样的服务,这样可以睡了安稳的觉了,不怕其中的一个坏掉了,我还有另外的两个呢。


这三个服务器上的系统就组成了一个集群。


可是对于用户来说,一下子出现这么多系统A,每个系统的IP地址都不一样,到底访问哪一个?如果所有的人都访问A1,那服务器A1会被累死的,剩下的两个A2,A3会很闲的,成了浪费钱的摆设了。



负载均衡:

要让机器上的三个系统A均衡一些去工作,比如有三万个请求,那就让三个服务器各自的处理一万个,(当然这个是理想的状况),这个叫做负载均衡,很明显这个负载均衡的工作最好独立出来,放到独立的服务器上(例如Ngnix)。这个负载均衡的服务器工作很简单,就是拿到请求,分发请求,但是他还是有可能会挂掉的,单点失败还是会出现的。没有办法,只好把负载均衡也搞一个集群,不过和系统A的集群有两点不同,1这个新的集群中虽说有两台机器,但是我们可以通过某种方法,让这个集群对外对外只提供一个ip地址,也就是说用户看到的好像只有一台机器。2同一时刻,我们只让一个负载均衡的机器工作,另外的一个原地待命。如果工作的那个挂了,就让那个待命的顶上去。

弹性:

如果这三系统还是满足不了客户的大量的请求,那就再加服务器!双11来了的话,用户量是平时的10倍,结果又买了几十台服务器,一下再把系统A部署了几十份。可是双11过后,流量一下子就降了下来,那几十个服务器用不上了,也就成了摆设。

这是你可以尝试一下云计算,在云端可以轻松的创建和删除虚拟的服务器,那样就可以轻松的根据用户的请求动态的增减服务器了。双11来了就创建虚拟的服务器,等双11过了,就把不用的关掉,省得浪费钱。

于是这个系统就具备一定的弹性。

失效转移:


上面的系统看起来很美好,但是做了一个不切实际的假设:所有的服务都是无状态的。换句话说,假设用户的两次请求直接是没有关联的。


但是现实是:大部分的服务都是有状态的,例如购物车。


用户访问系统,在服务器1上创建了一个购物车,并向其中添加了几个商品,然后服务器1挂掉了,用户的后续访问就找不到这个服务器了,这个时候就要做失效转移,,让另外的几个服务器去接管,去处理用户的请求。

可是问题来了,在服务器2,服务器3上有用户的购物车吗?如果没有用户就会抱怨,我刚创建的购物车哪里去了呢?