分布式系统中的同步方法技术方案

技术编号:39646139 阅读:12 留言:0更新日期:2023-12-09 11:14
本申请提供了一种分布式系统中的同步方法

【技术实现步骤摘要】
分布式系统中的同步方法、装置、设备、介质及程序产品


[0001]本申请涉及互联网和数据库
,尤其涉及一种分布式系统中的同步方法

装置

设备

计算机可读存储介质及计算机程序产品


技术介绍

[0002]在互联网及数据库
中,分布式系统
(

ZooKeeper
,包括至少一个协调服务器和至少两个中转服务器
)
中同步处理方法大多利用
ZooKeeper
的临时节点和监管
(Watch)
通知机制,该方式在绝大部分场景下没有问题,但它非常依赖于
ZooKeeper

Watch
通知机制,需要确保所有中转服务器都能成功收到路由更新通知,一旦出现
Watch
通知异常,将导致部分中转服务器更新路由,部分中转服务器没有更新路由,使得中转服务器之间的路由不一致

[0003]而在实际应用中,网络的不稳定

丢包

断线重连都有可能导致
Watch
通知未成功到达中转服务器,因此,在一些极端的网络异常下,会有小概率导致路由不一致,这对于有状态的后端服务将是重大灾难


技术实现思路

[0004]本申请实施例提供一种分布式系统中的同步方法

装置

设备

计算机可读存储介质及计算机程序产品,能够提高分布式系统中同步的一致性

[0005]本申请实施例的技术方案是这样实现的:
[0006]本申请实施例提供一种分布式系统中的同步方法,所述分布式系统包括至少一个协调服务器和至少两个中转服务器,方法包括:
[0007]响应于针对目标事务的同步指令,所述协调服务器发送针对所述目标事务的同步请求至各所述中转服务器;
[0008]接收到各所述中转服务器返回的针对所述同步请求的响应信息,所述响应信息用于反馈相应的所述中转服务器针对所述目标事务的预同步结果;
[0009]其中,所述预同步结果用于指示针对所述目标事务的预同步成功或预同步失败;
[0010]基于所述响应信息反馈的各所述中转服务器的所述预同步结果,确定同步处理请求的类型,并发送所述类型的同步处理请求至各所述中转服务器,以使各所述中转服务器基于所述类型的同步处理请求,针对所述目标事务执行相应类型的同步处理操作

[0011]本申请实施例提供一种分布式系统中的同步装置,所述分布式系统包括至少一个协调服务器和至少两个中转服务器,所述装置包括:
[0012]第一发送模块,用于响应于针对目标事务的同步指令,所述协调服务器发送针对所述目标事务的同步请求至各所述中转服务器;
[0013]响应接收模块,用于接收到各所述中转服务器返回的针对所述同步请求的响应信息,所述响应信息用于反馈相应的所述中转服务器针对所述目标事务的预同步结果;
[0014]其中,所述预同步结果用于指示针对所述目标事务的预同步成功或预同步失败;
[0015]第二发送模块,用于基于所述响应信息反馈的各所述中转服务器的所述预同步结果,确定同步处理请求的类型,并发送所述类型的同步处理请求至各所述中转服务器,以使各所述中转服务器基于所述类型的同步处理请求,针对所述目标事务执行相应类型的同步处理操作

[0016]上述方案中,所述第一发送模块,还用于所述协调服务器生成所述同步指令指示的针对所述目标事务的同步请求,并发送所述同步请求至各所述中转服务器,以使各所述中转服务器基于所述同步请求,确定对应所述同步请求的预同步结果,并基于各所述预同步结果确定响应信息,以将所述响应信息返回至所述协调服务器

[0017]上述方案中,所述装置还包括中转服务器执行模块,用于当所述同步指令指示对所述目标事务中的目标数据进行数据同步时,各所述中转服务器分别执行以下操作:当所述中转服务器基于所述同步请求对所述目标数据进行同步得到同步数据时,确定用于指示针对所述目标数据的预同步成功的预同步结果,并将所述同步数据存储至临时内存中;当所述中转服务器基于所述同步请求无法对所述目标数据进行同步得到所述同步数据时,确定用于指示针对所述目标数据的预同步失败的预同步结果

[0018]上述方案中,所述中转服务器执行模块,还用于当所述同步指令指示对所述目标事务中的资源容量进行容量同步时,各所述中转服务器分别执行以下操作:当所述中转服务器基于所述同步请求查询到更新容量列表时,确定用于指示对所述资源容量的预同步成功的预同步结果,并将所述更新容量列表存储至临时内存中;当所述中转服务器基于所述同步请求无法查询到更新容量列表时,确定用于指示对所述资源容量的预同步失败的预同步结果

[0019]上述方案中,所述中转服务器执行模块,还用于当所述预同步结果指示针对所述目标事务预同步成功时,相应的所述中转服务器注册用于指示预同步成功的预同步节点;各所述中转服务器从所述至少两个中转服务器中选取得到主中转服务器;所述主中转服务器检测注册的所述预同步节点的数量,并对所述预同步节点的数量与所述中转服务器的数量进行比较,以基于所述比较结果确定所述响应信息,并将所述响应信息返回至所述协调服务器

[0020]上述方案中,所述中转服务器执行模块,还用于各所述中转服务器注册对应的临时顺序节点,得到与所述中转服务器的数量一致的临时顺序节点,所述临时顺序节点的序号是自增长的;根据所述临时顺序节点的序号,从所述数量的临时顺序节点中选取序号最小的第一临时顺序节点,并将选取的所述第一临时顺序节点对应的中转服务器确定为主中转服务器

[0021]上述方案中,所述中转服务器执行模块,还用于当选取的所述第一临时顺序节点对应的中转服务器发生故障时,选取与所述第一临时顺序节点相邻的第二临时顺序节点;将选取的所述第二临时顺序节点对应的中转服务器确定为所述主中转服务器,并删除发生故障的所述中转服务器及所述第一临时顺序节点

[0022]上述方案中,所述第二发送模块,还用于当所述响应信息反馈各所述中转服务器的所述预同步结果均为预同步成功时,确定同步处理请求的类型为同步提交;当所述响应信息反馈所述至少两个中转服务器中至少存在一个中转服务器的所述预同步结果为预同步失败时,确定所述同步处理请求的类型为同步回滚

[0023]上述方案中,所述第二发送模块,还用于当所述同步处理请求的类型为同步提交时,发送同步提交请求至各所述中转服务器,以使各所述中转服务器基于所述同步提交请求,针对所述目标事务执行同步提交操作;当所述同步处理请求的类型为同步回滚时,发送同步回滚请求至各所述中转服务器,以使各所述中转服务器基于所述同步回滚请求,针对所述目标事务执行同步回滚操作

[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种分布式系统中的同步方法,其特征在于,所述分布式系统包括至少一个协调服务器和至少两个中转服务器,所述方法包括:响应于针对目标事务的同步指令,所述协调服务器发送针对所述目标事务的同步请求至各所述中转服务器;接收到各所述中转服务器返回的针对所述同步请求的响应信息,所述响应信息用于反馈相应的所述中转服务器针对所述目标事务的预同步结果;其中,所述预同步结果用于指示针对所述目标事务的预同步成功或预同步失败;基于所述响应信息反馈的各所述中转服务器的所述预同步结果,确定同步处理请求的类型,并发送所述类型的同步处理请求至各所述中转服务器,以使各所述中转服务器基于所述类型的同步处理请求,针对所述目标事务执行相应类型的同步处理操作
。2.
如权利要求1所述的方法,其特征在于,所述协调服务器发送针对所述目标事务的同步请求至各所述中转服务器,包括:所述协调服务器生成所述同步指令指示的针对所述目标事务的同步请求,并发送所述同步请求至各所述中转服务器,以使各所述中转服务器基于所述同步请求,确定对应所述同步请求的预同步结果,并基于各所述预同步结果确定响应信息,以将所述响应信息返回至所述协调服务器
。3.
如权利要求2所述的方法,其特征在于,所述各所述中转服务器基于所述同步请求,确定对应所述同步请求的预同步结果,包括:当所述同步指令指示对所述目标事务中的目标数据进行数据同步时,各所述中转服务器分别执行以下操作:当所述中转服务器基于所述同步请求对所述目标数据进行同步得到同步数据时,确定用于指示针对所述目标数据的预同步成功的预同步结果,并将所述同步数据存储至临时内存中;当所述中转服务器基于所述同步请求无法对所述目标数据进行同步得到所述同步数据时,确定用于指示针对所述目标数据的预同步失败的预同步结果
。4.
如权利要求2所述的方法,其特征在于,所述各所述中转服务器基于所述同步请求,确定对应所述同步请求的预同步结果,包括:当所述同步指令指示对所述目标事务中的资源容量进行容量同步时,各所述中转服务器分别执行以下操作:当所述中转服务器基于所述同步请求查询到更新容量列表时,确定用于指示对所述资源容量的预同步成功的预同步结果,并将所述更新容量列表存储至临时内存中;当所述中转服务器基于所述同步请求无法查询到更新容量列表时,确定用于指示对所述资源容量的预同步失败的预同步结果
。5.
如权利要求2所述的方法,其特征在于,所述基于各所述预同步结果确定响应信息,以将所述响应信息返回至所述协调服务器,包括:当所述预同步结果指示针对所述目标事务预同步成功时,相应的所述中转服务器注册用于指示预同步成功的预同步节点;各所述中转服务器从所述至少两个中转服务器中选取得到主中转服务器;所述主中转服务器检测注册的所述预同步节点的数量,并对所述预同步节点的数量与
所述中转服务器的数量进行比较,以基于所述比较结果确定所述响应信息,并将所述响应信息返回至所述协调服务器
。6.
如权利要求5所述的方法,其特征在于,所述各所述中转服务器从所述至少两个中转服务器中选取得到主中转服务器,包括:各所述中转服务器注册对应的临时顺序节点,得到与所述中转服务器的数量一致的临时顺序节点,所述临时顺序节点的序号是自增长的;根据所述临时顺序节点的序号,从所述数量的临时顺序节点中选取序号最小的第一临时顺序节点,并将选取的所述第一临时顺序节点对应的中转服务器确定为主中转服务器
。7.
如权利要求6所述的方法,其特征在于,所述方法还包括:当选取的所述第一临时顺序节点对应的中转服务器发生故障时,选取与所述第一临时顺序节点相邻的第二临时顺序节点;将选取的所述第二临时顺序节点对应的中转服务器确定为所述主中转服务器,并删除发生故障的所述中转服务器及所述第一临时顺序节点
。8.
如权利要求1所述的方法,其特征在于,所述基于所述响应信息反馈的各所述中转服务器的所述预同步结果,确定同步处理请求的类型,包括:当所述响应信息反馈各所述中转服务器的所述预同步结果均为预同步成功时,确定同步处理请求的类型为同步提交;当所述响应信息反馈所述至少两个中转服务器中至少存在一个中转服务器的所述预同步结果为预同步失败时,确定所述同步处理请求的类型为同步回滚
。9.
如权利要求1所述的方法,其特征在于,所述发送所述类型的同步处理请求至各所述中转服务器,以使各所述中转服务器基于所述...

【专利技术属性】
技术研发人员:廖阿敏
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1