一种基于Zookeeper实现Leader选举的方法

文档序号:9455979阅读:250来源:国知局
一种基于Zookeeper实现Leader选举的方法
【技术领域】
[0001]本发明涉及一种基于Zookeeper实现Leader选举的方法,属于电子商务技术领域。
【背景技术】
[0002]随着中国经济的发展,人们生活水平的提高,人们对于食品的需求大大增加,对于食品安全越来越关注,同时随着社会进程的加快,人们越来越忙碌,花在购买食品上的时间一再被压缩,而花在选购健康食品上的时间就更少了,对于如何选购“放心菜”、“健康菜”更是缺乏经验。因此如何让居民更便捷地买到健康、新鲜、放心的农产品就成了广大居民所关注的焦点,同时也是国家所关注的,近几年,国家在为居民能便捷、安全地购买到食品方面出台了很多政策,可见政府对于食品行业是相当重视的。在此大环境下,“农牧人”网站的投资人创办了此网站,而为了适应此平台发展的需要,为了更好地为决策提供参考,更需要一套完善的信息化系统和商务平台作支持。
[0003]“农牧人”网站作为中国最早将居民日常必需的食品植入电子商务平台理念的网站,其决策层高瞻远瞩,率先使用信息化工具来对其业务流程进行管理,已经大致建立了日常业务工作流程化和自动化的规范标准。
[0004]但该网站在使用过程中主要有以下几个方面的问题:1、系统流程设计不符合现有业务流程的要求;2、用户操作不友好、不方便;3、原来的系统设计及架构设计存在缺陷。由于原系统设计的局限性以及缺陷,使得系统不可避免地产生各种不稳定的问题,从而需要根据软件标准化的规范,对现有系统进行尽可能多的优化,以提高系统的性能。

【发明内容】

[0005]针对现有技术存在的不足,本发明目的是提供一种基于Zookeeper实现Leader选举的方法,能够优化系统,使系统更加的稳定,从而提高了系统的性能。
[0006]为了实现上述目的,本发明是通过如下的技术方案来实现:
[0007]本发明的一种基于Zookeeper实现Leader选举的方法,包括以下几个步骤:
[0008](I)在每台服务器上创建一个EPHEMERAL_SEQUENTIAL目录节点,所述EPHEMERAL_SEQUENTIAL目录节点给每台服务器编号,并选择当前是最小编号的服务器作为Leader ;
[0009](2)当这个最小编号的服务器死去,由于是EPHEMERAL节点,死去的服务器对应的节点也被删除,所以当前的节点列表中又出现一个最小编号的节点,就选择这个节点为当前Leader,用于实现动态选择Leader避免单Leader容易出现单点故障问题。
[0010]Zookeeper集群模式的配置项如下:
[0011]initLimit = 4
[0012]syncLimit = 3
[0013]server.1 = 192.168.211.1:2888:3888
[0014]server.2 = 192.168.211.2:2888:3888
[0015]initLimit:这个配置项是用来配置Zookeeper接受客户端,初始化连接时最长能忍受多少个心跳时间间隔数,当已经超过10个心跳的时间长度后Zooke^er服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败,总的时间长度就是4*2000 = 8秒;
[0016]syncLimit:这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是3*2000 = 6秒;
[0017]server.A = B:C:D:其中A是一个数字,表示这个是第几号服务器;B是这个服务器的ip地址;c表示的是这个服务器与集群中的Leader服务器交换信息的端口 ;D表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口 ;如果是伪集群的配置方式,由于B都是一样,所以不同的Zooke^er实例通信端口号不能一样,要给它们分配不同的端口号。
[0018]本发明针对现有的“农牧人”网站目前的运营情况,对现有的业务流程进行梳理,进行业务流程重组(BPR),对平台进行流程再造和优化;本发明以“农牧人”网站整个信息平台项目为整体,进了充分、系统地优化,充分考虑到系统扩展的衔接关系,采用的技术和体系结构,可保证业务信息系统将来的升级或扩展无缝联接。
【附图说明】
[0019]图1为ZooKe印er配置管理结构图。
【具体实施方式】
[0020]为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合【具体实施方式】,进一步阐述本发明。
[0021]ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是google的Chubby 一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
[0022]ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
[0023]Zookeeper原理是以Fast Paxos算法为基础的,paxos算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而FastPaxos作了一些优化,通过选举产生一个leader,只有leader才能提交propose,具体算法可见 Fast Paxosο
[0024]ZooKeeper的基本运转流程如下:
[0025]1、选举 Leader;
[0026]2、同步数据;
[0027]3、选举Leader过程中算法有很多,但要达到的选举标准是一致的;
[0028]4、Leader 要具有最高的 zxid。
[0029]5、集群中大多数的机器得到响应并follow选出的Leader。
[0030]Zookeeper 特点
[0031]在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据。如果在创建znode时Flag设置为EPHEMERAL,那么当创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper里,Zookeeper使用Watcher察觉事件信息。当客户端接收到事件信息,比如连接超时、节点数据改变、子节点改变,可以调用相应的行为来处理数据。Zookeeper的Wiki页面展示了如何使用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交
[0032]那么Zookeeper能作什么事情呢,简单的例子:假设我们有20个搜索引擎的服务器(每个负责总索引中的一部分的搜索任务)和一个总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集),一个备用的总服务器(负责当总服务器宕机时替换总服务器),一个web的cgi (向总服务器发出搜索请求)。搜索引擎的服务器中的15个服务器提供搜索服务,5个服务器正在生成索引。这20个搜索引擎的服务器经常要让正在提供搜索服务的服务器停止提供服务开始生成索引,或生成索引的服务器已经把索引生成完成可以搜索提供服务了。使用Zookeeper可以保证总服务器自动感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,当总服务器宕机时自动启用备用的总服务器。
[0033]Zookeeper分布式服务框架是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
[0034]Zookeeper不仅可以单机提供服务,同时也支持多机组成集群来提供服务。实际上Zooke印er还支持另外一种伪集群的方式,也就是可以在一台物理机上运行多个Zookeeper实例,下面将介绍集群模式的安装和配置。
[0035]Zookeeper的集群模式的安装和配置也不是很复杂,所要做的就是增加几个配置项。集群模式除了上面的三个配置项还要增加下面几个配置项:
[0036]initLimit = 5
[0037]syncLimit = 2
[0038]server.1 = 192.168.211.1:2888:3888
[0039]server.2 = 192.168.211.2:2888:3888
[0040]initLimit:这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(也就是tickTime)长度后Zooke印er服务器还没有收到客户端的返回信息,那么表明这个客户端连
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1