CN106802939A - 一种解决数据冲突的方法和系统 - Google Patents

一种解决数据冲突的方法和系统 Download PDF

Info

Publication number
CN106802939A
CN106802939A CN201611257463.1A CN201611257463A CN106802939A CN 106802939 A CN106802939 A CN 106802939A CN 201611257463 A CN201611257463 A CN 201611257463A CN 106802939 A CN106802939 A CN 106802939A
Authority
CN
China
Prior art keywords
data
memory node
node
partial ordering
ordering relation
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
Application number
CN201611257463.1A
Other languages
English (en)
Other versions
CN106802939B (zh
Inventor
钟延辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201611257463.1A priority Critical patent/CN106802939B/zh
Publication of CN106802939A publication Critical patent/CN106802939A/zh
Priority to PCT/CN2017/094317 priority patent/WO2018120810A1/zh
Application granted granted Critical
Publication of CN106802939B publication Critical patent/CN106802939B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种解决数据冲突的方法和系统
技术领域
本申请涉及通信技术领域,尤其涉及一种解决数据冲突的方法和系统。
背景技术
当前双活或者多活系统,允许数据从两个或者多个节点写入,同时需要将写入的数据复制到其它节点中,使得多个节点上的数据达到一致。
当多个节点同时对一份数据进行修改时,由于写入时序和网络、磁盘等原因造成写入先后顺序的不一致,出现数据冲突,从而多节点都写入成功的情况下,数据在多个节点上处于不一致的状态,导致从不同节点读取出来的数据不一样。例如,三个节点分别对C进行修改,由于写入顺序不一致,导致三个节点最终的数据不相同。
现有技术为了处理这种从多个节点同时写入数据导致数据冲突,造成多节点间数据不一致的场景,提出了两种比较通用的解决方法。
第一种解决方法是利用分布式锁来解决多个节点之间数据冲突的问题。向节点写入数据时先向分布式锁服务器申请锁,写完数据后再释放锁。这种方式能够保证同一份数据的修改在不同节点操作串行进行,从而保证了不会出现多节点数据不一致的情况。例如Node1、Node2和Node3上都存储有数据C,现在三个节点需要分别对数据C进行修改时,Node1先向分布式锁服务器申请到数据C的锁,则三个节点都修改为C1,然后Node2向分布式锁服务器申请到数据C的锁,则三个节点都修改为C2,最后Node3向分布式锁服务器申请到C的锁,则三个节点都修改为C3。最后三个节点中的数据一致,都为C3。不过此方法在没有写冲突时会产生无效的锁申请,导致系统整体性能下降。
第二种解决方法是采用优先级锁来解决多个节点之间数据冲突的问题。在配置系统中各个节点的多活关系时,确定各个节点的优先级,当往节点中写入数据时首先向分布式锁服务器尝试去申请锁(try lock),试锁申请成功后,各个节点并发写入数据。当有写入冲突出现死锁时根据各个节点的优先级强制解除优先级低的节点的锁,待优先级高的节点写完数据之后优先级较低的节点对应的数据进行重写。当系统中的节点数量较多形成集群时,锁申请成为一个集群内的分布式锁,导致系统的性能下降,通用性不好。
发明内容
本申请提供一种解决数据冲突的方法系统,。
第一方面,提供一种多活系统中解决数据冲突的方法,多活系统包含接入节点和存储节点,方法包括:接入节点接收客户端发送的第一数据更新请求,并对第一数据更新请求生成一个全球唯一的版本号;接入节点向存储节点发送第二数据更新请求,第二数据更新请求中携带所述版本号;存储节点根据第二数据更新请求更新对应的数据,更新偏序关系,并向接入节点返回所述偏序关系;其中,偏序关系用于记录存储节点接收到的数据更新请求的版本号的先后顺序;接入节点获取所述存储节点返回的偏序关系,判断存储节点中的所述数据是否存在冲突;当存储节点中的所述数据存在冲突时,接入节点调整所述冲突。
这样,只有当存储节点中的数据存在冲突时,接收节点才调整数据存在的冲突,当存储节点中的数据不存在冲突时,接收节点正常执行数据更新操作,大大提高了了数据的更新效率。
在一种可能的设计中,接入节点判断存储节点中的数据是否存在冲突具体为:当获取到的存储节点的偏序关系不一致时,接入节点判断所述存储节点中的所述数据存在冲突。
通过增加数据操作请求的版本号的偏序关系,接入节点可以根据偏序关系来判断存储节点中的数据是否一致,能够快速的识别出存储节点中存在的数据冲突,提高系统的性能。
在一种可能的设计中,接入节点判断存储节点中的数据是否存在冲突具体为:当接收到的存储节点的偏序关系不一致时,在预定的时间周期内接入节点重新获取所述存储节点的偏序关系,当重新获取的所述存储节点的偏序关系不一致时,接入节点判断存储节点中的数据存在冲突。
由于各个存储节点接收数据更新请求的顺序和时间不完全一致,因此不同时间获取的偏序关系可能会不同。并且当不同存储节点的偏序关系不相同时,可能有接收节点会调整数据冲突,因此可以设定一个时间周期,在设定的时间周期内,接收节点可以多次获取存储节点的偏序关系进行比较,而不是一发现偏序关系不一致就马上进行调整,以提高解决数据冲突的效率。
在一种可能的设计中,接入节点调整所述冲突具体为:接入节点根据冲突调整策略向存储节点发送第三数据更新请求,第三数据更新请求中包含需要调整的偏序关系;存储节点接收到第三数据更新请求之后,根据需要调整的偏序关系更新存储节点中的数据。
在一可能的设计中,冲突调整策略包括存储节点优先级策略和偏序关系优先级策略。存储节点优先级策略为以优先级高的存储节点的偏序关系来调整优先级低的存储节点中的数据。偏序关系优先级策略为按所述偏序关系中的版本号的大小顺序调整所述存储节点中的所述数据。
存储节点中数据冲突的解决需要有一致的策略,这样能够在确定存在冲突以后快速的解决。冲突调整策略的具体内容和实现在上文实施例中已有详细的说明和举例,在本实施例中不再另行说明。
第二方面,提供一种多活系统,所述多活系统中包含多个接入节点和多个存储节点,接入节点与客户端连接,接入节点用于接收客户端发送的第一数据更新请求,并对第一数据更新请求生成一个全球唯一的版本号;向存储节点发送第二数据更新请求,第二数据更新请求中携带所述版本号;存储节点用于根据第二数据更新请求更新对应的数据,更新偏序关系,并向接入节点返回所述偏序关系;其中,偏序关系用于记录存储节点接收到的数据更新请求的版本号的先后顺序;接入节点还用于获取存储节点返回的偏序关系,判断存储节点中的数据是否存在冲突;当存储节点中的数据存在冲突时,调整所述冲突。
在一种可能的设计中,接入节点用于判断所述存储节点中的述数据是否存在冲突具体为:当获取到的存储节点的偏序关系不一致时,判断所述存储节点中的所述数据存在冲突。
在一种可能的设计中,接入节点用于判断存储节点中的数据是否存在冲突具体为:当接收到的存储节点的偏序关系不一致时,在预定的时间周期内接入节点重新获取存储节点的偏序关系,当重新获取的所述存储节点的偏序关系不一致时,判断存储节点中的所述数据存在冲突。
在一种可能的设计中,接入节点用于调整所述冲突具体为:
根据冲突调整策略向存储节点发送第三数据更新请求,第三数据更新请求中包含需要调整的偏序关系;其中,冲突调整策略包括存储节点优先级策略和偏序关系优先级策略;存储节点还用于接收到第三数据更新请求之后,根据需要调整的偏序关系更新存储节点中的所述数据。
在一种可能的设计中,接入节点和存储节点位于同一物理设备中。
第三方面,提供一种解决数据冲突的装置,包括处理器,通信总线、存储器和通信接口,处理器用于执行上述的解决数据冲突的方法,在此不再另行说明。
另外,第二方面和第三方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的多活系统的结构示意图;
图2为本申请实施例提供的解决数据冲突的方法流程示意图;
图3为本申请实施例提供的的解决数据冲突的装置的结构示意图。
具体实施方式
本发明实施例提供一种解决数据冲突的方法和系统,可以快速识别数据冲突并解决数据冲突,系统的写入性能更高。
本发明实施例涉及双活或者多活系统,在本发明实施例中,以多活系统为例来进行说明。如附图1所示,多活系统10分为三个逻辑层:客户端层11,接入节点层12和存储节点层13。
客户端层11:用户通过客户端输入数据,客户端把数据发送给接收节点。
接收节点层12:接收客户端发送的数据,并把接收的数据写入存储节点中。
存储节点层13:存储数据。
在物理上客户端、接入节点和存储节点可以在同一个物理设备(例如节点设备)上,也可以在不同的物理设备上,在本发明实施例中不做限定。
发明人在发明过程中发现:在双活和多活场景下虽然允许从多个节点同时写入数据,但是多个节点同时对同一份数据进行更新操作的概率不大。现有技术中为了防止多个节点同时对同一份数据进行更新的操作,对每一次的数据操作都假设有其他节点在对同一份数据进行更新操作,造成正常场景下多个节点不对同一份数据进行更新的操作的写性能低。
因此,在本发明中,首先认为节点对数据进行更新操作时绝大多数是没有冲突的,多个节点对同一份数据同时进行更新操作的概率小。因此,多活系统中对数据进行更新操作时先将数据写入存储节点,数据写入后发现有冲突再解决数据冲突。
以附图1所示的系统架构示意图为例,多活系统中接收节点层包括接收节点1和接收节点2,存储节点层包括存储节点1和存储节点2。接收节点1可以更新存储节点1和存储节点2中的数据;接收节点2可以更新存储节点1和存储节点2中的数据。本发明实施例中的接收节点和存储节点的数量仅为示例性说明,接收节点和存储节点的数量可以根据业务或者用户的需求来设定。
下文将描述在附图1所示的多活系统中本发明实施例提出的解决数据冲突的方法。
为了便于说明,存储节点1上已经存储有数据,为了与存储节点1中其他的数据区分,将存储节点中已经存储的数据称为V1,数据V1的键值(key)为K1,版本号为Ver1,为了和后续更新的数据区别,将存储节点1中的该数据记录为K1(V1,[Ver1])。存储节点2中存储的数据V1与存储节点1中的数据V1相同,也记录为K1(V1,[Ver1])。存储节点3中存储的数据V1与存储节点1中的数据V1相同,也记录为K1(V1,[Ver1])。
其中,版本号是接收节点接收到数据操作指令时为数据分配的全球唯一的版本号,并且和数据一起存储到存储节点中。版本号可以用于区不同的数据更新操作。在本发明实施例中,为了便于识别,将版本号记录为Ver1,实际应用中,版本号可以是多个字母和/或数字的组合。版本号的计算可以利用现有的算法实现,在本发明实施例中不再另行描述。
现在,有多个系统对数据K1进行更新操作。例如客户端1对数据K1对更新,更新的数据为V2。客户端2对数据K1对应的数据进行更新,更新的数据为V3。本发明实施例提供的解决数据冲突的方法如下文所述,如附图2所示。
步骤201:接入节点接收客户端发送的数据更新请求,并对所述数据更新操作生成一个全球唯一的版本号。
将客户端发送给接入节点的数据更新请求称为第一数据更新请求,以和下文的其他数据更新请求相区分
该版本号用于识别数据更新请求,由于版本号是全球唯一的版本号,因此每一次数据更新请求都可以与其他的数据更新请求相区别。
例如,接入节点1接收到客户端1的数据更新请求put(k1,V2),即对数据K1数据进行更新,更新的数据内容为V2,接入节点1为此次数据更新请求生成全局唯一的版本号Ver2。接入节点2接收到客户端2的数据更新请求put(k1,V3),即对数据K1进行更新,更新的数据内容为V3,接入节点为此次数据更新请求接入生成全局唯一的版本号Ver3。
步骤203:接入节点向存储节点发送数据更新请求,数据更新请求中包含所述版本号。
接入节点向存储节点发送的数据更新请求中包含的内容不相同,为了以示区别,将这里的数据更新请求称为第二数据更新请求。第二数据更新请求中包含了接入节点为第一数据更新请求生成的版本号。
接入节点接收到客户端发送的第一数据更新请求后,为第一数据更新请求生成一个全球唯一的版本号,向存储节点发送包含了该版本号的第二数据更新请求。多活系统中会包含多个接入节点和多个存储节点,因此接入节点会把第二数据更新请求发送给多活系统中的所有的存储节点,以此保证这些存储节点中的数据保持一致。
例如,接入节点1分别向存储节点1、存储节点2和存储节点3发送包含了版本号的数据更新请求put(K1,V2,Ver2)。接入节点2分别向存储节点1、存储节点2和存储节点3发送包含了数据和数据版本号数据更新请求put(K1,V3,Ver3)。
步骤205:存储节点根据第二数据更新请求对对应的数据进行更新,记录偏序关系,并向接入节点返回该偏序关系。偏序关系用于记录该存储节点接收到的数据更新请求的版本号的先后顺序。
存储节点接收到接入节点发送的包含了版本号的数据更新请求之后,根据数据更新请求中的key值找到对应的数据,并按接收到数据更新请求的顺序对数据进行更新操作,记录数据更新请求的版本号的先后顺序,即偏序关系,将偏序关系返回给接入节点。
偏序关系用于记录存储节点接收到的数据更新请求的版本号的先后顺序。存储节点接收到数据更新请求之后更新一次数据即相应的更新一次偏序关系。因此在不同的时间获取到的偏序关系有可能不同。
另外,偏序关系中的版本号信息可以按一定的规则老化,比如当偏序关系中的版本号信息达到一定数量时,将最早的版本号信息从偏序关系中删除;或者当系统中所有存储节点中同一数据的偏序关系中的某些版本号信息的顺序完全一致时,可以将这部份顺序完全相同的版本号信息从偏序关系中删除。在本申请实施例中,不涉及偏序关系的老化,因此不再详细描述。
在本申请实施例中,由于接入节点1和接入节点2是并发向存储节点写入数据的,因此各个存储节点接收到的对同一数据的数据更新请求的顺序可能是一样的,也可以是不一样的。因此存储节点的偏序关系可能相同也可能不相同。
例如:存储节点1先接收到接入节点1发送的对数据K1的数据更新请求put(K1,V2,Ver2),即需要对数据K1进行更新操作,更新的数据内容为V2,数据更新请求的版本号为Ver2。如上文所述,存储节点1中已经有数据K1的版本号为Ver1,存储节点1根据V2对数据K1进行更新之后,更新偏序关系为[Ver2<-Ver1],返回给接入节点1的偏序关系为[Ver2,Ver1]。存储节点1接收到接入节点2发送的对数据K1的数据更新请求put(K1,V3,Ver3),即存储节点1对数据K1进行更新操作数据内容为V3,数据更新请求的版本号为Ver3;存储节点1对数据K1根据V3更新之后,更新偏序关系为[Ver3<-Ver2<-Ver1],返回给接入节点2的偏序关系为[Ver3,Ver2,Ver1]。
存储节点2先接收到接入节点2发送的对数据K1的数据更新请求put(K1,V3,Ver3),即存储节点2对数据K1进行更新操作数据内容为V3,数据更新请求版本号为Ver3;存储节点2对数据K1根据V3更新之后,更新偏序关系为[Ver3<-Ver1],返回给接入节点2的偏序关系为[Ver3,Ver1]。存储节点2接收到接入节点1发送的对数据K1的数据更新请求put(K1,V2,Ver2),即需要对数据K1进行更新操作,更新的数据内容为V2,数据更新请求的版本号为Ver2。存储节点2对数据K1根据V3更新之后,更新偏序关系为[Ver2<-Ver3<-Ver1],返回给接入节点1的偏序关系为[Ver2,Ver3,Ver1]。
步骤207:接入节点获取存储节点返回的偏序关系,判断存储节点中的数据是否存在冲突。
在本申请实施例中,存储节点在对数据进行更新操作后更新了偏序关系,因此偏序关系可以体现存储节点中对同一数据的更新顺序。因此接收节点可以根据系统中的多个存储节点返回的同一数据的偏序关系是否一致来判断系统中的多个存储节点中的同一数据是否有冲突。
判断存储节点返回的偏序关系是否一致的方法如下:
1)系统中存储节点返回的偏序关系相同,也就是说这些存储节点对同一数据的更新的顺序是相同的,此时这些存储节点中存储的同一数据的内容相同,没有冲突。
b)系统中存储节点返回的偏序关系不相同,则说明各个存储节点对同一数据的更新的顺序不相同,此时这些存储节点中存储的同一数据的内容不相同,有冲突。
可选的,当存储节点返回的偏序关系不相同时,考虑到各个存储节点接收到的数据更新请求的顺序不完全一样,因此可以设定一个时间周期,在设定的时间周期内接入节点多次获取存储节点的偏序关系,以最后获取的偏序关系来来确定存储节点中存储的同一数据是否存在冲突。
可选的,当多个存储节点返回的偏序关系不相同时,还可以进一步判断偏序关系中的第一个版本号是否相同,当偏序关系中的第一个版本号相同时,还可以选择偏序关系中版本号少的存储节点再次获取偏序关系进行比较。
以上述例子中存储节点1和存储节点2的偏序关系为例进行说明。
接入节点1接收到的存储节点1返回的数据K1的偏序关系为[Ver2,Ver1],接入节点1接收到的存储节点2返回的数据K1的偏序关系为[Ver3,Ver1]。接入节点1判断存储节点1和存储节点2返回的偏序关系不相同。此时可以确定存储节点1和存储节点2中存储的数据K1不一致,有冲突。可选的,如果设定有偏序关系的获取时间,若还在偏序关系获取时间的时间范围内,接入节点1可以再次从存储节点1和存储节点2获取数据K1的偏序关系。在本申请实施例中,接入节点1再次从存储节点1获取的偏序关系为[Ver3,Ver2,Ver1],此时如存储节点2返回的偏序关系还没更新,还是[Ver3,Ver1]。接入节点1确认存储节点1和存储节点2返回的偏序关系不相同,此时可以确定存储节点1和存储节点2中存储的数据K1不一致,有冲突。
可选的,接入节点1判断存储节点1和存储节点2的偏序关系不相同,但是此时两个偏序关系的第一个版本号相同,都是Ver3;而存储节点2的偏序关系中的版本号的数量较少,接入节点1再从存储节点2获取偏序关系,此时存储节点2的偏序关系为[Ver2<-Ver3<-Ver1],接入节点1确认存储节点1和存储节点2返回的偏序关系不相同,此时可以确定存储节点1和存储节点2中存储的数据K1不一致,有冲突。
可选的,接入节点1判断存储节点1和存储节点2的偏序关系不相同,若设定有偏序关系的获取时间,且还在偏序关系获取时间的时间段内,接入节点1可以再从存储节点1和存储节点2读取数据K1的偏序关系。当接入节点1从存储节点1获取的数据K1的偏序关系为[Ver3,Ver2,Ver1],从存储节点2获取的数据K1的偏序关系为[Ver2,Ver3,Ver1]。此时接入节点1判断存储节点1上存储的数据K1与存储节点2上存储的数据K1不一致,有冲突。
类似的,接入节点2从存储节点1和存储节点2接收到的偏序关系的判断与上述接入节点1的判断方法相同,在此不再另行说明。
步骤209:当存储节点中的所述数据存在冲突时,接入节点调整所述数据存在的冲突。
当接入节点确定系统的存储节点上存储的同一数据存在冲突时,需要调整冲突。
本申请实施例提供两种调整数据冲突的策略作为示例性说明。在实际应用中,也可以采用其他的策略,只要系统中的接入节点共同遵守即可。
第一种按照存储节点优先级策略。设定系统中的存储节点的优先级,当存储节点中的数据存在冲突时,以优先级高的存储节点的数据为准来调整数据冲突。例如上文所述,接入节点1从存储节点1获取的数据K1的偏序关系为[Ver2,Ver1],从存储节点2获取的数据K1的偏序关系为[Ver2,Ver3,Ver1]。根据上文所述的方法,接入节点1从存储节点1获取的数据K1的偏序关系与从存储节点2获取的数据K1的偏序关系不相同,并且偏序关系中的第一个版本号都是Ver2,接入节点1再获取存储节点1的偏序关系,得到新的偏序关系[Ver3,Ver2,Ver1];接入节点确定存储节点1和存储节点2中的数据K1有冲突。根据存储节点的优先级来调整的策略,存储节点1的优先级高于存储节点2的优先级,接入节点1以存储节点1中的数据来调整存储节点2中的数据。接入节点1向存储节点2发送数据更新请求put(K1,V3,Ver3<-Ver2),请求中携带需要调整的偏序关系。存储节点2接收到数据更新请求之后,对存储的数据进行调整,并更新偏序关系。接入节点2也会从存储节点1和存储节点2获取数据K1的偏序关系,处理方法与接入节点1的处理方法相同。接入节点2从存储节点2获取的偏序关系可能是接入节点1调整后的偏序关系,这时接入节点2获取的存储节点1和存储节点2的偏序关系就是相同的,即存储节点1和存储节点2中的数据K1不存在冲突。接入节点2的的处理方法与接入节点1的处理方法相同,不再另行说明。
第二种是偏序关系优先级策略,就是按偏序关系中版本号的大小顺序调整存储节点中的数据的冲突。由于偏序关系表示了数据更新请求的版本号的先后顺序,因此存储节点先写入的版本号可能会比后写入的版本大号。在此策略下,以偏序关系中版本号按从大到小排列的偏序关系为准来调整数据冲突。例如上文所述,接入节点1从存储节点1获取的数据K1的偏序关系为[Ver3,Ver2,Ver1],从存储节点2获取的数据K1的偏序关系为[Ver2,Ver3,Ver1]。接入节点1从存储节点1返回的数据K1的偏序关系中版本号是从大到小排列的,因此以存储节点1中的数据不变,并且根据存储节点1中数据K1的偏序关系来调整存储节点2中的数据K1,使得存储节点1和存储节点2中的数据一致。接入节点1向存储节点2发送数据更新请求,请求中携带需要调整的偏序关系。存储节点2接收到数据更新请求之后,并根据需要调整的偏序关系对存储的数据进行调整。接入节点2的处理方法与接入节点1的处理方法相同,不再另行说明。
当存储节点中的所述数据没有冲突,接入节点则不做处理,继续正常处理业务。
本发明实施例还提供一种解决数据冲突的多活系统,多活系统的架构如附图1所示。
多活系统分为三个逻辑层:客户端层11,接入节点层12和存储节点层13。
客户端层11:包括多个客户端。附图1中示例性给出两个客户端,客户端1和客户端2。客户端用于向接收节点发送第一数据更新请求。
接收节点层12:包括多个接收节点。附图1中示例性的给出两个接收节点,接收节点1和接收节点2。
存储节点层13:包括多个存储节点,附图1中示例性的给出两个存储节点,存储节点1和存储节点2。
接收节点用于接收客户端发送的第一数据更新请求,对所述第一数据更新请求生成一个全球唯一的版本号;并向存储节点发送第二数据更新请求,第二数据更新请求中携带有该版本号。
存储节点用于根据第二数据更新请求更新对应的数据,并更新偏序关系,并向接收节点返回该偏序关系;其中,偏序关系用于记录所述存储节点接收到的数据更新请求的版本号的先后顺序。
接收节点还用于获取所述存储节点返回的偏序关系,判断存储节点中的数据是否存在冲突;当存储节点中的数据存在冲突时,调整数据存在的冲突。
接收节点和存储节点的具体实现过程以及偏序关系的产生和更新已在上文方法实施例中进行了详细的解释和说明,在此不再另行说明。
这样,只有当存储节点中的数据存在冲突时,接收节点才调整数据存在的冲突,当存储节点中的数据不存在冲突时,接收节点正常执行数据更新操作,大大提高了了数据的更新效率。
接入节点用于判断存储节点中的所述数据是否存在冲突具体可以为:当获取到的存储节点的偏序关系不一致时,接入节点判断所述存储节点中的所述数据存在冲突。
通过增加数据操作请求的版本号的偏序关系,接入节点可以根据偏序关系来判断存储节点中的数据是否一致,能够快速的识别出存储节点中存在的数据冲突,提高系统的性能。
可选的,接入节点用于判断存储节点中的所述数据是否存在冲突具体还可以为:当接收到的存储节点的偏序关系不一致时,在预定的时间周期内所述接入节点重新获取存储节点的偏序关系,当所述重新获取的所述存储节点的偏序关系不一致时,所述接入节点判断所述存储节点中的所述数据存在冲突。
由于各个存储节点接收数据更新请求的顺序和时间不完全一致,因此不同时间获取的偏序关系可能会不同。并且当不同存储节点的偏序关系不相同时,可能有接收节点会调整数据冲突,因此可以设定一个时间周期,在设定的时间周期内,接收节点可以多次获取存储节点的偏序关系进行比较,而不是一发现偏序关系不一致就马上进行调整,以提高解决数据冲突的效率。具体设定时间周期的长短,可以根据业务的类型、系统的负载或者用户的需求来设定。
接收节点判断存储节点中的同一是否存在冲突在上文方法实施例中已经进行了详细的举例和说明,在本发明实施例中不再另行说明。
接入节点用于调整所述冲突具体为:接入节点用于根据冲突调整策略向存储节点发送第三数据更新请求,第三数据更新请求中包含需要调整的偏序关系;
存储节点还用于接收到第三数据更新请求之后,根据需要调整的偏序关系更新存储节点中的数据。
冲突调整策略包括存储节点优先级策略和偏序关系优先级策略。存储节点优先级策略为以优先级高的存储节点的偏序关系来调整优先级低的存储节点中的数据。所述偏序关系优先级策略为按所述偏序关系中的版本号的大小顺序调整所述存储节点中的所述数据。
存储节点中数据冲突的解决需要有一致的策略,这样能够在确定存在冲突以后快速的解决。冲突调整策略的具体内容和实现在上文实施例中已有详细的说明和举例,在本实施例中不再另行说明。
接入节点和存储节点可以在同一个物理设备(例如节点设备)上,也可以在不同的物理设备上,在本发明实施例中不做限定。
结合本文中所公开的实施例描述的各示例的单元及方法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
如图3所示,为本申请实施例提供的一种解决数据冲突的装置的硬件结构示意图,该解决数据冲突的装置300包括至少一个处理器301,通信总线302,存储器303以及至少一个通信接口304。
处理器301可以是一个通用中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(Application-Specific Integrated Circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线302可包括一通路,在上述组件之间传送信息。
通信接口304,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(Radio Access Network,RAN),无线局域网(Wireless Local AreaNetworks,WLAN)等。
存储器303可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器303用于存储执行本申请方案的应用程序代码,并由处理器301来控制执行。处理器301用于执行存储器33中存储的应用程序代码,从而实现上述实施例中所述的在多CPU系统中分配资源的方法。
在具体实现中,作为一种实施例,处理器301可以包括一个或多个CPU,例如图3中的CPU0和CPU1。
在具体实现中,作为一种实施例,解决数据冲突的装置300可以包括多个处理器,例如图3中的处理器301和处理器308。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,解决数据冲突的装置300还可以包括输出设备305和输入设备306。输出设备305和处理器301通信,可以以多种方式来显示信息。例如,输出设备305可以是液晶显示器(Liquid Crystal Display,LCD),发光二级管(LightEmitting Diode,LED)显示设备,阴极射线管(Cathode Ray Tube,CRT)显示设备,或投影仪(projector)等。输入设备306和处理器301通信,可以以多种方式接受用户的输入。例如,输入设备806可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的解决数据冲突的装置300可以是一个通用服务器或者是一个专用服务器。在具体实现中,解决数据冲突的装置300可以是台式机、便携式电脑、网络服务器、掌上电脑(Personal Digital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图3中类似结构的设备。本申请实施例不限定解决数据冲突的装置300的类型。
由于本申请实施例提供的解决数据冲突的装置可用于执行上述在多CPU系统中分配资源的方法,因此其所能获得的技术效果可参考上述方法实施例,本申请实施例在此不再赘述。
本申请实施例还提供了一种计算机存储介质,用于储存为上述解决数据冲突的装置所用的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。通过执行存储的程序,可以在多CPU系统中实现资源分配的方法。
本申请实施例还提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述方法实施例的流程。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
本领域技术人员应明白,本申请的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机程序存储/分布在合适的介质中,与其它硬件一起提供或作为硬件的一部分,也可以采用其他分布形式,如通过Internet或其它有线或无线电信系统。
本申请是参照本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种多活系统中解决数据冲突的方法,其特征在于,所述多活系统包含接入节点和存储节点,所述方法包括:
所述接入节点接收客户端发送的第一数据更新请求,并对所述第一数据更新请求生成一个全球唯一的版本号;
所述接入节点向所述存储节点发送第二数据更新请求,所述第二数据更新请求中携带所述版本号;
所述存储节点根据所述第二数据更新请求更新对应的数据,更新偏序关系,并向所述接入节点返回所述偏序关系;其中,所述偏序关系用于记录所述存储节点接收到的数据更新请求的版本号的先后顺序;
所述接入节点获取所述存储节点返回的偏序关系,判断存储节点中的所述数据是否存在冲突;
当存储节点中的所述数据存在冲突时,所述接入节点调整所述冲突。
2.根据权利要求1所述的方法,其特征在于,所述接入节点判断所述存储节点中的所述数据是否存在冲突具体为:
当获取到的存储节点的偏序关系不一致时,所述接入节点判断所述存储节点中的所述数据存在冲突。
3.根据权利要求1所述的方法,其特征在于,所述接入节点判断所述存储节点中的所述数据是否存在冲突具体为:
当接收到的存储节点的偏序关系不一致时,在预定的时间周期内所述接入节点重新获取所述存储节点的偏序关系,当所述重新获取的所述存储节点的偏序关系不一致时,所述接入节点判断所述存储节点中的所述数据存在冲突。
4.根据权利要求1-3任一所述的方法,其特征在于,所述接入节点调整所述冲突具体为:
所述接入节点根据冲突调整策略向所述存储节点发送第三数据更新请求,所述第三数据更新请求中包含需要调整的偏序关系;
所述存储节点接收到所述第三数据更新请求之后,根据所述需要调整的偏序关系更新所述存储节点中的所述数据。
5.根据权利要求4所述的方法,其特征在于,所述冲突调整策略包括存储节点优先级策略和偏序关系优先级策略;所述存储节点优先级策略为以优先级高的存储节点的偏序关系来调整优先级低的存储节点中的数据;所述偏序关系优先级策略为按所述偏序关系中的版本号的大小顺序调整所述存储节点中的所述数据。
6.一种多活系统,所述多活系统中包含多个接入节点和多个存储节点,所述接入节点与客户端连接,其特征在于,
所述接入节点用于接收客户端发送的第一数据更新请求,并对所述第一数据更新请求生成一个全球唯一的版本号;向所述存储节点发送第二数据更新请求,所述第二数据更新请求中携带所述版本号;
所述存储节点用于根据所述第二数据更新请求更新对应的数据,更新偏序关系,并向所述接入节点返回所述偏序关系;其中,所述偏序关系用于记录所述存储节点接收到的数据更新请求的版本号的先后顺序;
所述接入节点还用于获取所述存储节点返回的偏序关系,判断所述存储节点中的所述数据是否存在冲突;当存储节点中的所述数据存在冲突时,调整所述冲突。
7.根据权利要求6所述的系统,其特征在于,所述接入节点用于判断所述存储节点中的所述数据是否存在冲突具体为:
当获取到的存储节点的偏序关系不一致时,判断所述存储节点中的所述数据存在冲突。
8.根据权利要求6所述的系统,其特征在于,所述接入节点用于判断所述存储节点中的所述数据是否存在冲突具体为:
当接收到的存储节点的偏序关系不一致时,在预定的时间周期内所述接入节点重新获取所述存储节点的偏序关系,当所述重新获取的所述存储节点的偏序关系不一致时,判断所述存储节点中的所述数据存在冲突。
9.根据权利要求6-8任一所述的系统,其特征在于,
所述接入节点用于调整所述冲突具体为:
根据冲突调整策略向所述存储节点发送第三数据更新请求,所述第三数据更新请求中包含需要调整的偏序关系;其中,所述冲突调整策略包括存储节点优先级策略和偏序关系优先级策略;
所述存储节点还用于接收到所述第三数据更新请求之后,根据所述需要调整的偏序关系更新所述存储节点中的所述数据。
10.根据权利要求6-9任一所述的系统,其特征在于,所述接入节点和所述存储节点位于同一物理设备中。
CN201611257463.1A 2016-12-30 2016-12-30 一种解决数据冲突的方法和系统 Active CN106802939B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201611257463.1A CN106802939B (zh) 2016-12-30 2016-12-30 一种解决数据冲突的方法和系统
PCT/CN2017/094317 WO2018120810A1 (zh) 2016-12-30 2017-07-25 一种解决数据冲突的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611257463.1A CN106802939B (zh) 2016-12-30 2016-12-30 一种解决数据冲突的方法和系统

Publications (2)

Publication Number Publication Date
CN106802939A true CN106802939A (zh) 2017-06-06
CN106802939B CN106802939B (zh) 2020-04-03

Family

ID=58985182

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611257463.1A Active CN106802939B (zh) 2016-12-30 2016-12-30 一种解决数据冲突的方法和系统

Country Status (2)

Country Link
CN (1) CN106802939B (zh)
WO (1) WO2018120810A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018120810A1 (zh) * 2016-12-30 2018-07-05 华为技术有限公司 一种解决数据冲突的方法和系统
CN109213769A (zh) * 2017-06-30 2019-01-15 华为技术有限公司 一种数据对象的数据冲突识别方法
CN110851243A (zh) * 2019-11-05 2020-02-28 东软集团股份有限公司 流程访问控制方法、装置、存储介质及电子设备
CN111078659A (zh) * 2019-12-20 2020-04-28 腾讯科技(深圳)有限公司 模型更新方法、装置、计算机可读存储介质和计算机设备
CN112115304A (zh) * 2019-06-20 2020-12-22 百度(中国)有限公司 偏序数据的处理方法、装置、系统及存储介质
US10891074B2 (en) 2017-09-20 2021-01-12 Samsung Electronics Co., Ltd. Key-value storage device supporting snapshot function and operating method thereof
CN115794853A (zh) * 2023-02-03 2023-03-14 天翼云科技有限公司 政务数据资源目录的更新方法、装置、电子设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467265B1 (en) * 2005-06-30 2008-12-16 Symantec Operating Corporation System and method for block conflict resolution within consistency interval marker based replication
CN103036717A (zh) * 2012-12-12 2013-04-10 北京邮电大学 分布式数据的一致性维护系统和方法
CN104394195A (zh) * 2014-10-31 2015-03-04 杭州华为企业通信技术有限公司 数据更新方法及装置
CN104750738A (zh) * 2013-12-30 2015-07-01 中国移动通信集团公司 一种更新数据信息的方法、数据节点、管理节点及系统
US9208167B1 (en) * 2014-09-04 2015-12-08 Edifire LLC Distributed data synchronization and conflict resolution
CN106250322A (zh) * 2016-08-12 2016-12-21 华为技术有限公司 一种写数据的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106802939B (zh) * 2016-12-30 2020-04-03 华为技术有限公司 一种解决数据冲突的方法和系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467265B1 (en) * 2005-06-30 2008-12-16 Symantec Operating Corporation System and method for block conflict resolution within consistency interval marker based replication
CN103036717A (zh) * 2012-12-12 2013-04-10 北京邮电大学 分布式数据的一致性维护系统和方法
CN104750738A (zh) * 2013-12-30 2015-07-01 中国移动通信集团公司 一种更新数据信息的方法、数据节点、管理节点及系统
US9208167B1 (en) * 2014-09-04 2015-12-08 Edifire LLC Distributed data synchronization and conflict resolution
CN104394195A (zh) * 2014-10-31 2015-03-04 杭州华为企业通信技术有限公司 数据更新方法及装置
CN106250322A (zh) * 2016-08-12 2016-12-21 华为技术有限公司 一种写数据的方法和装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018120810A1 (zh) * 2016-12-30 2018-07-05 华为技术有限公司 一种解决数据冲突的方法和系统
CN109213769A (zh) * 2017-06-30 2019-01-15 华为技术有限公司 一种数据对象的数据冲突识别方法
US10891074B2 (en) 2017-09-20 2021-01-12 Samsung Electronics Co., Ltd. Key-value storage device supporting snapshot function and operating method thereof
CN112115304A (zh) * 2019-06-20 2020-12-22 百度(中国)有限公司 偏序数据的处理方法、装置、系统及存储介质
CN110851243A (zh) * 2019-11-05 2020-02-28 东软集团股份有限公司 流程访问控制方法、装置、存储介质及电子设备
CN110851243B (zh) * 2019-11-05 2022-04-12 东软集团股份有限公司 流程访问控制方法、装置、存储介质及电子设备
CN111078659A (zh) * 2019-12-20 2020-04-28 腾讯科技(深圳)有限公司 模型更新方法、装置、计算机可读存储介质和计算机设备
CN111078659B (zh) * 2019-12-20 2023-04-21 腾讯科技(深圳)有限公司 模型更新方法、装置、计算机可读存储介质和计算机设备
CN115794853A (zh) * 2023-02-03 2023-03-14 天翼云科技有限公司 政务数据资源目录的更新方法、装置、电子设备及介质

Also Published As

Publication number Publication date
CN106802939B (zh) 2020-04-03
WO2018120810A1 (zh) 2018-07-05

Similar Documents

Publication Publication Date Title
CN106802939A (zh) 一种解决数据冲突的方法和系统
KR102372423B1 (ko) 파라미터 공유 장치 및 방법
CN111344706B (zh) 管理区块链上的交易的方法和系统
EP2705433B1 (en) Method and system for dynamically creating and servicing master-slave pairs within and across switch fabrics of a portable computing device
CN110413685B (zh) 数据库服务切换方法、装置、可读存储介质和计算机设备
US20160019254A1 (en) Tiered data storage architecture
WO2022143242A1 (zh) 基于区块链的交易分发执行方法、装置服务器及存储介质
US9489409B2 (en) Rollover strategies in a N-bit dictionary compressed column store
US9805140B2 (en) Striping of directed graphs and nodes with improved functionality
US10235047B2 (en) Memory management method, apparatus, and system
CN101470667A (zh) Linux系统平台上指定地址范围分配物理内存的方法
CN109446114A (zh) 一种空间数据缓存方法、装置和存储介质
US9785551B2 (en) Memory access method, buffer scheduler and memory module
CN106936931A (zh) 分布式锁的实现方法、相关设备及系统
US10642817B2 (en) Index table update method, and device
CN113535087B (zh) 数据迁移过程中的数据处理方法、服务器及存储系统
US9898518B2 (en) Computer system, data allocation management method, and program
CN110162395B (zh) 一种内存分配的方法及装置
US11093291B2 (en) Resource assignment using CDA protocol in distributed processing environment based on task bid and resource cost
US8341368B2 (en) Automatic reallocation of structured external storage structures
US10901914B2 (en) Method for writing multiple copies into storage device, and storage device
CN112650449A (zh) 缓存空间的释放方法、释放系统、电子设备及存储介质
CN111857979A (zh) 一种分布式系统的信息管理方法、系统、存储介质及设备
WO2021051569A1 (zh) 一种数据隔离方法、装置、计算机设备及存储介质
US20060203813A1 (en) System and method for managing a main memory of a network server

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