CN103188110A - 基于zookeeper的云平台上服务的热备份方法 - Google Patents
基于zookeeper的云平台上服务的热备份方法 Download PDFInfo
- Publication number
- CN103188110A CN103188110A CN2013101079069A CN201310107906A CN103188110A CN 103188110 A CN103188110 A CN 103188110A CN 2013101079069 A CN2013101079069 A CN 2013101079069A CN 201310107906 A CN201310107906 A CN 201310107906A CN 103188110 A CN103188110 A CN 103188110A
- Authority
- CN
- China
- Prior art keywords
- service
- zookeeper
- znode
- path
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种基于zookeeper的云平台上服务的热备份方法。该方法包括:多个相同的服务向zookeeper服务请求在同一znode路径中创建临时序列节点;zookeeper服务接受请求,为每个服务分别创建节点,并按照单调递增的顺序为所有节点分配编号;多个服务各自判断自己请求创建的节点的编号在同一znode路径中是否最小,若是,则该服务为主服务,若否,则该服务为备份服务;当主服务失效时,zookeeper服务从同一znode路径中删除主服务请求创建的节点,备份服务判断自己请求创建的节点的编号在同一znode路径中是否最小,若是,则该服务为新的主服务。本发明提出的方法能够在主服务失效后,由备份服务产生新的主服务,实现无缝切换,从而减少服务中断的时间。
Description
技术领域
本发明涉及分布式服务技术领域,特别涉及一种基于zookeeper的云平台上服务的热备份方法。
背景技术
所谓服务的热备份,是指一个服务有主服务进程和备份服务进程,一旦主服务进程失效或是异常关闭,备份服务进程将接管原来的主服务进程的所有事务,从而使得该服务仍然可以对外提供服务。有些服务还设计为一旦原来的主服务重启,备份服务会将所有事务交回给主服务。
在集群中,服务的失效会导致当前服务的中断,从而给集群带来风险和损失。为了保证服务运行的可靠性,目前云平台中对每种服务都有热备份的机制,且每种方式都不尽相同。
zookeeper作为一个开源分布式的服务,其提供了分布式协作、分布式同步、配置管理等功能。利用zookeeper的分布式机制及临时序列znode的特性,能够有效解决云平台上服务的热备份问题。
发明内容
(一)所要解决的技术问题
本发明的目的在于提供一种利用zookeeper实现云平台上服务热备份的方法,以解决服务失效后服务中断的问题。
(二)技术方案
为了解决上述技术问题,本发明提出了一种基于zookeeper的云平台上服务的热备份方法,所述方法包括以下步骤:
S1、多个相同的服务向zookeeper服务请求在同一个znode路径中创建临时序列节点;
S2、所述zookeeper服务接受所述多个相同的服务的请求,为每个服务分别创建临时序列节点,并按照单调递增的顺序为所有临时序列节点分配编号;
S3、所述多个相同的服务各自判断自己请求创建的临时序列节点的编号在所述同一个znode路径中是否是最小的,若是,则该服务作为主服务,若否,则该服务作为备份服务;
S4、当所述主服务失效或异常关闭时,所述zookeeper服务从所述同一个znode路径中删除所述主服务请求创建的临时序列节点,
所述备份服务各自判断自己请求创建的临时序列节点的编号在所述同一个znode路径中是否是最小的,若是,则该服务作为主服务。
可选的,步骤S2中,所述单调递增的顺序具体为依次加1的顺序。
可选的,步骤S4之后还包括步骤:
S5、当所述多个相同的服务中的某一服务A失效并重启后,服务A重新向所述zookeeper服务请求在所述同一个znode路径中创建临时序列节点;
S6、所述zookeeper服务接受服务A的请求,为服务A创建临时序列节点,并按照单调递增的顺序为服务A请求创建的临时序列节点分配编号;
S7、服务A判断自己请求创建的临时序列节点的编号在所述同一个znode路径中是否是最小的,若是,则服务A作为主服务,若否,则服务A作为备份服务。
(三)有益效果
与现有技术相比,本发明提出的技术方案利用了zookeeper中临时znode及序列znode的特性,能够在主服务失效后,由其余的备份服务产生新的主服务,即可实现无缝切换,从而减少了服务中断的时间。
附图说明
图1是本发明提出的基于zookeeper的云平台上服务的热备份方法的基本流程图。
图2是本发明一个实施例中时刻t1的主备服务示意图。
图3是本发明一个实施例中时刻t2的主备服务示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明提出的云平台上服务的热备份方法利用了zookeeper的分布式机制以及临时序列znode的特性,即分布式锁的原理:
首先定义一个znode路径,为方便描述,这里将该znode路径记为/lock。每个服务申请在/lock中创建一个具有Ephemeral和Sequence属性的znode,即编号自增长的临时节点,其znode会有一个自动增加的编号,直接通过znode表现出来。比如,第一次服务A和服务B申请创建的节点分别为lock-001、lock-002;服务A失效后再次重启,那么再次申请时服务A创建的节点可能会变成lock-003,也就是说,各个服务申请创建的临时序列znode的编号会自增1而不会重复。
本发明即利用了上述原理,在从多个相同的服务中选择主服务时,每次比较各个服务在同一路径中申请创建的临时序列znode的编号,znode编号最小的服务为主服务,其余的都是备份服务。
如图1所示,本发明提出的云平台上服务的热备份方法包括以下步骤:
S1、多个相同的服务向zookeeper服务请求在同一个znode路径中创建临时序列节点;
S2、所述zookeeper服务接受所述多个相同的服务的请求,为每个服务分别创建临时序列节点,并按照单调递增的顺序为所有临时序列节点分配编号;
S3、所述多个相同的服务各自判断自己请求创建的临时序列节点的编号在所述同一个znode路径中是否是最小的,若是,则该服务作为主服务,若否,则该服务作为备份服务;
S4、当所述主服务失效或异常关闭时,所述zookeeper服务从所述同一个znode路径中删除所述主服务请求创建的临时序列节点,
所述备份服务各自判断自己请求创建的临时序列节点的编号在所述同一个znode路径中是否是最小的,若是,则该服务作为主服务。
优选的,步骤S2中,所述单调递增的顺序具体为依次加1的顺序。
优选的,步骤S4之后还包括步骤:
S5、当所述多个相同的服务中的某一服务A失效并重启后,服务A重新向所述zookeeper服务请求在所述同一个znode路径中创建临时序列节点;
S6、所述zookeeper服务接受服务A的请求,为服务A创建临时序列节点,并按照单调递增的顺序为服务A请求创建的临时序列节点分配编号;
S7、服务A判断自己请求创建的临时序列节点的编号在所述同一个znode路径中是否是最小的,若是,则服务A作为主服务,若否,则服务A作为备份服务。
下面以2个相同的服务为例,详细说明一下本发明的实现过程。
如图2所示,在时刻t1,服务A和服务B同时向zookeeper服务申请在同一znode路径(即/lock)中创建临时序列节点,zookeeper服务接受了服务A和服务B的请求,且服务A申请创建的临时序列节点为lock-001,服务B申请创建的临时序列节点为lock-002,那么在/lock下就会存在2个节点,此时,节点编号最小的服务A作为主服务,服务B为备份服务。
当作为主服务的服务A失效或异常关闭时,zookeeper服务会将服务A申请创建的临时序列节点/lock/lock-001删除,然后服务B作为新的主服务接替服务A对外提供服务。
如图3所示,在时刻t2,服务A重启后再次向zookeeper服务申请在/lock中创建临时序列节点,此时,服务B创建的临时序列节点仍然为lock-002,而服务A创建的临时序列节点则变为lock-003,所以,服务B作为主服务对外提供服务,服务A为备份服务。
使用上述方法,不需要特别指定主、备服务的角色。两个相同的服务进程同时去申请创建临时序列znode,算法是当服务创建的临时序列znode的编号是所有临时序列znode编号中最小的一个时,那么该服务就为主服务,所有事务由主服务接管,其它服务就是备份服务。
主服务异常关闭时,由备份服务中产生新的主服务,并自动接管所有事务。当主服务失效时,其申请创建的临时序列znode会被zookeeper删除,那么会触发新一轮临时序列znode的申请,已经申请过临时序列znode的服务不会再次申请。各个服务再一次计算自己申请创建的临时序列znode的编号是否是所有临时序列znode编号中最小的一个,因为此时备份服务已经创建的临时序列znode的编号是最小的,所以该备份服务接替原来的主服务成为当前环境下新的主服务管理所有事务,继续对外提供服务。
备份服务可以是多个,主服务失效后,在多个备份服务中产生一个新的主服务。主服务、备份服务可以运行在不同的物理机上,如果其中一个物理机宕掉,也可以对外提供服务,从而提高了集群服务运行的可靠性。
需要注意的是,上述方法中的主服务和备份服务不会特别指定,也不会有备份服务再转交回原来是主服务的情况发生;谁申请创建的临时序列znode编号最小,谁就是主服务,其它就是备份服务,统一由主服务对外提供服务,备份服务不提供服务。
以上所述仅是本发明的优选实施方式,应当指出,对于本领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。
Claims (3)
1.一种基于zookeeper的云平台上服务的热备份方法,其特征在于,所述方法包括以下步骤:
S1、多个相同的服务向zookeeper服务请求在同一个znode路径中创建临时序列节点;
S2、所述zookeeper服务接受所述多个相同的服务的请求,为每个服务分别创建临时序列节点,并按照单调递增的顺序为所有临时序列节点分配编号;
S3、所述多个相同的服务各自判断自己请求创建的临时序列节点的编号在所述同一个znode路径中是否是最小的,若是,则该服务作为主服务,若否,则该服务作为备份服务;
S4、当所述主服务失效或异常关闭时,所述zookeeper服务从所述同一个znode路径中删除所述主服务请求创建的临时序列节点,
所述备份服务各自判断自己请求创建的临时序列节点的编号在所述同一个znode路径中是否是最小的,若是,则该服务作为主服务。
2.根据权利要求1所述的基于zookeeper的云平台上服务的热备份方法,其特征在于,步骤S2中,所述单调递增的顺序具体为依次加1的顺序。
3.根据权利要求1所述的基于zookeeper的云平台上服务的热备份方法,其特征在于,步骤S4之后还包括步骤:
S5、当所述多个相同的服务中的某一服务A失效并重启后,服务A重新向所述zookeeper服务请求在所述同一个znode路径中创建临时序列节点;
S6、所述zookeeper服务接受服务A的请求,为服务A创建临时序列节点,并按照单调递增的顺序为服务A请求创建的临时序列节点分配编号;
S7、服务A判断自己请求创建的临时序列节点的编号在所述同一个znode路径中是否是最小的,若是,则服务A作为主服务,若否,则服务A作为备份服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310107906.9A CN103188110B (zh) | 2013-03-29 | 2013-03-29 | 基于zookeeper的云平台上服务的热备份方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310107906.9A CN103188110B (zh) | 2013-03-29 | 2013-03-29 | 基于zookeeper的云平台上服务的热备份方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103188110A true CN103188110A (zh) | 2013-07-03 |
CN103188110B CN103188110B (zh) | 2016-01-06 |
Family
ID=48679082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310107906.9A Expired - Fee Related CN103188110B (zh) | 2013-03-29 | 2013-03-29 | 基于zookeeper的云平台上服务的热备份方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103188110B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103747044A (zh) * | 2013-12-24 | 2014-04-23 | 汉柏科技有限公司 | 一种服务锁定方法及*** |
CN104753987A (zh) * | 2013-12-26 | 2015-07-01 | 北京东方通科技股份有限公司 | 一种分布式会话管理方法及*** |
CN105208090A (zh) * | 2015-08-19 | 2015-12-30 | 江苏农牧人电子商务股份有限公司 | 一种基于Zookeeper实现Leader选举的方法 |
CN105243125A (zh) * | 2015-09-29 | 2016-01-13 | 北京京东尚科信息技术有限公司 | PrestoDB集群的运行方法、装置、集群及查询数据方法和装置 |
CN106375342A (zh) * | 2016-10-21 | 2017-02-01 | 用友网络科技股份有限公司 | 一种基于zookeeper技术的***集群方法及*** |
CN106990992A (zh) * | 2017-04-10 | 2017-07-28 | 深圳乐信软件技术有限公司 | 服务配置方法、装置、服务器及存储介质 |
CN107086940A (zh) * | 2017-03-31 | 2017-08-22 | 北京奇艺世纪科技有限公司 | 一种单服务运行方法及装置 |
WO2017152736A1 (zh) * | 2016-03-07 | 2017-09-14 | 中兴通讯股份有限公司 | 一种分布式文件***hdfs的管理方法、装置及*** |
CN107832169A (zh) * | 2017-08-09 | 2018-03-23 | 平安壹钱包电子商务有限公司 | 内存数据迁移方法、装置、终端设备和存储介质 |
CN109542627A (zh) * | 2018-11-30 | 2019-03-29 | 北京金山云网络技术有限公司 | 节点切换方法、装置、管理机、节点设备和分布式*** |
CN109544161A (zh) * | 2018-11-28 | 2019-03-29 | 杭州有盾网络科技有限公司 | 区块链数据处理方法、***及设备和序列号生成方法 |
CN109584105A (zh) * | 2018-11-12 | 2019-04-05 | 平安科技(深圳)有限公司 | 一种服务响应的方法及*** |
CN110457129A (zh) * | 2019-07-19 | 2019-11-15 | 深圳联友科技有限公司 | 一种基于zookeeper的优先级锁抢占方法和*** |
WO2020098266A1 (zh) * | 2018-11-12 | 2020-05-22 | 平安科技(深圳)有限公司 | 一种异常响应的方法及设备 |
CN113347263A (zh) * | 2021-06-11 | 2021-09-03 | 上海中通吉网络技术有限公司 | 消息集群管理方法和*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101977124A (zh) * | 2010-11-05 | 2011-02-16 | 山东中创软件工程股份有限公司 | 基于ZooKeeper技术的业务集群方法及*** |
CN102710554A (zh) * | 2012-06-25 | 2012-10-03 | 深圳中兴网信科技有限公司 | 分布式消息***和分布式消息***的服务状态检测方法 |
CN102929696A (zh) * | 2012-09-28 | 2013-02-13 | 北京搜狐新媒体信息技术有限公司 | 一种分布式***中心节点构建、提交、监控方法及装置 |
-
2013
- 2013-03-29 CN CN201310107906.9A patent/CN103188110B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101977124A (zh) * | 2010-11-05 | 2011-02-16 | 山东中创软件工程股份有限公司 | 基于ZooKeeper技术的业务集群方法及*** |
CN102710554A (zh) * | 2012-06-25 | 2012-10-03 | 深圳中兴网信科技有限公司 | 分布式消息***和分布式消息***的服务状态检测方法 |
CN102929696A (zh) * | 2012-09-28 | 2013-02-13 | 北京搜狐新媒体信息技术有限公司 | 一种分布式***中心节点构建、提交、监控方法及装置 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103747044B (zh) * | 2013-12-24 | 2017-04-19 | 汉柏科技有限公司 | 一种服务锁定方法及*** |
CN103747044A (zh) * | 2013-12-24 | 2014-04-23 | 汉柏科技有限公司 | 一种服务锁定方法及*** |
CN104753987A (zh) * | 2013-12-26 | 2015-07-01 | 北京东方通科技股份有限公司 | 一种分布式会话管理方法及*** |
CN105208090A (zh) * | 2015-08-19 | 2015-12-30 | 江苏农牧人电子商务股份有限公司 | 一种基于Zookeeper实现Leader选举的方法 |
CN105243125B (zh) * | 2015-09-29 | 2018-07-06 | 北京京东尚科信息技术有限公司 | PrestoDB集群的运行方法、装置、集群及查询数据方法和装置 |
CN105243125A (zh) * | 2015-09-29 | 2016-01-13 | 北京京东尚科信息技术有限公司 | PrestoDB集群的运行方法、装置、集群及查询数据方法和装置 |
WO2017152736A1 (zh) * | 2016-03-07 | 2017-09-14 | 中兴通讯股份有限公司 | 一种分布式文件***hdfs的管理方法、装置及*** |
CN106375342A (zh) * | 2016-10-21 | 2017-02-01 | 用友网络科技股份有限公司 | 一种基于zookeeper技术的***集群方法及*** |
CN107086940B (zh) * | 2017-03-31 | 2019-11-15 | 北京奇艺世纪科技有限公司 | 一种单服务运行方法及装置 |
CN107086940A (zh) * | 2017-03-31 | 2017-08-22 | 北京奇艺世纪科技有限公司 | 一种单服务运行方法及装置 |
CN106990992A (zh) * | 2017-04-10 | 2017-07-28 | 深圳乐信软件技术有限公司 | 服务配置方法、装置、服务器及存储介质 |
CN107832169B (zh) * | 2017-08-09 | 2020-12-18 | 平安壹钱包电子商务有限公司 | 内存数据迁移方法、装置、终端设备和存储介质 |
CN107832169A (zh) * | 2017-08-09 | 2018-03-23 | 平安壹钱包电子商务有限公司 | 内存数据迁移方法、装置、终端设备和存储介质 |
CN109584105A (zh) * | 2018-11-12 | 2019-04-05 | 平安科技(深圳)有限公司 | 一种服务响应的方法及*** |
WO2020098266A1 (zh) * | 2018-11-12 | 2020-05-22 | 平安科技(深圳)有限公司 | 一种异常响应的方法及设备 |
CN109584105B (zh) * | 2018-11-12 | 2023-10-17 | 平安科技(深圳)有限公司 | 一种服务响应的方法及*** |
CN109544161A (zh) * | 2018-11-28 | 2019-03-29 | 杭州有盾网络科技有限公司 | 区块链数据处理方法、***及设备和序列号生成方法 |
CN109542627A (zh) * | 2018-11-30 | 2019-03-29 | 北京金山云网络技术有限公司 | 节点切换方法、装置、管理机、节点设备和分布式*** |
CN110457129A (zh) * | 2019-07-19 | 2019-11-15 | 深圳联友科技有限公司 | 一种基于zookeeper的优先级锁抢占方法和*** |
CN113347263A (zh) * | 2021-06-11 | 2021-09-03 | 上海中通吉网络技术有限公司 | 消息集群管理方法和*** |
CN113347263B (zh) * | 2021-06-11 | 2022-10-11 | 上海中通吉网络技术有限公司 | 消息集群管理方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN103188110B (zh) | 2016-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103188110A (zh) | 基于zookeeper的云平台上服务的热备份方法 | |
CN106375342A (zh) | 一种基于zookeeper技术的***集群方法及*** | |
CN104935672B (zh) | 负载均衡服务高可用实现方法和设备 | |
WO2015146355A1 (ja) | 更新管理システムおよび更新管理方法 | |
US9705782B2 (en) | Method and system for efficient graceful restart in an open shortest path first (OSPF) network | |
CN106254094A (zh) | 一种数据同步方法及*** | |
CN103780407A (zh) | 分布式弹性网络互连(drni)中网关动态切换方法和装置 | |
CN102917384B (zh) | Zigbee网络中协调器的热备方法 | |
DE102014204752A1 (de) | Fehlertolerantes taktnetzwerk | |
CN105515812A (zh) | 资源的故障处理方法及装置 | |
CN105471995A (zh) | 基于SOA的大规模Web服务机群高可用实现方法 | |
WO2007048319A1 (fr) | Systeme et procede de recuperation sur sinistre de dispositif de commande de service dans un reseau intelligent | |
CN110351127B (zh) | 一种优雅重启的方法、设备及*** | |
CN103986789A (zh) | 一种实现基于nfs的hadoop ha集群中nfs节点双机冗余的方法 | |
US20150293759A1 (en) | Method and System for Upgrading Patching Software | |
WO2012174893A1 (zh) | 一种iptv***中基于双中心容灾的切换方法及装置 | |
CN103501290A (zh) | 一种基于动态备份虚拟机的高可靠服务***构建方法 | |
WO2021057438A1 (zh) | 主备切换方法、装置、bras设备及存储介质 | |
US9553760B2 (en) | Method, device, and system for dual-uplink tangent ring convergence | |
CN103001865B (zh) | 一种lsp分片报文中发布信息的方法和设备 | |
CN102571598B (zh) | Vrrp组流量同步切换方法和路由设备 | |
KR20090016676A (ko) | 로컬 노드 운전 정지 동안의 계속된 네트워크 제어 메시지 발생 | |
CN103281384B (zh) | 一种无中心节点的消息服务集群的管理***及方法 | |
CN103312541A (zh) | 一种高可用互备集群的管理方法 | |
CN108234358B (zh) | 一种组播报文传输方法、装置及机器可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160106 Termination date: 20180329 |
|
CF01 | Termination of patent right due to non-payment of annual fee |