我们要使用就需要知道有什么需求:
情景一:
我的这个亚信需要采集数据,那么在采集的过程中如果采集程序突然挡掉,这个时候上面传输的数据就采集不了,而且上面的服务器新数据来了可能会将旧的数据覆盖掉,还有一种可能是我下面的程序突然又好了,那么上面已经有好多旧的数据而且此时又有新的数据,这样采集压力比较大,有人肯定会问可以使用keepalived,你要知道此时亚信这端是客户端,而keepalied这个是在服务器端的检测,也就是我客户端访问服务器端,然后服务端使用keepalived去检测哪个服务器挡掉,然后其他服务器抢占ip,然后成为主服务器,但是这里是客户端访问。所以我们可以使用一个第三方的服务,我的所有的客户端在这个第三方进行注册信息,并且第三方实时监测每一个注册了的客户端的状态数据。当我的某一个客户机档掉了,此时我的第三方就检测出来,然后可以查看有没有空的客户机然后顶替挡掉的客户机,还有就是检测当前正在采集的客户机,看看谁比较空闲,或这谁的id最小,让谁先顶替采集下(所以这个时候第三方就需要提供数据保障、提供节点监听),那么第二天维护人员吧挡掉的启动起来就可以了。
情景二:服务器主从选举场景
现在我有多个服务程序,多个主要的目的就是高可用(一个服务器挡掉用另外一个)。
首先我这个客户端怎么知道此时应该访问那个服务器。那么不知道这个时候我们就有一个第三方,所有的服务程序开启一个就在这个第三方进行注册,此时注册了多个服务程序在这个第三方,这个时候第三方进行选举(逻辑判断),判断此时哪一个服务器作为这个主服务器(master),其他服务器就是slave服务器。那么我的客户端程序访问的时候直接访问这个第三方,然后查看第三方中哪个是主服务器就访问哪个,客户端也方便了,那么对于服务器如果主服务器档掉了,那么我客户端访问肯定就出错了,这个时候我的第三方还应该提供监听的功能,监听每一个服务程序,如果哪一个档掉了,如果是master服务器,这个时候时候就需要第三方进行再次选举,选出一个master服务器,第二天维护人员将挡掉的服务器启动就可以了。
情景三:
将公共信息放在第三方zookeeper。所有的solr的商品库都在这个第三方中,然后如果我这个第三方挡掉了,这个时候也是会出问题,所以这个时候要求我的这个第三方是一个高可靠的,由于zookeeper也是一个集群的服务,所以只要zookeeper中的大于一半,这个zookeeper就能正常工作。