一种解决数据冲突的方法和系统技术方案

技术编号:15547388 阅读:132 留言:0更新日期:2017-06-07 12:58
一种多活系统中解决数据冲突的方法,接入节点接收客户端发送的第一数据更新请求,并对第一数据更新请求生成一个全球唯一的版本号;接入节点向存储节点发送第二数据更新请求,第二数据更新请求中携带该版本号;存储节点根据第二数据更新请求更新对应的数据和更新偏序关系,并向接入节点返回偏序关系;偏序关系用于记录存储节点接收到的数据更新请求的版本号的先后顺序;接入节点获取存储节点返回的偏序关系,判断存储节点中的数据是否存在冲突;当存储节点中的数据存在冲突时,接入节点调整所述冲突。当存储节点中的数据存在冲突时,接收节点才调整数据存在的冲突,大大提高了数据的更新效率。

Method and system for solving data conflict

Methods to resolve data conflicts a live system, the first access node receives the data sent by the client request and the first data update request to generate a unique global version number; access node update request to the storage node sends second data, second data update request with the version number; according to the second data storage node update request update data and update the corresponding partial order, and returns the partial relation to the access node; partial order relation for sequence of records received storage node data update request version number; access node access ordering storage node returns, the data storage node to judge whether there is a conflict when conflict exists in the storage node; when the data access node adjusts the conflict. When the data in the storage node is in conflict, the receiving node adjusts the conflict of data and greatly improves the data update efficiency.

【技术实现步骤摘要】

本申请涉及通信
,尤其涉及一种解决数据冲突的方法和系统
技术介绍
当前双活或者多活系统,允许数据从两个或者多个节点写入,同时需要将写入的数据复制到其它节点中,使得多个节点上的数据达到一致。当多个节点同时对一份数据进行修改时,由于写入时序和网络、磁盘等原因造成写入先后顺序的不一致,出现数据冲突,从而多节点都写入成功的情况下,数据在多个节点上处于不一致的状态,导致从不同节点读取出来的数据不一样。例如,三个节点分别对C进行修改,由于写入顺序不一致,导致三个节点最终的数据不相同。现有技术为了处理这种从多个节点同时写入数据导致数据冲突,造成多节点间数据不一致的场景,提出了两种比较通用的解决方法。第一种解决方法是利用分布式锁来解决多个节点之间数据冲突的问题。向节点写入数据时先向分布式锁服务器申请锁,写完数据后再释放锁。这种方式能够保证同一份数据的修改在不同节点操作串行进行,从而保证了不会出现多节点数据不一致的情况。例如Node1、Node2和Node3上都存储有数据C,现在三个节点需要分别对数据C进行修改时,Node1先向分布式锁服务器申请到数据C的锁,则三个节点都修改为C1,然后Node2向分布式锁服务器申请到数据C的锁,则三个节点都修改为C2,最后Node3向分布式锁服务器申请到C的锁,则三个节点都修改为C3。最后三个节点中的数据一致,都为C3。不过此方法在没有写冲突时会产生无效的锁申请,导致系统整体性能下降。第二种解决方法是采用优先级锁来解决多个节点之间数据冲突的问题。在配置系统中各个节点的多活关系时,确定各个节点的优先级,当往节点中写入数据时首先向分布式锁服务器尝试去申请锁(trylock),试锁申请成功后,各个节点并发写入数据。当有写入冲突出现死锁时根据各个节点的优先级强制解除优先级低的节点的锁,待优先级高的节点写完数据之后优先级较低的节点对应的数据进行重写。当系统中的节点数量较多形成集群时,锁申请成为一个集群内的分布式锁,导致系统的性能下降,通用性不好。
技术实现思路
本申请提供一种解决数据冲突的方法系统,。第一方面,提供一种多活系统中解决数据冲突的方法,多活系统包含接入节点和存储节点,方法包括:接入节点接收客户端发送的第一数据更新请求,并对第一数据更新请求生成一个全球唯一的版本号;接入节点向存储节点发送第二数据更新请求,第二数据更新请求中携带所述版本号;存储节点根据第二数据更新请求更新对应的数据,更新偏序关系,并向接入节点返回所述偏序关系;其中,偏序关系用于记录存储节点接收到的数据更新请求的版本号的先后顺序;接入节点获取所述存储节点返回的偏序关系,判断存储节点中的所述数据是否存在冲突;当存储节点中的所述数据存在冲突时,接入节点调整所述冲突。这样,只有当存储节点中的数据存在冲突时,接收节点才调整数据存在的冲突,当存储节点中的数据不存在冲突时,接收节点正常执行数据更新操作,大大提高了了数据的更新效率。在一种可能的设计中,接入节点判断存储节点中的数据是否存在冲突具体为:当获取到的存储节点的偏序关系不一致时,接入节点判断所述存储节点中的所述数据存在冲突。通过增加数据操作请求的版本号的偏序关系,接入节点可以根据偏序关系来判断存储节点中的数据是否一致,能够快速的识别出存储节点中存在的数据冲突,提高系统的性能。在一种可能的设计中,接入节点判断存储节点中的数据是否存在冲突具体为:当接收到的存储节点的偏序关系不一致时,在预定的时间周期内接入节点重新获取所述存储节点的偏序关系,当重新获取的所述存储节点的偏序关系不一致时,接入节点判断存储节点中的数据存在冲突。由于各个存储节点接收数据更新请求的顺序和时间不完全一致,因此不同时间获取的偏序关系可能会不同。并且当不同存储节点的偏序关系不相同时,可能有接收节点会调整数据冲突,因此可以设定一个时间周期,在设定的时间周期内,接收节点可以多次获取存储节点的偏序关系进行比较,而不是一发现偏序关系不一致就马上进行调整,以提高解决数据冲突的效率。在一种可能的设计中,接入节点调整所述冲突具体为:接入节点根据冲突调整策略向存储节点发送第三数据更新请求,第三数据更新请求中包含需要调整的偏序关系;存储节点接收到第三数据更新请求之后,根据需要调整的偏序关系更新存储节点中的数据。在一可能的设计中,冲突调整策略包括存储节点优先级策略和偏序关系优先级策略。存储节点优先级策略为以优先级高的存储节点的偏序关系来调整优先级低的存储节点中的数据。偏序关系优先级策略为按所述偏序关系中的版本号的大小顺序调整所述存储节点中的所述数据。存储节点中数据冲突的解决需要有一致的策略,这样能够在确定存在冲突以后快速的解决。冲突调整策略的具体内容和实现在上文实施例中已有详细的说明和举例,在本实施例中不再另行说明。第二方面,提供一种多活系统,所述多活系统中包含多个接入节点和多个存储节点,接入节点与客户端连接,接入节点用于接收客户端发送的第一数据更新请求,并对第一数据更新请求生成一个全球唯一的版本号;向存储节点发送第二数据更新请求,第二数据更新请求中携带所述版本号;存储节点用于根据第二数据更新请求更新对应的数据,更新偏序关系,并向接入节点返回所述偏序关系;其中,偏序关系用于记录存储节点接收到的数据更新请求的版本号的先后顺序;接入节点还用于获取存储节点返回的偏序关系,判断存储节点中的数据是否存在冲突;当存储节点中的数据存在冲突时,调整所述冲突。在一种可能的设计中,接入节点用于判断所述存储节点中的述数据是否存在冲突具体为:当获取到的存储节点的偏序关系不一致时,判断所述存储节点中的所述数据存在冲突。在一种可能的设计中,接入节点用于判断存储节点中的数据是否存在冲突具体为:当接收到的存储节点的偏序关系不一致时,在预定的时间周期内接入节点重新获取存储节点的偏序关系,当重新获取的所述存储节点的偏序关系不一致时,判断存储节点中的所述数据存在冲突。在一种可能的设计中,接入节点用于调整所述冲突具体为:根据冲突调整策略向存储节点发送第三数据更新请求,第三数据更新请求中包含需要调整的偏序关系;其中,冲突调整策略包括存储节点优先级策略和偏序关系优先级策略;存储节点还用于接收到第三数据更新请求之后,根据需要调整的偏序关系更新存储节点中的所述数据。在一种可能的设计中,接入节点和存储节点位于同一物理设备中。第三方面,提供一种解决数据冲突的装置,包括处理器,通信总线、存储器和通信接口,处理器用于执行上述的解决数据冲突的方法,在此不再另行说明。另外,第二方面和第三方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。图1为本申请实施例提供的多活系统的结构示意图;图2为本申请实施例提供的解决数据冲突的方法流程示意图;图3为本申请实施例提供的的解决数据冲突的装置的结构示意图。具体实施方式本专利技术实施例提供一种解决数据冲突的方法和系统,可以快速识别数据冲突并解决数据冲突,系统的写入性能更高。本专利技术实施例涉及双活或者多活系统,在本专利技术实施例中,以多活系统为例来进行说明。如附图1所示,多活系统10分为三个逻辑层:客户端层1本文档来自技高网
...
一种解决数据冲突的方法和系统

【技术保护点】
一种多活系统中解决数据冲突的方法,其特征在于,所述多活系统包含接入节点和存储节点,所述方法包括:所述接入节点接收客户端发送的第一数据更新请求,并对所述第一数据更新请求生成一个全球唯一的版本号;所述接入节点向所述存储节点发送第二数据更新请求,所述第二数据更新请求中携带所述版本号;所述存储节点根据所述第二数据更新请求更新对应的数据,更新偏序关系,并向所述接入节点返回所述偏序关系;其中,所述偏序关系用于记录所述存储节点接收到的数据更新请求的版本号的先后顺序;所述接入节点获取所述存储节点返回的偏序关系,判断存储节点中的所述数据是否存在冲突;当存储节点中的所述数据存在冲突时,所述接入节点调整所述冲突。

【技术特征摘要】
1.一种多活系统中解决数据冲突的方法,其特征在于,所述多活系统包含接入节点和存储节点,所述方法包括:所述接入节点接收客户端发送的第一数据更新请求,并对所述第一数据更新请求生成一个全球唯一的版本号;所述接入节点向所述存储节点发送第二数据更新请求,所述第二数据更新请求中携带所述版本号;所述存储节点根据所述第二数据更新请求更新对应的数据,更新偏序关系,并向所述接入节点返回所述偏序关系;其中,所述偏序关系用于记录所述存储节点接收到的数据更新请求的版本号的先后顺序;所述接入节点获取所述存储节点返回的偏序关系,判断存储节点中的所述数据是否存在冲突;当存储节点中的所述数据存在冲突时,所述接入节点调整所述冲突。2.根据权利要求1所述的方法,其特征在于,所述接入节点判断所述存储节点中的所述数据是否存在冲突具体为:当获取到的存储节点的偏序关系不一致时,所述接入节点判断所述存储节点中的所述数据存在冲突。3.根据权利要求1所述的方法,其特征在于,所述接入节点判断所述存储节点中的所述数据是否存在冲突具体为:当接收到的存储节点的偏序关系不一致时,在预定的时间周期内所述接入节点重新获取所述存储节点的偏序关系,当所述重新获取的所述存储节点的偏序关系不一致时,所述接入节点判断所述存储节点中的所述数据存在冲突。4.根据权利要求1-3任一所述的方法,其特征在于,所述接入节点调整所述冲突具体为:所述接入节点根据冲突调整策略向所述存储节点发送第三数据更新请求,所述第三数据更新请求中包含需要调整的偏序关系;所述存储节点接收到所述第三数据更新请求之后,根据所述需要调整的偏序关系更新所述存储节点中的所述数据。5.根据权利要求4所述的方法,其特征在于,所述冲突调整策略包括存储节点优先级策略和偏序关系优先级策略;所述存储节点优先级策略为以优先级高的存储节点的偏序关系来调整优先级低的存储节点中的数据;所述偏序关系优先级策...

【专利技术属性】
技术研发人员:钟延辉
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1