CN117725075A - 一种基于比较并交换算法的n叉树数据同步补偿方法 - Google Patents
一种基于比较并交换算法的n叉树数据同步补偿方法 Download PDFInfo
- Publication number
- CN117725075A CN117725075A CN202311790776.3A CN202311790776A CN117725075A CN 117725075 A CN117725075 A CN 117725075A CN 202311790776 A CN202311790776 A CN 202311790776A CN 117725075 A CN117725075 A CN 117725075A
- Authority
- CN
- China
- Prior art keywords
- data
- compensation
- ary tree
- message
- comparison
- 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.)
- Pending
Links
- 230000001360 synchronised effect Effects 0.000 title claims abstract description 45
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000003780 insertion Methods 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 230000008520 organization Effects 0.000 abstract description 13
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000007726 management method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于比较并交换算法的N叉树数据同步补偿方法,属于数据同步补偿技术领域;包括,步骤S1,一后台管理系统更新N叉树数据,得到新增的N叉树节点并保存;步骤S2,数据同步补偿组件依据新增的N叉树节点构建生产者流水表;步骤S3,基于比较并交换算法发送同步消息;步骤S4,消息队列模块判断同步消息是否发送,如果是,则更新生产者流水表的数据状态,如果否,则退出消息同步后,进行数据补偿。上述技术方案的有益效果是:能够实现实时的用户与组织架构的同步和补偿,提升了补偿过程中数据的可靠性、可用性以及一致性。
Description
技术领域
本发明涉及数据同步补偿技术领域,尤其涉及一种基于比较并交换算法的N叉树数据同步补偿方法。
背景技术
在数据同步补偿过程中,数据的可靠性、可用性以及一致性是非常关键的因素。可靠性指的是操作数据库本地事务与发送消息时,如果本地事务提交成功,而消息却发送失败,如服务所在进程瞬时崩溃,此时就需要有后续的定时补偿机制,将同步端变化的操作数据,再次发送给消息队列,直到成功;可用性是指在定时任务进行同步数据补偿发送时,需要以分布式锁的方式进行排他操作,以避免两个任务同时补偿相同数据的错误情况发生;一致性指的是顺序一致,如新增一子树或子节点,紧跟着又修改了该子节点的数据,如果此时投递同步消息的顺序错误,那么消费者在收到消息后,就一定会出现数据操作逻辑上的错误。
在现有技术中,多个业务系统需要用到业务组织架构数据,且大部分都是跨业务线的,数据往往存在于不同的系统中,并由不同的微服务提供数据访问接口。组织架构数据一般是N叉树(N-ary tree)的数据结构,难以保证N叉树数据的可靠性、可用性以及一致性。
发明内容
本发明的目的在于,提供一种基于比较并交换算法的N叉树数据同步补偿方法,解决以上技术问题;
一种基于比较并交换算法的N叉树数据同步补偿方法,包括,
步骤S1,一后台管理系统更新N叉树数据,得到新增的N叉树节点并保存;
步骤S2,数据同步补偿组件依据所述新增的N叉树节点构建生产者流水表;
步骤S3,基于比较并交换算法发送同步消息;
步骤S4,消息队列模块判断所述同步消息是否发送,如果是,则更新所述生产者流水表的数据状态,如果否,则退出消息同步后,进行数据补偿。
优选地,步骤S1包括,
步骤S11,所述后台管理系统更新N叉树数据,得到所述新增的N叉树节点,并保存至所述后台管理系统的数据库中;
步骤S12,将所述新增的N叉树节点发送至所述数据同步补偿组件,以进行消息推送。
优选地,步骤S3包括,
步骤S31,基于所述比较并交换算法将所述同步消息定时发送至消息发送线程;
步骤S32,所述消息发送线程将所述同步消息发送到指定主题的消息队列中,以判断所述同步消息的发送状态。
优选地,步骤S4中所述数据补偿包括,
扫描所述生产者流水表中未发送的消息数据并进行补偿发送,直至所述生产者流水表中的所述消息数据全部发送。
优选地,所述生产者流水表的数据插入顺序和所述同步消息的发送顺序一致。
优选地,所述数据补偿是按照待更新部门队列、待更新用户队列、待删除用户队列、待删除部门队列、待添加部门队列、待添加用户队列的顺序依次执行。
优选地,所述待删除部门队列的执行顺序是从最下层节点往最上层节点执行。
优选地,所述待添加部门队列的执行顺序是从最上层节点往最下层节点执行。
优选地,所述数据补偿依据不同的队列调用不同的下游接口进行补偿。
优选地,所述待更新部门队列、所述待更新用户队列、所述待删除用户队列、所述待删除部门队列、所述待添加部门队列以及所述待添加用户队列存入所述数据库后台管理系统的数据库中。
本发明的有益效果是:能够实现实时的用户与组织架构的同步和补偿,提升了补偿过程中数据的可靠性、可用性以及一致性。
附图说明
图1是本发明的基于比较并交换算法的N叉树数据同步补偿方法的步骤图;
图2是本发明步骤S1的示意图;
图3是本发明步骤S3的示意图;
图4是本发明的基于比较并交换算法的N叉树数据同步补偿方法的总体流程图;
图5是本发明的基于比较并交换算法的N叉树数据同步补偿生产者流程图;
图6是本发明的基于比较并交换算法的N叉树数据同步补偿消费者流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
一种基于比较并交换算法的N叉树数据同步补偿方法,如图1所示,包括,
步骤S1,一后台管理系统更新N叉树数据,得到新增的N叉树节点并保存;
步骤S2,数据同步补偿组件依据新增的N叉树节点构建生产者流水表;
步骤S3,基于比较并交换算法发送同步消息;
步骤S4,消息队列模块判断同步消息是否发送,如果是,则更新生产者流水表的数据状态,如果否,则退出消息同步后,进行数据补偿。
具体地,本发明提供一种基于比较并交换算法的N叉树数据同步补偿方法,通过CAS(比较并交换)算法,实现实时的用户与组织架构的同步和补偿,提升了补偿过程中数据的可靠性、可用性以及一致性。
进一步具体地,消息队列模块即图4至图5中的消息队列,以极高的可靠性保证同步方数据的变化能被实时发送到消息队列,发送过程中保证了同步端数据变化的顺序与消息投递的顺序完全一致,即一次重放式的数据同步。
更进一步具体地,二叉树中每个结点有一个数据项,最多有两个子节点,如果允许树的每个节点可以有两个以上的子节点,那么这个树就称为N阶的多叉树,或者称为N叉树。CAS算法基于硬件原语实现,能够在不使用锁的情况下实现多线程之间的变量同步。
在一种较优的实施例中,参照图2,步骤S1包括,
步骤S11,后台管理系统更新N叉树数据,得到新增的N叉树节点,并保存至后台管理系统的数据库中;
步骤S12,将新增的N叉树节点发送至数据同步补偿组件,以进行消息推送。
具体地,可以确保后台管理系统中的数据与实际的N叉树数据一致,避免了数据不一致的问题。
进一步具体地,实现数据的实时同步和更新,确保系统中的各个组件都能及时获取到最新的数据,保证了数据的准确性和一致性。
在一种较优的实施例中,参照图3,步骤S3包括,
步骤S31,基于比较并交换算法将同步消息定时发送至消息发送线程;
步骤S32,消息发送线程将同步消息发送到指定主题的消息队列中,以判断同步消息的发送状态。
具体地,将同步消息定时发送至消息发送线程,可以确保同步消息在适当的时间被发送出去,避免消息发送的延迟,保证同步消息的及时性,提高同步消息的可靠性,确保数据的一致性。
在一种较优的实施例中,步骤S4中数据补偿包括,
扫描生产者流水表中未发送的消息数据并进行补偿发送,直至生产者流水表中的消息数据全部发送。
具体地,确保生产者流水表中的所有消息数据都能被成功发送,通过补偿发送未发送的消息数据,可以避免数据丢失或遗漏,确保数据的完整性和准确性。
在一种较优的实施例中,生产者流水表的数据插入顺序和同步消息的发送顺序一致,保证了数据的一致性,提高了数据同步效率。
在一种较优的实施例中,数据补偿是按照待更新部门队列、待更新用户队列、待删除用户队列、待删除部门队列、待添加部门队列、待添加用户队列的顺序依次执行;待删除部门队列的执行顺序是从最下层节点往最上层节点执行;
待添加部门队列的执行顺序是从最上层节点往最下层节点执行。
具体地,按照特定的顺序执行待删除操作,可以确保数据在删除过程中保持完整。例如,在删除部门时,先删除下层节点再删除上层节点,可以避免删除上层节点后导致下层节点无法访问的情况,确保数据的一致性、完整性和安全性,提高数据操作的准确性和可靠性。
在一种较优的实施例中,数据补偿依据不同的队列调用不同的下游接口进行补偿。
具体地,不同的下游接口有不同的处理能力和要求,通过根据队列调用不同的接口进行补偿,可以确保数据按照正确的方式进行处理,提高数据处理的准确性。
在一种较优的实施例中,待更新部门队列、待更新用户队列、待删除用户队列、待删除部门队列、待添加部门队列以及待添加用户队列存入数据库后台管理系统的数据库中。
具体地,将待更新部门队列、待更新用户队列、待删除用户队列、待删除部门队列、待添加部门队列以及待添加用户队列存入数据库后台管理系统的数据库中能够保持结果持久化,实现数据备份,确保即使出现意外情况,也能够快速恢复数据。通过数据库后台管理系统可以对这些队列中的数据进行统计分析,了解待更新和待删除的部门和用户信息,为决策提供数据支持。
在第一实施例中,参照图4,在业务组织架构N叉树的数据结构中,对比的具体逻辑实现如下:
首先,后台管理系统更新N叉树数据,将更新的数据存入后台管理系统关联的数据库,并打包发送消息至数据同步补偿组件。
其次,数据同步补偿组件依据更新的数据构建生产者流水表,发送事务提交事件后,同步事务提交事件监听数据,在同一事务中,推送一条同步消息到消息队列,消息队列的生产者方会有一条相关数据。
然后,在本地事务提交成功后,通知消息发送线程推送,数据同步消息发送线程,会从生产者流水表读取尚未同步的数据列表,消息推送过程中通过CAS算法严格保证数据插入到流水表的顺序和消息发送的顺序完全一致,上一条是数据发送成功后才能发送下一条数据。发送数据同步消息至指定topic(主题)的队列,消息队列broker(中间件)判断消息是否成功发送,如果是,则批量更新已发送消息流水的状态,如果否,则推出同步任务,开启数据补偿。
最后,消费任务会开始消费数据,并完成数据推送。
在以上步骤中,如果消息发送环节出现任何异常,都会导致消息发送的暂时中断。定时补偿任务会自动定时启动,扫描生产者流水表中尚未发送的消息数据,并进行补偿发送,直到最终发送成功。
在第二实施例中,参照图5、图6所示,在生产者流程中,后台管理系统更新N叉树数据,将更新的N叉树数据存入后台管理系统关联的数据库,并打包发送消息至数据同步补偿组件。然后,数据同步补偿组件依据更新的数据构建生产者流水表,发送事务提交事件后,同步事务提交事件监听数据,在本地事务提交成功后,通知消息发送线程推送,数据同步消息发送线程,会从生产者流水表读取尚未同步的数据列表,消息推送过程中通过CAS算法严格保证数据插入到流水表的顺序和消息发送的顺序完全一致。其次,发送数据同步消息至指定topic(主题)的队列,消息队列broker(中间件)判断消息是否成功发送,如果是,则批量更新已发送消息流水的状态,如果否,则推出同步任务,开启数据补偿。
在消费者流程中,消息队列从数据同步补偿组件的消费者监听器实现类中拉取同步消息数据,消费者监听器实现类发送事务提交事件至同步服务实现类,基于CAS算法保证数据的一致性,判断当前消息是否在目标数据库中已存在,如果是,则提交消息队列该消息已被正常消费,如果否,则在系统B中进行同步服务实现,判断当前所在数据库数据与当前同步的是否一致,如果是,则保存N叉树更新数据到目标数据库的业务表中再保存消息至同步目标数据库,如果否,则保存消息至同步目标数据库,最后提交消息队列该消息已被正常消费。
在第三实施例中,下游组织架构和人员对比包括:
部门增量对比,对比当前层级下的部门是否两侧都存在,如果两侧都存在则以当前层级下的每个节点为父节点,执行递归逻辑。如果该部门基准侧存在但是下游不存在,获取该部门及其所有子部门放入待添加部门队列,部门内人员放入待添加用户队列。
部门删改对比,对比当前层级下的部门是否两侧都存在,如果该部门未删除,但是在当前层级下不存在于基准侧但存在于下游,则认为该部门被挪动至别处,该部门放入待更新部门队列。如果两侧都存在则以当前层级下的每个节点为父节点,执行步骤递归逻辑。递归完成后,如果当前部门名称和下游对应部门名称不一致则把该部门作为待更新部门。之后再对比当前部门下两侧用户。若属性不一致则放入待更新用户队列;如果基准侧有该用户,但下游没有则放入待添加用户队列。如果下游有该用户,但基准侧没有则放入待删除用户队列。
如果基准侧存在但是下游不存在,且不属于挪动逻辑的部门,则走删除逻辑。将该部门及其下属部门遍历,如果该部门及其下属部门在下游已删除则放入待删除部门队列,如果在下游未被删除则放入待更新部门队列。之后再对比该部门及其下属部门两侧用户。若属性不一致则放入待更新用户队列;如果基准侧有该用户,但下游没有则放入待添加用户队列。如果下游有该用户,但基准侧没有则放入待删除用户队列。
将上述待添加部门队列、待更新部门队列、待删除部门队列、待添加用户队列、待更新用户队列和待删除用户队列存入数据库,保证结果的持久性。
结果数据补偿包括:
结果数据补偿的执行顺序按照待更新部门队列、待更新用户队列、待删除用户队列、待删除部门队列(从最下层节点往最上层节点执行)、待添加部门队列(从最上层节点往最下层节点执行)、待添加用户队列依次执行。
结果数据补偿的执行方式是依据不同的队列调用不同的下游接口进行补偿。
结果数据补偿将执行成功的组织和用户状态置为成功,将失败的组织和用户状态置为失败,供之后重试,保证结果的持久化。
综上,本申请提供一种基于比较并交换算法的N叉树数据同步补偿方法,用于数据同步补偿,融合实时同步的既有逻辑,通过设计算法,形成一套高效的用户与组织架构补偿体系,能够实现准实时的用户与组织架构的同步和补偿,及时同下游进行对比校验。利用CAS算法,可对指定部门、人员、标签进行对比,将对比出的需要修复部门、人员、标签结果推送至下游实现补偿,便于运营人员发现下游数据在下游数据实时同步异常后及时响应。基于组织和用户数据,融合各自数据特点,编排补偿执行流程,发挥了数据驱动的客观性,相互补充,促进了补偿质量,提升了补偿过程的稳定性和结果的一致性。
以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
Claims (10)
1.一种基于比较并交换算法的N叉树数据同步补偿方法,其特征在于,包括,
步骤S1,一后台管理系统更新N叉树数据,得到新增的N叉树节点并保存;
步骤S2,数据同步补偿组件依据所述新增的N叉树节点构建生产者流水表;
步骤S3,基于比较并交换算法发送同步消息;
步骤S4,消息队列模块判断所述同步消息是否发送,如果是,则更新所述生产者流水表的数据状态,如果否,则退出消息同步后,进行数据补偿。
2.根据权利要求1所述的基于比较并交换算法的N叉树数据同步补偿方法,其特征在于,步骤S1包括,
步骤S11,所述后台管理系统更新N叉树数据,得到所述新增的N叉树节点,并保存至所述后台管理系统的数据库中;
步骤S12,将所述新增的N叉树节点发送至所述数据同步补偿组件,以进行消息推送。
3.根据权利要求1所述的基于比较并交换算法的N叉树数据同步补偿方法,其特征在于,步骤S3包括,
步骤S31,基于所述比较并交换算法将所述同步消息定时发送至消息发送线程;
步骤S32,所述消息发送线程将所述同步消息发送到指定主题的消息队列中,以判断所述同步消息的发送状态。
4.根据权利要求1所述的基于比较并交换算法的N叉树数据同步补偿方法,其特征在于,步骤S4中所述数据补偿包括,
扫描所述生产者流水表中未发送的消息数据并进行补偿发送,直至所述生产者流水表中的所述消息数据全部发送。
5.根据权利要求1所述的基于比较并交换算法的N叉树数据同步补偿方法,其特征在于,所述生产者流水表的数据插入顺序和所述同步消息的发送顺序一致。
6.根据权利要求1所述的基于比较并交换算法的N叉树数据同步补偿方法,其特征在于,所述数据补偿是按照待更新部门队列、待更新用户队列、待删除用户队列、待删除部门队列、待添加部门队列、待添加用户队列的顺序依次执行。
7.根据权利要求6所述的基于比较并交换算法的N叉树数据同步补偿方法,其特征在于,所述待删除部门队列的执行顺序是从最下层节点往最上层节点执行。
8.根据权利要求6所述的基于比较并交换算法的N叉树数据同步补偿方法,其特征在于,所述待添加部门队列的执行顺序是从最上层节点往最下层节点执行。
9.根据权利要求1所述的基于比较并交换算法的N叉树数据同步补偿方法,其特征在于,所述数据补偿依据不同的队列调用不同的下游接口进行补偿。
10.根据权利要求6所述的基于比较并交换算法的N叉树数据同步补偿方法,其特征在于,所述待更新部门队列、所述待更新用户队列、所述待删除用户队列、所述待删除部门队列、所述待添加部门队列以及所述待添加用户队列存入所述数据库后台管理系统的数据库中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311790776.3A CN117725075A (zh) | 2023-12-22 | 2023-12-22 | 一种基于比较并交换算法的n叉树数据同步补偿方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311790776.3A CN117725075A (zh) | 2023-12-22 | 2023-12-22 | 一种基于比较并交换算法的n叉树数据同步补偿方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117725075A true CN117725075A (zh) | 2024-03-19 |
Family
ID=90208727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311790776.3A Pending CN117725075A (zh) | 2023-12-22 | 2023-12-22 | 一种基于比较并交换算法的n叉树数据同步补偿方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117725075A (zh) |
-
2023
- 2023-12-22 CN CN202311790776.3A patent/CN117725075A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7010576B2 (en) | Efficient method of globalization and synchronization of distributed resources in distributed peer data processing environments | |
US9396072B2 (en) | Delivery with reconciliation on client side | |
US20090327805A1 (en) | Minimizing data loss in asynchronous replication solution using distributed redundancy | |
CN117290122A (zh) | 一种基于Kafka的多环境有序性生产消费的方法 | |
CN110912979B (zh) | 一种解决多服务器资源同步冲突方法 | |
CN117725075A (zh) | 一种基于比较并交换算法的n叉树数据同步补偿方法 | |
US8230444B2 (en) | Global attribute uniqueness (GAU) using an ordered message service (OMS) | |
CN116383308A (zh) | 一种具备全链路反压特性的数据同步方法及系统 | |
CN111506668B (zh) | 机器人集群智能化数据同步方法及系统 | |
CN113515352B (zh) | 分布式事务异库模式反交易调用方法及装置 | |
CN114884906A (zh) | 基于快速恢复的失败重试通知方法及装置 | |
CN110928532B (zh) | 一种高一致性微服务架构及其数据更新方法 | |
CN114416717A (zh) | 一种数据处理方法及架构 | |
CN112463407A (zh) | 一种消息传输及消费方法 | |
Castro-Company et al. | CLOB: Communication support for efficient replicated database recovery | |
CN102111783A (zh) | 原子命令回滚方法及终端 | |
CN112100190A (zh) | 一种基于更新序列的分布式锁状态同步方法 | |
CN116361016B (zh) | 一种网络控制器消息处理方法、系统 | |
CN112053150A (zh) | 一种数据处理方法、装置及存储介质 | |
CN111143475B (zh) | 一种用于Storm的数据分析的状态管理的方法及装置 | |
CN113890875B (zh) | 任务分配方法及装置 | |
CN112486781B (zh) | 一种集群设备告警方法和系统 | |
CN117692877A (zh) | 面向计费c++应用的分布式消息分发方法及系统 | |
CN117527827A (zh) | 一种集装箱码头跨服务信息通信和数据同步方法 | |
CN116450419A (zh) | 主从节点数据同步的方法、系统、介质及电子设备 |
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 |