CN109815248A - 一种基于Zookeeper的分布式架构数据一致性方法 - Google Patents
一种基于Zookeeper的分布式架构数据一致性方法 Download PDFInfo
- Publication number
- CN109815248A CN109815248A CN201910036845.9A CN201910036845A CN109815248A CN 109815248 A CN109815248 A CN 109815248A CN 201910036845 A CN201910036845 A CN 201910036845A CN 109815248 A CN109815248 A CN 109815248A
- Authority
- CN
- China
- Prior art keywords
- data
- zookeeper
- node
- monitor
- subscribed
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Zookeeper的分布式架构数据一致性方法,涉及数据处理技术领域。本发明包括如下步骤,缓冲数据初始化:分布式系统每个节点启动后将Zookeeper中的数据加载到各个节点的内存中;部署订阅监听:定义订阅监听方法,每个节点均订阅Zookeeper目录及数据,并部署监听;数据同步:监测到Zookeeper中数据变化后,通过部署的监听方法更新每个节点的内存数据,保持各个节点间的数据同步。本发明通过在分布式架构系统中使用Zookeeper组件作为缓存数据同步管理器,利用Zookeeper的发布和订阅机制来实时同步分布式多节点的缓存数据,同时基于内存的Zookeeper数据库大大提高了数据访问速度,使得在分布式架构系统中,性能与数据一致性都得到很好的提升。
Description
技术领域
本发明属于数据处理技术领域,特别是涉及一种基于Zookeeper的分布式架构数据一致性方法。
背景技术
Zookeeper是一个开源的分布式应用程序协调服务,分布式应用程序可以基于Zookeeper实现数据发布/订阅、负载均衡、分布式协调/通知、集群管理、分布式锁和分布式队列等功能。
分布式领域的CAP理论:任何一个分布式系统都无法同时满足Consistency(一致性),Availability(可用性),Partition tolerance(分区容错性)这三个基本需求。在分布式架构中,采用多节点部署的方式来实现高可用,分区容错性是一个最基本的要求,如何在一致性和可用性之间平衡是分布式架构面临的主要难题。因此BASE理论应运而生,BASE理论是在基于CAP理论的基础上,通过大规模互联网系统分布式实践总结,对CAP理论中一致性和可用性权衡的结果,核心思想就是即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。
在实现数据一致性的具体解决过程中,衍生出数据一致性模型,分别是强一致性、弱一致性、最终一致性。其中,强一致性是指当更新操作完成后,任何多个后续操作的访问都会返回最新的更新后的值,强制每次获取到的数据都是最新的数据,确保数据的准确性,现有的实现方案有二阶段提交协议、三阶段提交协议、TCC协议、Paxos算法等。弱一致性是指当更新操作完成后,系统不保证后续操作的访问都会返回最新的更新过的值,也不会保证在多久之后能访问到最新的值,在实现上不采取数据一致性的补偿措施;最终一致性是弱一致性的特定形式,是指在没有后续更新操作的前提下,系统保证最终返回上一次更新操作的值,主要有消息队列实时触发数据补偿及定时任务触发数据补偿两种实现方案。现有的方案主要存在以下缺陷:
(1)二阶段提交协议是同步阻塞式,极大限制了分布式系统的性能,而且存在单点故障问题,没有设计较为完善的容错机制,任意一个节点的失败都会导致整个事务的失败;
(2)三阶段提交协议虽然解决了二阶段提交协议的阻塞问题和单点故障问题,但是引入了分区不一致时,会导致节点无法通信,影响数据的不一致性;
(3)TCC协议、Paxos算法等强一致性实现方案虽然能保证数据的强一致性,但并发时性能上会有很大的影响,在分布式系统中,强一致性往往不是最好的解决方案;
(4)消息队列触发的数据补偿方案,会受到消息队列本身的性能影响,一旦消息队列性能降低会导致数据不能实时同步,影响数据一致性;
(5)定时任务数据补偿方案,当定时时间间隔过小,会频繁进行数据同步操作,影响系统性能;当定时时间间隔过大,会导致数据同步延迟,影响数据一致性。
发明内容
本发明的目的在于提供一种基于Zookeeper的分布式架构数据一致性方法,通过在分布式架构系统中使用Zookeeper作为缓存数据同步管理器,利用Zookeeper的发布和订阅机制来实时同步分布式多节点的缓存数据,实现多节点间的数据一致性,解决了现有的问题。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明为一种基于Zookeeper的分布式架构数据一致性方法,包括如下步骤:
步骤S1、缓冲数据初始化:分布式系统每个节点启动后将Zookeeper中的数据加载到各个节点的内存中;
步骤S2、部署订阅监听:定义监听方法,每个节点均订阅Zookeeper目录及数据,并部署监听;
步骤S3、数据同步:监测到Zookeeper数据变化后,实时更新同步每个节点的内存数据;
其中,步骤S2中,部署订阅监听的具体步骤如下:
步骤S21:定义两个监听器,一个用于监听Zookeeper目录,另一个用于监听Zookeeper数据,当目录或数据发布时会自动调用对应的监听器来处理变化的数据;
步骤S22:利用Zookeeper内置的订阅方法,订阅Zookeeper目录及目录下所有数据实例,并部署相应的监听器到订阅的zookeeper目录及数据节点上;
步骤S23:部署订阅监听结束后,每个节点都订阅了Zookeeper目录及数据,并设置了监听器;
其中,步骤S3中,具体的数据同步方法包括如下步骤:
步骤S31:当与节点内存中缓存数据关联的应用系统的数据进行增删改时,先将数据更新到Zookeeper中;
步骤S32:Zookeeper数据更新完成后,通过Zookeeper内部的Watcher机制通知部署的监听器,在监听器的处理方法中从Zookeeper中获取最新数据,并更新同步到节点中对应的内存数据;
步骤S33:执行节点内存数据变化的监听方法;
步骤S34:数据同步结束。
优选地,所述步骤S1中,缓存数据初始化的具体步骤如下:
步骤S11:根据系统业务需求,确定需要加载到内存中的业务数据;
步骤S12:分布式节点启动后,先加载系统配置参数,再根据配置的Zookeeper地址及密码初始化Zookeeper的连接池;
步骤S13:从Zookeeper连接池中获取一个Zookeeper的连接实例,并初始化Zookeeper的根目录;
步骤S14:遍历Zookeeper的根目录,并取出根目录下所有子目录及子目录下的数据,将获取到的实体对象数据加载到节点的内存中;
步骤S15:执行节点内存数据变化的监听方法;
步骤S16:缓冲数据初始化完成,每个节点启动后在内存中都保存一份Zookeeper的数据。
优选地,所述步骤S12中,加载的系统配置参数包括:Zookeeper连接地址、Zookeeper登录密码、订阅及发布的实体类型。
本发明具有以下有益效果:
(1)本发明在CAP理论及BASE理论的指导下,结合分布式系统的业务特点,采用基于Zookeeper的方式来达到分布式系统数据的最终一致性。
(2)本发明利用Zookeeper的发布/订阅功能,在分布式架构系统中每个节点订阅Zookeeper的数据,当数据发生变化时,订阅该的每个节点能实时获取数据变化并更新数据,保持每个节点间的数据一致性。
(3)本发明利用的Zookeeper是致力于高性能、高可用、具有严格顺序访问控制能力的分布式协调服务,使用简单的数据模型,通过构建集群解决单点故障,具有实时性、可靠性、顺序一致性等优点。
(4)本发明在性能上采用基于内存的Zookeeper数据库大大提高了数据访问速度,数据一致性上采用Zookeeper的发布和订阅机制实时进行数据同步,使得在分布式架构系统中,性能与数据一致性都得到很好的提升。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的一种基于Zookeeper的分布式架构数据一致性方法步骤图;
图2为缓存数据初始化具体流程图;
图3为部署订阅监听具体流程图;
图4为数据同步具体流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1所示,本发明为一种基于Zookeeper的分布式架构数据一致性方法,包括如下步骤:
步骤S1、缓冲数据初始化:分布式系统每个节点启动后将Zookeeper中的数据加载到各个节点的内存中;
步骤S2、部署订阅监听:定义订阅监听方法,每个节点均订阅Zookeeper目录及数据,并部署监听;
步骤S3、数据同步:监测到Zookeeper数据变化后,实时更新同步每个节点的内存数据,保持一致性;
请参阅图3所示,步骤S2中,部署订阅监听的具体步骤如下:
步骤S21:为了更好的实现数据的订阅监听,定义两个监听器,一个用于监听Zookeeper目录,另一个用于监听Zookeeper数据,当目录或数据发布时会自动调用对应的监听器来处理变化的数据;
步骤S22:利用Zookeeper内置的订阅方法,订阅Zookeeper目录及目录下所有数据实例,并部署相应的监听器到订阅的zookeeper目录及数据节点上;
步骤S23:部署订阅监听结束后,每个节点都订阅了Zookeeper目录及数据,并设置了监听器;
请参阅图4所示,步骤S3中,具体的数据同步方法包括如下步骤:
步骤S31:当与节点内存中缓存数据关联的应用系统的数据进行增删改时,需要对每个节点的内存数据进行更新同步,数据的增删该首先需要将数据更新到Zookeeper中;
步骤S32:Zookeeper数据更新完成后,通过Zookeeper内部的Watcher机制通知部署的监听器,在监听器的处理方法中从Zookeeper中获取最新数据,并更新同步到节点中对应的内存数据;
步骤S33:执行节点内存数据变化的监听方法;
步骤S34:数据同步结束,当数据发生变化时,每个节点中内存数据能实时更新,保持数据一致性。
请参阅图2所示,步骤S1中,缓存数据初始化的具体步骤如下:
步骤S11:根据系统业务需求,先确定哪些常用的业务数据需要进行缓存,具体到代码实现需要加载到内存中的业务数据;
步骤S12:分布式节点启动后,先加载系统配置参数,再根据配置的Zookeeper地址及密码初始化Zookeeper的连接池;
步骤S13:从Zookeeper连接池中获取一个Zookeeper的连接实例,并初始化Zookeeper的根目录;
步骤S14:遍历Zookeeper根目录,并取出根目录下所有子目录及子目录下的数据,将获取到的实体对象数据保存到节点的内存中;
步骤S15:执行节点内存数据变化的监听方法,如实体对象属性变化需要重新加载实体bean,数据库连接属性变化需要重新创建数据库连接等;
步骤S16:缓冲数据初始化完成,每个节点启动后在内存中都保存一份Zookeeper的数据。
其中,步骤S12中,加载的系统配置参数包括:Zookeeper连接地址、Zookeeper登录密码、订阅及发布的实体类型。
值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (3)
1.一种基于Zookeeper的分布式架构数据一致性方法,其特征在于,包括如下步骤:
步骤S1、缓冲数据初始化:分布式系统每个节点启动后将Zookeeper中的数据加载到各个节点的内存中;
步骤S2、部署订阅监听:定义监听方法,每个节点均订阅Zookeeper目录及数据,并部署监听;
步骤S3、数据同步:监测到Zookeeper数据变化后,实时更新同步每个节点的内存数据;
其中,步骤S2中,部署订阅监听的具体步骤如下:
步骤S21:定义两个监听器,一个用于监听Zookeeper目录,另一个用于监听Zookeeper数据,当目录或数据变化时会自动调用对应的监听器来处理变化的数据;
步骤S22:利用Zookeeper内置的订阅方法,订阅Zookeeper目录及目录下所有数据实例,并部署相应的监听器到订阅的zookeeper目录及数据节点上;
步骤S23:部署订阅监听结束后,每个节点都订阅了Zookeeper目录及数据,并设置了监听器;
其中,步骤S3中,具体的数据同步方法包括如下步骤:
步骤S31:当与节点内存中缓存数据关联的应用系统的数据进行增删改时,先将数据更新到Zookeeper中;
步骤S32:Zookeeper数据更新完成后,通过Zookeeper内部的Watcher机制通知部署的监听器,在监听器的处理方法中从Zookeeper中获取最新数据,并更新同步到节点中对应的内存数据;
步骤S33:执行节点内存数据变化的监听方法;
步骤S34:数据同步结束。
2.根据权利要求1所述的一种基于Zookeeper的分布式架构数据一致性方法,其特征在于,所述步骤S1中,缓存数据初始化的具体步骤如下:
步骤S11:根据系统业务需求,确定需要加载到内存中的业务数据;
步骤S12:分布式节点启动后,先加载系统配置参数,再根据配置的Zookeeper地址及密码初始化Zookeeper的连接池;
步骤S13:从Zookeeper连接池中获取一个Zookeeper的连接实例,并初始化Zookeeper的根目录;
步骤S14:遍历Zookeeper的根目录,并取出根目录下所有子目录及子目录下的数据,将获取到的实体对象数据加载到节点的内存中;
步骤S15:执行节点内存数据变化的监听方法;
步骤S16:缓冲数据初始化完成,每个节点启动后在内存中都保存一份Zookeeper的数据。
3.根据权利要求2所述的一种基于Zookeeper的分布式架构数据一致性方法,其特征在于,所述步骤S12中,加载的系统配置参数包括:Zookeeper连接地址、Zookeeper登录密码、订阅及发布的实体类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910036845.9A CN109815248B (zh) | 2019-01-15 | 2019-01-15 | 一种基于Zookeeper的分布式架构数据一致性方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910036845.9A CN109815248B (zh) | 2019-01-15 | 2019-01-15 | 一种基于Zookeeper的分布式架构数据一致性方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109815248A true CN109815248A (zh) | 2019-05-28 |
CN109815248B CN109815248B (zh) | 2021-05-11 |
Family
ID=66603775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910036845.9A Active CN109815248B (zh) | 2019-01-15 | 2019-01-15 | 一种基于Zookeeper的分布式架构数据一致性方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109815248B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110365809A (zh) * | 2019-07-23 | 2019-10-22 | 中南民族大学 | 分布式服务器地址配置系统及方法 |
CN110618996A (zh) * | 2019-08-07 | 2019-12-27 | 北京东方国信科技股份有限公司 | 一种应用于分布式数据库的函数库热更新方法 |
CN110765165A (zh) * | 2019-10-23 | 2020-02-07 | 中国银行股份有限公司 | 一种跨系统数据同步处理的方法、装置及系统 |
CN111143382A (zh) * | 2019-12-13 | 2020-05-12 | 新华三大数据技术有限公司 | 数据处理方法、系统和计算机可读存储介质 |
CN111708619A (zh) * | 2020-08-20 | 2020-09-25 | 上海冰鉴信息科技有限公司 | 基于消息队列和数据库的分布式事务处理方法及系统 |
CN111930529A (zh) * | 2020-10-09 | 2020-11-13 | 上海富友支付服务股份有限公司 | 基于消息队列及微服务的数据同步方法、模块及系统 |
CN113342492A (zh) * | 2021-06-08 | 2021-09-03 | 杭州遥望网络科技有限公司 | 一种任务指令下发方法、装置、系统、电子设备和介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106375342A (zh) * | 2016-10-21 | 2017-02-01 | 用友网络科技股份有限公司 | 一种基于zookeeper技术的系统集群方法及系统 |
US20170116022A1 (en) * | 2007-11-03 | 2017-04-27 | Xencare Software, Inc. | Mini-cloud system with emulator for enabling user subscription to cloud service |
CN106953901A (zh) * | 2017-03-10 | 2017-07-14 | 重庆邮电大学 | 一种提高消息传递性能的集群通信系统及其方法 |
-
2019
- 2019-01-15 CN CN201910036845.9A patent/CN109815248B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170116022A1 (en) * | 2007-11-03 | 2017-04-27 | Xencare Software, Inc. | Mini-cloud system with emulator for enabling user subscription to cloud service |
CN106375342A (zh) * | 2016-10-21 | 2017-02-01 | 用友网络科技股份有限公司 | 一种基于zookeeper技术的系统集群方法及系统 |
CN106953901A (zh) * | 2017-03-10 | 2017-07-14 | 重庆邮电大学 | 一种提高消息传递性能的集群通信系统及其方法 |
Non-Patent Citations (1)
Title |
---|
杨鹏: "分布式消息中间件的设计与实现", 《万方数据》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110365809A (zh) * | 2019-07-23 | 2019-10-22 | 中南民族大学 | 分布式服务器地址配置系统及方法 |
CN110618996A (zh) * | 2019-08-07 | 2019-12-27 | 北京东方国信科技股份有限公司 | 一种应用于分布式数据库的函数库热更新方法 |
CN110618996B (zh) * | 2019-08-07 | 2023-08-22 | 北京东方国信科技股份有限公司 | 一种应用于分布式数据库的函数库热更新方法 |
CN110765165A (zh) * | 2019-10-23 | 2020-02-07 | 中国银行股份有限公司 | 一种跨系统数据同步处理的方法、装置及系统 |
CN110765165B (zh) * | 2019-10-23 | 2022-07-29 | 中国银行股份有限公司 | 一种跨系统数据同步处理的方法、装置及系统 |
CN111143382A (zh) * | 2019-12-13 | 2020-05-12 | 新华三大数据技术有限公司 | 数据处理方法、系统和计算机可读存储介质 |
CN111143382B (zh) * | 2019-12-13 | 2022-08-09 | 新华三大数据技术有限公司 | 数据处理方法、系统和计算机可读存储介质 |
CN111708619A (zh) * | 2020-08-20 | 2020-09-25 | 上海冰鉴信息科技有限公司 | 基于消息队列和数据库的分布式事务处理方法及系统 |
US11354303B2 (en) | 2020-08-20 | 2022-06-07 | Shanghai Icekredit, Inc. | Distributed transaction processing method and system based on message queue and database |
CN111930529A (zh) * | 2020-10-09 | 2020-11-13 | 上海富友支付服务股份有限公司 | 基于消息队列及微服务的数据同步方法、模块及系统 |
CN113342492A (zh) * | 2021-06-08 | 2021-09-03 | 杭州遥望网络科技有限公司 | 一种任务指令下发方法、装置、系统、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109815248B (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815248A (zh) | 一种基于Zookeeper的分布式架构数据一致性方法 | |
CN109800239A (zh) | 基于Redis的分布式架构数据共享方法 | |
US11928029B2 (en) | Backup of partitioned database tables | |
US11036591B2 (en) | Restoring partitioned database tables from backup | |
US11899684B2 (en) | System and method for maintaining a master replica for reads and writes in a data store | |
US11388043B2 (en) | System and method for data replication using a single master failover protocol | |
US11327949B2 (en) | Verification of database table partitions during backup | |
US20190340167A1 (en) | Multi-master architectures for distributed databases | |
US9639439B2 (en) | Disaster recovery framework for cloud delivery | |
US20180181470A1 (en) | System and method for adjusting membership of a data replication group | |
US9489443B1 (en) | Scheduling of splits and moves of database partitions | |
US9053167B1 (en) | Storage device selection for database partition replicas | |
US9489434B1 (en) | System and method for replication log branching avoidance using post-failover rejoin | |
CN109547512B (zh) | 一种基于NoSQL的分布式Session管理的方法及装置 | |
CN108183961A (zh) | 一种基于Redis的分布式缓存方法 | |
US10372504B2 (en) | Global usage tracking and quota enforcement in a distributed computing system | |
US20070255823A1 (en) | Method for low-overhead message tracking in a distributed messaging system | |
CN105868333A (zh) | 文件处理方法及装置 | |
CN110071978A (zh) | 一种集群管理的方法及装置 | |
CN104468651B (zh) | 分布式多副本数据存储方法及装置 | |
CN108055333A (zh) | 一种基于ufs的nas-cifs集群负载均衡方法 | |
CN110348826A (zh) | 异地多活容灾方法、系统、设备及可读存储介质 | |
CN105069152A (zh) | 数据处理方法及装置 | |
CN111147312B (zh) | 资源配置的管理方法及装置、资源配置缓存的管理方法及装置、配置管理系统 | |
CN111522665A (zh) | 一种基于zookeeper实现Influxdb-proxy的高可用及负载均衡方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210809 Address after: 230000 4th floor, office building, 355 Wenqu Road, high tech Zone, Hefei, Anhui Patentee after: Kedaduochuang cloud Technology Co.,Ltd. Address before: No.355, Wenqu Road, high tech Zone, Hefei City, Anhui Province 230000 Patentee before: USTC SINOVATE SOFTWARE Co.,Ltd. |