WO2015062113A1 - 一种事务处理方法与装置 - Google Patents

一种事务处理方法与装置 Download PDF

Info

Publication number
WO2015062113A1
WO2015062113A1 PCT/CN2013/086572 CN2013086572W WO2015062113A1 WO 2015062113 A1 WO2015062113 A1 WO 2015062113A1 CN 2013086572 W CN2013086572 W CN 2013086572W WO 2015062113 A1 WO2015062113 A1 WO 2015062113A1
Authority
WO
WIPO (PCT)
Prior art keywords
coordinator
transaction
participant
conclusion
change information
Prior art date
Application number
PCT/CN2013/086572
Other languages
English (en)
French (fr)
Inventor
方新
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to JP2016526114A priority Critical patent/JP6231675B2/ja
Priority to CN201380002529.0A priority patent/CN104220982B/zh
Priority to EP13886150.5A priority patent/EP3026574B1/en
Priority to EP18177451.4A priority patent/EP3514693A1/en
Publication of WO2015062113A1 publication Critical patent/WO2015062113A1/zh
Priority to US14/733,705 priority patent/US9348841B2/en
Priority to US15/099,017 priority patent/US10055445B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/1865Transactional file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Abstract

本发明提供了一种应用于协调者的事务处理方法与装置,所述协调者和参与者通信连接,该方法包括:所述协调者向各个参与者发送查询消息;所述协调者根据所述响应消息得出结论,所述协调者执行所述结论,并将所述结论发送给所述参与者,所述结论包括下述至少一种:如果任意一个响应消息中携带有第一信息,则结论为执行事务,其中,所述第一信息表示所述参与者不存在所述事务ID,存在所述对象ID,所述对象在参与者中的变化信息与所述对象在协调者中的变化信息相同;如果任意一个响应消息中携带有第二信息,则结论为终止事务,其中,所述第二信息表示所述参与者不存在所述事务ID,存在所述对象ID,所述对象在参与者中的变化信息与所述对象在协调者的变化信息不同。

Description

一种事务处理方法与装置 本申请要求于 2013 年 10 月 29 日提交中国专利局、 申请号为 PCT/CN2013/086169,发明名称为"一种事务处理方法与装置"的中国专利申请的 优先权, 其全部内容通过引用结合在本申请中。 技术领域
本发明涉及信息技术领域, 特别涉及一种事务处理方法和装置。 背景技术
对象存储系统 ( Object-Based Storage System )是一种分布式存储系统, 由 多个基于对象的存储设备 OSD ( Object-based Storage Device)组成, OSD通过网 络互连, 0SD也可以称为对象存储系统中的节点。 在对象存储系统中, 以对象 ( Object )作为最基本的被存储内容单元, 对象中包含了数据以及数据的属性信 息。 数据指的是对象中存储的内容, 例如视频文件, 音乐文件等, 数据的的属 性信息例如文件的大小, 版本信息等。
为了存储的对象的可靠性,一般会将一个对象存储到不同的 0SD上,这样, 即使是一部分 0SD出现故障, 也不影响对象的读写操作。 这样, 就提升数据的 可靠性。 由于同一个对象需要备份多份后存储到不同节点, 也就说对象是跨多 个 0SD节点来存储, 这些备份数据也可以称为副本。 为了保证对象存储的一致 性要求, 对象的写操作需要通过事务来保证。 事务可以理解成是一组面向数据 变更的操作, 这组操中, 除非所有操作都成功, 否则不会对数据进行变更。 这 样就保证了同一个对象在不同 0SD上的副本是相同的, 避免了部分副本进行了 变更部分副本没有变更。
事务包含一系列操作集合, 这些操作经常由多个节点并行执行, 使分布在 多个节点的数据从一个一致状态转换到另一个一致状态 (在分布式对象存储系 统中, 意味着多个节点中的相同对象拥有相同的版本号), 组成事务的一系列操 作要么全部执行, 要么全部不执行, 从而保持节点上数据状态的一致性。 在非 存储领域, 也同样存在需要使用事务的情形。
现有的两阶段提交协议 ( Two-phase Commitment Protocol, 2PC ), 可以保证 分布式事务提交的原子性。 它把分布式事务的某一个 OSD 指定为协调者 (Coordinator) , 所有其他 OSD指定为参与者 (Participants)。 只有协调者才有掌握 提交或撤销事务的决定权, 并在做出提交或者撤销事务的结论后, 把结论发给 参与者。 如果结论是提交事务, 就发送 Commit消息; 如果结论是终止事务, 就 发送 Abort消息。 而各个参与者接收协调者的结论,按照结论在其本地数据库中 执行操作; 参与者还可以向协调者提出撤销或提交子事务的意向。
在参与者等待协调者的结论时, 如果协调者失效, 参与者会长时间等待协 调者的结论。 在等待期间, 各个参与者的事务无法结束, 也无法释放占用的资 源, 会造成了阻塞。 为了避免阻塞, 现有技术提出了一种状态确认技术, 通过 参与者查询其他参与者的事务状态, 确认自身是否需要执行事务, 但是在这种 方法中, 参与者之间交互过程过多, 造成系统性能下降。
即使协调者没有失效, 如何通过读取参与者的信息来获得事务的结论, 也 是一个需要解决的问题。
发明内容
本发明提供一种事务处理方法, 可以通过读取参与者的信息, 获得事务结 论。
第一方面, 本发明实施例提供一种事务处理方法, 应用于协调者, 所述协 调者和参与者通信连接, 事务操作的对象由多个子对象组成, 其中, 一个所述 子对象位于所述协调者中, 其他所述子对象分别位于不同的所述参与者中, 该 方法包括: 所述协调者向各个参与者发送查询消息, 所述查询消息中携带有事 务 ID、对象 ID以及所述对象的变化信息,其中所述事务 ID用于标记所述事务, 所述对象 ID用于标记所述对象, 所述变化信息与所述对象的内容对应, 不同所 述变化信息的所述对象的内容不同; 所述协调者接收各个参与者对所述查询消 息的响应消息; 所述协调者根据所述响应消息得出结论, 所述协调者执行所述 结论, 并将所述结论发送给所有所述参与者, 所述结论包括下述至少一种: 如 果任意一个响应消息中携带有第一信息, 则结论为执行事务, 其中, 所述第一 信息表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 所述对象在参与者 中的变化信息与所述对象在协调者中的变化信息相同; 或者, 如果任意一个响 应消息中携带有第二信息, 则结论为终止事务, 其中, 所述第二信息表示所述 参与者不存在所述事务 ID, 存在所述对象 ID, 所述对象在参与者中的变化信息 与所述对象在协调者的变化信息不同。
在第一方面的第一种实现方式中, 所述结论还包括下述至少一种: 如果所 有响应消息中均携带有第三信息, 则结论包括为执行事务, 其中, 所述第三信 息表示所述参与者存在所述事务 ID;如果任意一个响应消息中携带有第四信息, 则结论为执行事务, 其中, 第四信息表示所述参与者不存在所述事务 ID, 并且 所述参与者不存在所述对象 ID。
第二方面, 本发明实施例提供一种事务处理装置, 与参与者通信连接, 事 务操作的对象由多个子对象组成, 其中, 一个所述子对象位于所述事务处理装 置中, 其他所述子对象分别位于不同的所述参与者中, 该装置包括: 查询模块, 用于向各个参与者发送查询消息,所述查询消息中携带有事务 ID、对象 ID以及 所述对象的变化信息, 其中所述事务 ID用于标记所述事务, 所述对象 ID用于 标记所述对象, 所述变化信息与所述对象的内容对应, 不同所述变化信息的所 述对象的内容不同; 接收模块, 用于接收各个参与者对所述查询消息的响应消 息; 决策模块, 用于根据所述响应消息得出结论, 并将所述结论发送给所有所 述参与者, 所述结论包括下述至少一种: 如果任意一个响应消息中携带有第一 信息, 则结论为执行事务, 其中, 所述第一信息表示所述参与者存在所述事务 ID, 存在所述对象 ID, 所述对象在参与者中的变化信息与所述对象在协调者中 的变化信息相同; 或者, 如果任意一个响应消息中携带有第二信息, 则结论为 终止事务, 其中, 所述第二信息表示所述参与者存在所述事务 ID, 存在所述对 象 ID, 所述对象在参与者中的变化信息与所述对象在协调者的变化信息不同; 执行模块, 用于执行所述决策模块的结论。 在第二方面的第一种实现方式中, 所述结论还包括下述至少一种: 如果所 有响应消息中均携带有第三信息, 则结论包括为执行事务, 其中, 所述第三信 息表示所述参与者存在所述事务 ID;如果任意一个响应消息中携带有第四信息, 则结论为执行事务, 其中, 第四信息表示所述参与者不存在所述事务 ID, 并且 所述参与者不存在所述对象 ID。
第三方面, 本发明实施例提供一种事务处理方法, 应用于协调者, 所述协 调者和参与者通信连接, 事务操作的对象由多个子对象组成, 其中, 一个所述 子对象位于所述协调者中, 其他所述子对象分别位于不同的所述参与者中, 该 方法包括: 所述协调者向各个参与者发送查询消息, 所述查询消息中携带有事 务 ID以及对象 ID, 其中所述事务 ID用于标记所述事务, 所述对象 ID用于标 记所述对象, 所述变化信息与所述对象的内容对应, 不同所述变化信息的所述 对象的内容不同; 所述协调者接收各个参与者对所述查询消息的响应消息, 所 述响应消息携带所述第五信息, 所述第五消息表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 其中, 所述第五信息中还携带有发出响应消息的参与者 中所述对象变化信息; 所述协调者根据所述响应消息得出结论, 所述协调者执 行所述结论, 并将所述结论发送给所有所述参与者, 所述结论包括下述至少一 种: 如果所述对象在参与者中的变化信息与所述对象在协调者中的变化信息相 同, 则结论为执行事务; 或者, 如果所述对象在参与者中的变化信息与所述对 象在协调者中的变化信息不同, 则结论为终止事务。
在第三方面的第一种实现方式中, 所述结论还包括下述至少一种: 如果所 有响应消息中均携带有第三信息, 则结论包括为执行事务, 其中, 所述第三信 息表示所述参与者存在所述事务 ID;如果任意一个响应消息中携带有第四信息, 则结论为执行事务, 其中, 第四信息表示所述参与者不存在所述事务 ID, 并且 所述参与者不存在所述对象 ID。
第四方面, 本发明实施例一种事务处理装置, 与参与者通信连接, 事务操 作的对象由多个子对象组成,其中,一个所述子对象位于所述事务处理装置中, 其他所述子对象分别位于不同的所述参与者中, 该装置包括: 查询模块, 用于 向各个参与者发送查询消息, 所述查询消息中携带有所述查询消息中携带有事 务 ID以及对象 ID, 其中所述事务 ID用于标记所述事务, 所述对象 ID用于标 记所述对象; 接收模块, 用于接收各个参与者对所述查询消息的响应消息, 所 述响应消息携带所述第五信息, 所述表示所述参与者不存在所述事务 ID, 存在 所述对象 ID, 其中, 所述第五信息中还携带有发出响应消息的参与者中所述对 象变化信息; 决策模块, 根据所述响应消息得出结论, 所述协调者执行所述结 论, 所述变化信息与所述对象的内容对应, 不同所述变化信息的所述对象的内 容不同; 并将所述结论发送给所有所述参与者, 所述结论包括下述至少一种: 如果所述对象在参与者中的变化信息与所述对象在协调者中的变化信息相同, 则结论为执行事务; 或者, 如果所述对象在参与者中的变化信息与所述对象在 协调者中的变化信息不同, 则结论为终止事务; 执行模块, 用于执行所述决策 模块的结论。
在第四方面的第一种实现方式中, 所述结论还包括下述至少一种: 如果所 有响应消息中均携带有第三信息, 则结论包括为执行事务, 其中, 所述第三信 息表示所述参与者存在所述事务 ID;如果任意一个响应消息中携带有第四信息, 则结论为执行事务, 其中, 第四信息表示所述参与者不存在所述事务 ID, 并且 所述参与者不存在所述对象 ID。
上述各种方面中一种实现方式中, 对象的变化信息可以是对象的版本号。 应用本发明实施例提供的方法, 通过检测参与者的对象的变化信息, 可以 获得事务的结论, 提高事务处理的效率。 附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施 例或现有技术描述中所需要使用的附图作筒单地介绍, 下面描述中的附图仅仅 是本发明的一些实施例, 还可以根据这些附图获得其他的附图。
图 1是本发明实施例一种事务处理方法流程图;
图 2是本发明实施例一种事务处理方法流程图;
图 3是本发明实施例一种事务处理装置示意图; 图 4是本发明实施例一种事务处理方法流程图;
图 5是本发明实施例一种协调者结构示意图。
具体实施方式
下面将结合本发明实施例中的附图, 对本发明的技术方案进行清楚、 完整 地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实 施例。 基于本发明中的实施例所获得的所有其他实施例, 都属于本发明保护的 范围。
事务是一系列操作的一个集合, 事务可以包含多个操作, 但是其包含的所 有操作都是不可分割的, 要么在执行所有操作, 要么不执行任何操作。 可以把 对 N+M个节点的操作作为一个事务, 对任意一个或者多个节点进行操作, 那么 其他节点也需要执行同样类型的操作。
事务由协调者和参与者共同执行, 协调者通过决策产生结论, 参与者执行 协调者的结论, 参与者还可以为协调者提供决策依据。
两阶段提交协议中,系统一般包含两类节点:一类为协调者(Coordinator ), 通常一个事务中只有一个; 另一类为参与者 (Participants ), 可以有多个。 每个 节点都可以记录写前日志( Write-ahead Log )并持久性存储, 即使节点发生故障 日志也不会丟失。 一种可行的事务协商方法步骤如下: (1 )协调者发送操作请 求给各个参与者, 操作请求可以是同意执行事务或者不同意执行事务, 这个操 作请求用于与参与者进行协商, 并不需要被参与者执行; (2 )参与者收到协调 者操作请求后, 返回响应消息, 响应消息中携带各个参与者是否赞同协调者的 操作请求, 例如响应消息可以是同意协调者的操作请求、 或者拒绝协调者的操 作请求, 并且参与者进入等待阶段, 等待协调者的决策; (3 )协调者汇总各个 参与者的响应消息进行决策, 得出结论, 并把结论发给各个参与者; (4 )各个 参与者收到结论后执行这个结论, 然后释放事务占用的资源。
在上述事务的协商处理过程中, 有可能发生意外情况, 例如步骤(4 )也可 能是协调者发生故障, 导致发往一部分参与者的结论没有成功发出, 或者参与 者自身故障没有接收到结论, 或者其他原因导致部分参与者没有收到结论。 这 些导致部分参与者没有收到结论的情况,我们统称为协调者失效。协调者失效, 导致部分参与者执行了事务的结论; 另一部分参与者没有执行事务的结论。 这 些没有收到结论的参与者会一直停留在等待阶段, 或者称为准备(Prepared )状 态, 事务占用的资源无法及时释放, 这种现象我们称为阻塞。
现有技术中, 为了避免阻塞, 参与者在收到协调者的决策结论后, 不能释 放事务占用的资源。 上述步骤(4 )替换为 (5 )和(6 ), 其中: (5 )参与者执 行结论后, 还需要用日志的方式把自己收到的结论记录下来, 然后向其他参与 者发送消息, 以通知其他参与者自己已经收到了结论; 以及(6 ) 当某个参与者 收到其他所有参与者的结论后, 证明没有意外发生, 因此可以释放事务占用的 资源, 并且再次记录操作日志。
现有技术虽然可以一定程度上解决阻塞的问题, 但为了避免发生意外时系 统阻塞, 不论是否发生意外, 每次执行事务都要执行(5 ) ( 6 ) 中的协商、 记录 曰志的操作, 对系统资源造成了耗费。
为了方便理解, 本发明实施例以存储系统, 尤其是一种分布式对象存储系 统进行举例, 但本发明不限于分布式存储, 也同样适用于其他需要使用事务的 技术领域。 在存储领域中, 事务可以是写入数据、 删除数据或者修改数据。 对 象是事务操作的目标, 例如一段数据。 这个数据可以用文件名、 流水号、路径、 逻辑地址、 物理地址进行标记。 例如 "新建" 的事务, 可以把新数据写入目标 数据中; "删除" 事务可以删除目标数据。
需要说明的是, 对象存储是分布式存储的一种, 本发明实施例可以应用在 对象存储中, 也可以应用在其他分布式存储中, 本发明实施例中的对象并不用 于将本发明实施例限制在对象存储的领域。 在分布式存储中, 被存储的数据都 可以称为对象, 例如可以是文件、 文字、 图片、 数据流以及计算机代码中的某 一种或者某一种的一部分。本发明实施例中,对象是可以被事务所操作的数据。 本发明实施例可以把一个数据拆分成多个子数据块, 每个子数据块存储到一个 存储节点中。 存储节点可以是物理上分离的, 也可以是逻辑上分离的, 存储节 点例如可以是存储集群、 存储服务器、 硬盘、 硬盘分区、 文件夹等。 本发明实施例中, 对象的版本号可以标记对象是否发生变化, 对象的版本 号用在组成对象的各个子对象中。 例如创建或者修改了一个对象, 对象会拥有 一个新的版本号, 对象的子对象版本号也会相应更新。 版本号可以标记对象中 子对象的一致性。
在其他实施例中, 除了版本号, 还可以用其他信息来标记对象是否发生变 化, 例如对象的名称、 对象占用存储空间的大小、 对象的属性。 可以记录所述 对象的内容是否发生改变的信息, 统称为对象的变化信息, 所述变化信息与所 述对象的内容对应, 不同变化信息的所述对象的内容不同。 任意子对象发生改 变, 则相当于整个对象的内容发生改变, 相应的, 整个对象的变化信息都需要 更新。 本发明实施例中, 为了方便说明, 以对象的版本号为例介绍对象的变化 信息。
将一个数据文件对象划分为 N个等长的业务数据块, 不足的部分可以使用 0来补齐。 对这 N个数据块进行编码计算生成 M个校验数据块, 将这个 N + M 个数据块存放到 N + M个不同的节点上, 其中, N和 M都是自然数。 任意 M份 数据故障, 都可以利用剩余的 N份数据计算出来发生故障的数据, 这种数据恢 复技术可以称为纠错码 ( Erasure Code , EC )。 我们可以把 N+M个数据组成的集 合称为对象, N+M个数据中的任意一个称为子对象。
这 N+M个子对象是相互关联的, 任意一个进行了更新, 余下的所有子对象 也需要更新, 以保持子对象之间的一致性。 这 N+M个子对象的一致性可以通过 事务来保证。 在把对象拆分成 N个子对象之前, 可以为这个对象分配版本号, 这个对象的版本号会记录到他生成的 N+M个子对象中。 因此通过对象的版本号 来标识一致性, 如果 N + M个子对象是一致的, 则他们拥有相同的版本号; 如 果部分节点上的数据与其他节点上的数据的版本号不同, 则意味着数据不一致。
造成版本号不同的原因有很多, 例如某个节点出现了一段时间的故障, 在 故障期间这个节点错过了一些写入子对象的操作, 那么这个发生过故障的节点 上的子对象, 就会和其他没有做过写操做的节点上的子对象不一致, 并且版本 号不同。 客户端从分布式存储系统中读取这些子对象时, 可以发现这些不一致 的子对象, 可以利用 N份版本一致的子对象通过错误校验的方式对不一致的子 对象进行恢复, 恢复出与这 N份子对象一致的子对象。
应用本发明实施例提供的方法, 当原协调者失效后, 从参与者中重新选出 新的协调者, 新的协调者通过检测其他参与者的对象的变化信息, 可以得出事 务的结论。 而现有技术中, 为了应对协调者失效时出现阻塞, 不论协调者是否 失效, 都采用同样的处理流程来获得事务的结论。 而这个流程比本申请中事务 没有失效时, 所采用的事务处理技术更加复杂。 因此本申请的总体效率更高, 通过提供一种异常 (例如协调者失效) 处理机制, 筒化了没有发生异常时, 事 务处理的流程。
即使原协调者没有失效, 本申请方案也提出了一种新的协商机制, 可以通 过协商得出事务结论。 实施例一
本发明实施例提供一种事务处理方法, 应用于协调者, 所述协调者和参与 者通信连接, 事务操作的对象由多个子对象组成, 其中, 一个所述子对象位于 所述协调者中, 其他所述子对象分别位于不同的所述参与者中, 该方法包括: 所述协调者向各个参与者发送查询消息, 所述查询消息中携带有事务 ID、 对象 ID以及所述对象的版本号, 其中所述事务 ID用于标记所述事务, 所述对象 ID 用于标记所述对象; 所述协调者接收各个参与者对所述查询消息的响应消息; 所述协调者根据所述响应消息得出结论, 所述协调者执行所述结论, 并将所述 结论发送给所有所述参与者。
所述结论包括下述至少一种: 如果任意一个响应消息中携带有第一信息, 则结论为执行事务, 其中, 所述第一信息表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 所述对象在参与者中的版本号与所述对象在协调者中的版本 号相同; 或者,如果任意一个响应消息中携带有第二信息, 则结论为终止事务, 其中, 所述第二信息表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 所 述对象在参与者中的版本号与所述对象在协调者的版本号不同。
所述结论还包括下述至少一种: 如果所有响应消息中均携带有第三信息, 则结论包括为执行事务,其中 ,所述第三信息表示所述参与者存在所述事务 ID; 如果任意一个响应消息中携带有第四信息, 则结论为执行事务, 其中, 第四信 息表示所述参与者不存在所述事务 ID, 并且所述参与者不存在所述对象 ID。
协调者可以同时具有检测第一信息以及第二信息是否存在, 并根据检测结 果得出结论的功能。 也可以同时具有检测第一信息、 第二信息、 第三信息以及 第四信息是否存在, 并根据检测结果得出结论的功能。 也可以仅具检测第一信 息、 第二信息、 第三信息以及第四信息中任意一种是否存在, 并根据检测结果 得出结论的功能。
参见图 1 是本发明实施例一种事务执行方法实施例的具体实现步骤。 应用 于协调者和多个参与者组成的事务处理系统中, 事务操作的对象由多个子对象 组成, 其中, 协调者中可以不存储子对象, 协调者对事务进行协调; 所述子对 象分别位于不同的所述参与者中。 参与者例如可以是 OSD。 事务的执行可以包 括以下步骤。
步骤 11 , 协调者发送操作请求给各个参与者, 操作请求中携带有事务 ID、 操作类型、 协调者中记录的对象版本号 Version_T。 如果事务的操作类型是写数 据, 操作请求中还可以携带待写数据。
所述操作请求可以通知参与者准备为对象进行操作。事务 ID标记一个事务, 这个被标记的事务与事务所操作的对象关联。
例如发送写 (Write )命令给 N+M个参与者, 写命令中携带事务 ID, 操作 类型, 协调者中记录的对象版本号 Version_T, 操作类型例如是写入、 删除。 当 操作类型是写入时, 还可以在写命令中携带准备写入各个子对象的待写数据。
步骤 12, 协调者发送准备(Prepare )命令给各个参与者, Prepare命令中携 带事务 ID、 对象 ID、 协调者中记录的对象的版本号, 以及参与者清单。
其中, 对象 ID是事务 ID标记的事务所操作的对象的 ID, 对象的版本号是 对象 ID所标记的对象的版本号, 参与者清单中记录了所有参与者。
步骤 13 , 参与者收到协调者的准备(Prepare )命令后, 存储参与者清单, 并且为事务分配资源。 参与者分配完资源后, 发送准备完成(Prepared )消息给 协调者, 参与者进入 Prepared阶段。 在其他实施例中, 如果参与者没有找到这 个事务 ID或者不符合执行事务的条件, 会发送消息告知协调者。
步骤 14,协调者进行决策,并发送决策获得到的结论给各个参与者。例如, 当所有参与者都反馈 Prepared消息时, 决策结论是执行事务, 并发送这个结论 给各个参与者。 当结论是执行事务时, 这个结论可以用 Commit消息来表示。 在 其他情况下, 结论也可能是终止事务。
步骤 15 , 收到决策者的结论的参与者, 执行结论。 然后释放事务占用的资 源。
现有技术的非阻塞式事务处理方法和步骤 11一步骤 14不同。例如,步骤( 1 ) 不会发送本次事务对象 ID, 操作类型, 版本号 Version_T中的任意一个。
应用本发明实施例, 减少了节点之间的信息交互, 并且减少了需要记录的 曰志。 相较于现有技术占用系统资源更少, 处理事务耗费的时间更短。
下面以协调者发生故障为例, 介绍一种当出现意外时一种事务处理实施例。 需要特别说明的是, 由于协调者失效后, 会从参与者中选出一个作为新的协调 者, 为了区分失效的协调者和新选出的协调者, 除非特别说明, 在步骤 21-步骤 29及其他相关实施例中, 把失效的协调者称为原协调者, 原协调者在失效前可 以正常工作; 把新选出的协调者称为协调者。 也就是说, 步骤 11-步骤 15 中的 协调者, 在步骤 21-步骤 29以及步骤 37、 38中, 被称为原协调者。
实施例二
本发明实施例中, 当协调者发生故障时, 可以通过参与者之间查询事务状 态和当前版本号来保证数据的一致性。 本发明实施例中, 随着版本的更新, 版 本号可以采用递增规律, 也可以采用递减的规律。 在其他实施例中, 可以使用 例如字母等非数值作为版本号, 只要版本号具有唯一性, 并且参与者和协调者 约定好伴随着版本的更新, 版本号的变化规则即可。 为了方便介绍, 后续以随 着版本的更新, 版本号的数值递增进行举例。 每次写操作导致对象版本递增, 并且新版本的内容对旧版本的内容有替代关系, 一个新版本的子对象可以与它 的旧版本的子对象写到同一个 OSD中, 并且覆盖旧版本的子对象。 事务操作可 以针对一个对象的所有子对象的操作, 这些子对象分布在不同的 OSD中。 OSD 可以包括控制器和存储介质, 控制器用于管理, 存储介质用于存储数据, 例如 硬盘(Hard Disk )、 固态硬盘( SSD )或者磁带( Magnetic Tap )。 OSD也可以是 存储服务器或者个人电脑。
步骤 21 , 分布式存储系统中的原协调者失效后, 从参与者中选出一个作为 新的协调者。 步骤 21可以在步骤 13或者步骤 14之后执行, 例如在执行完步骤 14后, 参与者在预设的时间内没有收到协调者的结论, 开始执行步骤 21。 步骤 21是可选步骤。
新的协调者可以通过选举产生, 具体选举办法可以有多种, 例如可以直接 指定一个参与者作为协调者, 也可以选择编号最小的参与者作为协调者, 或者 性能最强的参与者作为协调者。 需要说明的是, 这个选举出的协调者存储有子 对象, 因此兼有参与者的部分功能。 除非特别说明, 后续步骤中提到的协调者 都是指新选出的协调者。
本发明实施例中, 参与者存储有参与者清单, 可以从参与者清单所记录的 参与者中, 选举出参与者作为协调者, 参与者清单中记录有一个对象的所有子 对象所在的 OSD, 本步骤从这 N+M个参与者中选出一个新的协调者。
本发明实施例中, 协调者失效是一种泛指, 指参与者没有收到协调者发送 的结论, 例如可以是协调者无法正常工作、 协调者与参与者之间通信中断、 或 者参与者发生故障。故障原因可能是软件故障或者硬件故障,在其他实施例中, 也可能没有发生物理或者软件故障, 而是由管理员指令选举新的对协调者进行 更改。
步骤 22, 协调者向系统中的参与者发送查询消息, 查询消息中记录有需要 查询的事务的: 事务 ID、 对象 ID以及对象的目标版本号 Version_T。
事务 ID用于标记本次事务的操作, 不同事务的事务 ID不同, 拥有相同事 务 ID的所有操作是属于同一个事务的操作。本发明实施例中,这些操作由 N+M 个 OSD分别执行。 对象 ID用于标记事务 ID所操作的对象, 例如可以用对象的 文件名作为对象 ID,对象的目标版本号是所述对象 ID所标记的对象的目标版本 号。 如果事务结论是执行事务, 则参与者和协调者上存储的子对象的版本都跃 迁到这个目标版本号, 或者说对象的版本会跃迁到这个目标版本号。 除了文件 名, 也可以用其他方式标记对象 ID, 存储系统可以使用 2K字节的数据量来记 录这个标记。查询消息的接收者是参与者清单中,除协调者之外的所有参与者。
参与者收到查询消息后,可以查找自身是否有相同事务 ID并且相同对象 ID 的事务, 如果有, 则进一步判定参与者的子对象的当前版本号和所述目标版本 号是否相同, 用版本的一致性来推理事务的结论。
目标版本号可以来自原协调者, 例如步骤 11。
步骤 23 , 接收到查询消息的参与者, 根据查询消息中的事务 ID, 确认本地 是否存在相同的事务。 其具体确认方法是是查找本地的事务 ID中, 是否存在相 同的事务 ID。 如果存在, 则进入步骤 24; 如果不存在, 则进入步骤 25。
步骤 24, 接收到查询消息的参与者, 返回携带有 "存在相同事务" 信息的 响应消息给协调者, 本实施例中, 这个响应消息中携带的信息称为第三信息。
这个响应消息是在参与者查找到本地存在相同的事务 ID后发出, 如果在本 地没有查找到具有相同事务 ID ,不发这个响应消息。响应消息可以告诉决策者, 自己已经收到查询消息, 并且成功应答。 还可以告诉决策者, 自己不知道决策 结果, 处于等待决策的阶段。
步骤 25 , 接收到查询消息的参与者, 查找本地是否存在这个对象, 也就是 确认在所有本地的对象 ID中,是否存在与查询消息中相同的对象 ID。如果存在, 则进入步骤 27; 如果不存在, 则进入步骤 26。
步骤 26, 接收到查询消息的参与者返回响应消息给协调者, 告知协调者本 地不存在该事务也不存在该对象, 这个信息可以用 "不存在该对象" 或者 "不 存在该事务、 也不存在该对象" 表示, 这个信息可以称为第四信息。
步骤 27 , 接收到查询消息的参与者, 读取对象 ID 所标记对象的版本号 Version_C , 比较 Version_T与 Version_C是否相同, 并把比较结果作为查询消息 的响应消息反馈给协调者。
以版本越新版本号的数值越大为例。 ( 1 )如果 Version_C > Version_T, 则返 回给协调者的信息中携带有 "本参与者的对象的版本号比目标版本号更加新" 的信息,该消息后文筒称为 "版本更新"消息,(2 )如果 Version_C = Version_T, 则返回给协调者的信息中携带有 "本参与者的对象的版本号与目标版本号相同" 的信息, 该消息后文用 "版本相同" 表示; (3 )如果 Version_C < Version_T; 则返回给协调者的信息中携带有 ""本参与者的对象的版本比目标版本号更加旧" 的信息, 该消息可以用 "版本更旧" 表示。
在其他实施例中, 由于在后续步骤中 "版本更新" 和 "版本更旧" 的处理 方式相同, 因此这两种情况可以合并, 反馈 "版本不同" 的消息。 也就是说, 在本步骤中, 可以不用比较 Version_C与 Version_T之间的大小, 比较版本是否 相同即可, 返回的响应消息是 "版本相同" 或者 "版本不同"。
也就是说, 本步骤中参与者发送的响应消息可能携带第一信息或者第二信 息。 第一信息是 "版本相同" 的信息, 信息内容也可以是 "Equal" ; 第一信息可 以是参与者经过事务 ID判断、 对象 ID判断、 版本号判断后得出; 第一信息可 以表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 所述参与者中的对象 版本号与所述目标版本号相同。 第二信息是 "版本不同" 的信息, 信息内容也 可以 "Unequal" , ; 第二信息可以是参与者经过事务 ID判断、 对象 ID判断、 版 本号判断后得出; 第二信息可以表示所述参与者不存在所述事务 ID, 存在所述 对象 ID , 所述对象在参与者中的对象版本号与所述目标版本号不同。
步骤 28 , 协调者接收到参与者的响应消息后, 响应消息携带第一信息、 第 二信息、 第三信息、 第四信息中的一个, 根据响应消息的内容得出结论。 这个 结论需要协调者与参与者执行。 协调者执行结论, 并发送结论给系统中的参与 者, 释放事务在协调者上占用的资源。 协调者和参与者共同执行这个结论, 可 以保证事务的一致性。
结论是终止事务或者执行事务。 如果是终止事务, 则发出 Abort的消息, 如 果结论是执行事务, 则发出 Commit的消息。 如果结论是终止事务, 执行方式是 终止事务。 如果结论是执行事务, 则参与者对参与者上的子对象执行事务的一 系列操作。 需要说明的是, 对一些实施例而言, 参与者会分别进行事务 ID、 对象 ID、 版本号的判断, 因此有可能发出第一信息、 第二信息、 第三信息、 第四信息中 的任意一个。 但是在其他实施例中, 参与者只其中一项进行检测, 例如只检测 是不是存在第一信息, 因此返回给协调者的响应消息是第一信息, 不包括第二 信息、 第三信息或者第四信息, 相应的, 协调者也不对产生第二信息、 第三信 息或者第四信息的事务结论。 在其他实施例中, 也可以检测第一信息以及第二 信息。
表 1 介绍协调者收到参与者反馈的响应消息后, 如何根据响应消息携带的 信息决策得到结论, 结论是终止事务或者执行事务,终止事务可以用 Abort命令 表示,执行事务可以用 Commit命令表示。在决策时还可以考虑事务的操作类型, 操作类型可以包括新建、 修改以及删除, 其中新建和修改都属于写( Write )。 操 作类型可以来自于原协调者, 存储在协调者、 参与者中, 例如通过步骤 11发送 给协调者、 参与者。 协调者发给参与者的查询消息中也可以携带事务的操作类 型。
对操作类型是新建或者修改的事务而言, 可以有以下规则中的一个或多个: ( a )如果任一参与者返回 "版本相同" 的信息, 也就是第一信息, 说明返回消 息的参与者已经执行了事务, 按照事务 "同进同退" 的原则, 则结论是执行事 务; (b )如果任一参与者返回 "版本不同" 的信息, 也就是第二信息, 说明已 经有参与者进行了 Abort动作, 按照事务 "同进同退" 的原则, 则结论是终止事 务; (c )如果所有参与者返回存在该事务的信息, 也就是第三信息, 说明协调 者并没有给出事务的决策结果, 此时所有参与者都处于 Prepared状态, 虽然没 有参与者完成事务执行, 但都已经做好了执行事务的准备, 处于能够正常执行 事务的状态, 则结论是执行事务; (d )如果任一参与者返回 "没有该事务且没 有该对象" 的信息, 也就是第四信息, 则结论是终止事务。
对操作类型是删除的事务而言, 可以有以下结论中的一个或多个: (a )如 果任一参与者返回 "版本不同" 的信息, 也就是第二信息, 说明该参与者已经 执行了 Abort动作, 则结论是终止事务; (b )如果所有参与者返回存在该事务的 信息, 也就是第三信息, 说明该参与者已经执行了删除操作, 说明协调者并没 有给出事务的决策结果, 此时所有参与者都处于 Prepared状态, 虽然没有参与 者完成事务执行, 但都已经做好了执行事务的准备, 则结论是执行事务; (c ) 如果任一参与者返回 "没有该事务且没有该对象" 的信息, 也就是第四信息, 则结论是执行事务。 当操作类型是删除时, 参与者不会反馈第一信息, 因为如 果版本相同, 对象和事务都会删除, 参与者无法查找到对象 ID、 事务 ID, 所以 实际返回的是没有这个事务且没有这个对象的信息, 也就是第四信息。
需要说明的是, 操作不同时, 对于某些信息的可能得出相同的结论。 对这 些操作信息, 可以不需要判断操作类型, 直接根据响应消息携带的信息得出结 论。 例如, 只要任一参与者返回的响应消息携带有 "版本不同" 的信息, 事务 的结论就可以确定为 Abort, 得出这个 Abort的结论, 并不需要知道事务的操作 类型。 此外, 如果任一参与者返回 "版本相同" 的信息, 也不需要判断操作类 型, 就可以得出 Commit的结论。
协调者得出的结论示例参见表 1
Figure imgf000018_0001
表 1
另外需要说明的是, 本实施例中查询消息携带有事务 ID、 对象 ID、 目标版 本号三项内容。 由于部分结论不需要进行多次判断即得出, 例如当所有参与者 返回的响应消息都携带有 "存在这个事务"时, 已经足以得出执行事务的结论。 不需再进一步判断参与者中是否存在事务 ID, 也不需要判断版本号是否相同。 同样的, 当任意参与者返回的响应消息携带 "存在该事务, 并且不存在该对象" 信息时, 所有参与者都不需要进一步判断参与者的对象版本是否和协调者提供 的对象目标版本相同。 因此, 协调者发送给参与者的的查询消息, 可以仅发送 事务 ID, 也可以发送事务 ID以及对象 ID, 也可以发送事务 ID、 对象 ID以及 对象的目标版本号。
此外, 查询消息还可以分阶段发送: 协调者第一次发送事务 ID给参与者; 当收到的响应消息不足以得出结论时, 协调者再发送对象 ID给参与者; 如果对 象 ID 的响应消息仍然无法得出结论, 协调者再继续发送版本号信息给参与者。 这些发送方法可以减少查询消息的数据量。
由于当前的协调者是由选举产生, 在选举前, 协调者自己也是参与者的角 色。 因此协调者兼有参与者的责任, 协调者除了把结论发送给参与者由参与者 执行, 协调者自己也需要像参与者一样执行结论。 本实施例中, 如果结论是执 行事务, 则协调者需要执行事务的一系列操作, 例如对协调者上存储的子对象 进行删除操作的所需要的一系列操作、 或写数据操作一系列操作。 执行的方式 可以是 OSD的控制器生成对存储介质进行操作指令, 例如删除存储介质上的数 据的指令。 在生成对存储介质进行操作的指令后, 可以记录日志, 这个日志可 以是 Committed; 在操作完成时, 也就是控制器完成操作时, 可以记录日志, 这 个曰志可以是 Cleared。 然后释放这个事务所占用的资源, 例如存储器资源。 启 动执行命令的过程, 可以称为提交事务。
步骤 29, 参与者在收到协调者的结论后, 执行结论。 执行结论后, 可以释 放事务占用的资源。 对协调者来说, 步骤 29是可选步骤。
如果结论是执行事务, 则参与者执行事务的一系列操作, 例如对参与者上 存储的子对象进行删除操作、 写数据操作。 具体而言, 如果结论是执行, 执行 的方式可以是 OSD的控制器生成对存储介质进行操作指令, 例如删除存储介质 上的数据的指令。 在生成对存储介质进行操作的指令后, 可以记录日志, 这个 曰志可以是 Committed。 在事务执行完成后, 也就是控制器完成操作时, 可以记 录曰志, 这个日志可以是 Cleared。 然后释放这个事务所占用的资源, 例如存储 器资源。
参与者收到的结论可能是 Commit, 也可能是 Abort。 参与者收到结论后, 可以不用给协调者发送已经收到的确认消息结论给协调者, 也可以不发送已经 执行结论的确认消息。
步骤 21-步骤 29的事务处理方法具有独立性,是一个完整的事务处理方法。 步骤 21-步骤 29, 可以在步骤 13或步骤 14之后执行, 也可以用于其他场景, 例 如不是原协调者故障, 而是原协调者自始就不存在, 仅由若干参与者组成的事 务处理系统, 通过协商进行事务处理, 在这种实施例中, 可以没有步骤 21。
实施例二的方法中, 一部分步骤由协调者执行, 另一部分由参与者执行, 步骤 23-步骤 28—共涉及事务 ID、 对象 ID以及版本号三种信息的比较, 并可 以通过比较结果得出事务结论, 这个过程也可以包括如下 4种结论, 这 4种结 论之间是并列的, 没有相互依存的关系, 因此本发明实施例实现其中至少一种 就是一个完整的方案。
( 1 )如果任意一个响应消息中携带有第一信息,则结论为执行事务,其中, 第一信息表示发出第一信息的参与者不存在收到的事务 ID ,存在收到的对象 ID , 收到的对象的变化信息和自己的对象的变化信息相同。
( 2 )如果任意一个响应消息中携带有第二信息,则结论为终止事务,其中, 第二信息表示发出第二信息的参与者不存在所述事务 ID, 存在所述对象 ID, 收 到的对象的变化信息和自己的对象的变化信息不同。
( 3 )如果所有参与者返回的响应消息中携带第三信息, 则事务的结论为执 行事务, 所述第三信息表示发出第三信息的参与者存在收到的事务 ID。 (4 )如 果任意参与者返回的响应消息中携带第四信息, 对新建或者修改操作, 则事务 的结论为取消事务执行事务, 对删除事务, 则事务的结论为执行事务。 第四信 息表示发出第四信息的参与者不存在收到的事务 ID, 不存在收到的对象 ID。
实施例三 如图 3所示, 本发明另外一种实施例还提供一种事务处理装置 31 , 可以应 用上述实施例二的方法。 事务处理装置 31与参与者 32通信连接, 事务操作的 对象由多个子对象组成, 其中, 一个所述子对象位于所述事务处理装置中, 其 他所述子对象分别位于不同的所述参与者中。事务处理装置 31包括查询模块 311、 接收模块 312、 决策模块 313以及执行模块 313。
查询模块 311 , 用于向各个参与者 32发送查询消息, 所述查询消息中携带 有事务 ID、 对象 ID以及所述对象的版本号, 其中所述事务 ID用于标记所述事 务, 所述对象 ID用于标记所述对象。
接收模块 312 , 用于接收各个参与者对所述查询消息的响应消息;
决策模块 313 , 用于根据所述响应消息得出结论, 并将所述结论发送给所有 所述参与者, 所述结论包括下述至少一种。
( 1 )如果任意一个响应消息中携带有第一信息,则结论为执行事务,其中, 第一信息表示发出第一信息的参与者不存在收到的事务 ID ,存在收到的对象 ID , 收到的对象的版本号和自己的对象的版本号相同。
( 2 )如果任意一个响应消息中携带有第二信息,则结论为终止事务,其中, 第二信息表示发出第二信息的参与者不存在所述事务 ID, 存在所述对象 ID, 收 到的对象的版本号和自己的对象的版本号不同。
( 3 )如果所有参与者返回的响应消息中携带第三信息, 则事务的结论为执 行事务, 所述第三信息表示发出第三信息的参与者存在收到的事务 ID。
( 4 )如果任意参与者返回的响应消息中携带第四信息, 对新建或者修改操 作, 则事务的结论为取消事务执行事务, 对删除事务, 则事务的结论为执行事 务。 第四信息表示发出第四信息的参与者不存在收到的事务 ID, 不存在收到的 对象 ID。
执行模块 314, 用于执行决策模块 313的结论, 并将结论发送给所有所述参 与者 32。
参与者 32收到执行模块 314的结论后, 可以执行结论。
在本发明实施例中, 协调者 31、 参与者 32都是对象存储设备 OSD, 所述 事务是对所有所述子对象进行读取、 对所有所述子对象删除或者对所有所述子 对象写入。
实施例四
需要说明的是, 如图 4所示提供了另外一种事务处理方法的实施方式, 这 种实施方式与实施例二所揭露的实施方式相似, 区别点之一是, Version_C 与 Version_T是否相同的比较可以由协调者来做。
在这种实施方式中, 步骤 22中协调者发送的查询消息中, 可以不包含对象 当前版本号 Version_T, 因此这个实施例中, 参与者发送的响应消息可能携带第 三消息或者第四消息, 不会携带第一消息或者第二消息。
相应的, 在步骤 25判断结果为是之后, 执行步骤 47: 收到查询消息的参与 者读取对象 ID所标记的对象的版本号 Version_C,并把 ¥6 011_( 发送给协调者。 参与者不执行版本是否相同的比较, 也不发送于版本是否相同的应答信息给协 调者。
步骤 47中, 参与者可以发送携带第五消息的响应消息, 所述第五信息中还 有发出响应消息的参与者中所述对象版本号。 第五消息还可以表示所述参与者 不存在所述事务 ID, 存在所述对象 ID。
接着执行步骤 48: 协调者比较响应消息中携带的参与者的对象版本, 和协 调者记录的目标版本号进行比较, 比较方式与步骤 27基本相同, 不同之处在于 执行比较的主体是参与者。 获得比较结果以后, 依照与步骤 28相同的方式得出 结论并执行结论。
协调者可以同时具有检测第三信息、 第四信息以及第五信息是否存在, 并 根据检测结果得出结论的功能。 也可以仅具检测第三信息、 第四信息、 第五信 息中任意一种是否存在, 并根据检测结果得出结论的功能。 所述结论包括下述 至少一种。
( 1 )如果所有参与者返回的响应消息中携带第三信息, 则事务的结论为执 行事务, 所述第三信息表示发出第三信息的参与者存在收到的事务 ID。
( 2 )如果任意参与者返回的响应消息中携带第四信息, 对新建或者修改操 作, 则事务的结论为取消事务执行事务, 对删除事务, 则事务的结论为执行事 务。 第四信息表示发出第四信息的参与者不存在收到的事务 ID, 不存在收到的 对象 ID。
( 3 )如果任意参与者返回的响应消息中携带第五信息, 可以根据第五消息 得出结论, 所述结论包括下述至少一种: (i )如果参与者返回给协调者的班花信 息和协调者记录的目标版本号相同, 则结论为执行事务; 或者 (ii )如果参与 者返回给协调者的班花信息和协调者记录的目标版本号不同, 则结论为终止事 务。其中,第五消息表示所述参与者不存在收到的事务 ID ,存在收到的对象 ID , 第五信息中还携带有发出响应消息的参与者中所述对象版本号。
实施例五
同样参考如图 3 , 本发明另外一种实施例提供一种事务处理装置 31 , 可以 应用上述实施例四的方法。 事务处理装置 31与参与者 32通信连接, 事务操作 的对象由多个子对象组成, 其中, 一个所述子对象位于所述事务处理装置中, 其他所述子对象分别位于不同的所述参与者中。 事务处理装置 31包括查询模块 311、 接收模块 312、 决策模块 313以及执行模块 313。
查询模块 311 , 用于向各个参与者 32发送查询消息, 所述查询消息中携带 有所述查询消息中携带有事务 ID以及对象 ID, 其中所述事务 ID用于标记所述 事务, 所述对象 ID用于标记所述对象。
接收模块 312, 用于接收各个参与者 32对所述查询消息的响应消息, 所述 响应消息携带所述第五信息, 所述表示所述参与者不存在所述事务 ID, 存在所 述对象 ID, 其中, 所述第五信息中还携带有发出响应消息的参与者中所述对象 版本号。
决策模块 313 , 根据所述响应消息得出结论, 所述协调者执行所述结论, 并 将所述结论发送给所有所述参与者, 所述结论包括下述至少一种: 如果所述对 象在参与者中的版本号与所述对象在协调者中的版本号相同, 则结论为执行事 务; 或者, 如果所述对象在参与者中的版本号与所述对象在协调者中的版本号 不同, 则结论为终止事务。 执行模块, 用于执行所述决策模块的结论。
实施例六
如图 5所示,本发明另一实施例提供一种协调者 51 ,和参与者 42通信连接, 事务操作的对象由多个子对象组成,其中,一个所述子对象位于所述协调者中, 其他所述子对象分别位于不同的所述参与者中, 所述协调者包括处理器 ( Processor ) 511以及与处理器通信的存储器 512, 所述存储器用于存储程序, 所述处理器用于执行程序, 程序可以执行上述方法中的一种或者多种, 例实施 例一、 实施例二、 实施例四所描述方法的一种或多种。
一种实施例中所述处理器 511 执行的程序用于: 向各个参与者发送查询消 息, 所述查询消息中携带有事务 ID、对象 ID以及所述对象的版本号, 其中所述 事务 ID用于标记所述事务, 所述对象 ID用于标记所述对象, 所述对象的版本 号用于标记所述对象的内容是否发生改变, 不同版本号的所述对象的内容不同; 接收各个参与者对所述查询消息的响应消息; 根据所述响应消息得出结论, 执 行所述结论, 并将所述结论发送给所有所述参与者。 所述结论包括下述至少一 种: 如果任意一个响应消息中携带有第一信息, 则结论为执行事务, 其中, 所 述第一信息表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 所述对象在 参与者中的版本号与所述对象在协调者中的版本号相同; 或者, 如果任意一个 响应消息中携带有第二信息, 则结论为终止事务, 其中, 所述第二信息表示所 述参与者不存在所述事务 ID, 存在所述对象 ID, 所述对象在参与者中的版本号 与所述对象在协调者的版本号不同。
一种实施例中所述处理器 511 执行的程序用于: 向各个参与者发送查询消 息, 所述查询消息中携带有事务 ID以及对象 ID, 其中所述事务 ID用于标记所 述事务, 所述对象 ID用于标记所述对象, 所述对象的版本号用于标记所述对象 的内容是否发生改变, 不同版本号的所述对象的内容不同; 接收各个参与者对 所述查询消息的响应消息, 所述响应消息携带所述第五信息, 第五消息表示所 述参与者不存在所述事务 ID, 存在所述对象 ID, 其中, 所述第五信息中还携带 有发出响应消息的参与者中所述对象版本号; 根据所述响应消息得出结论, 所 述协调者执行所述结论, 并将所述结论发送给所有所述参与者。 所述结论包括 下述至少一种: 如果所述对象在参与者中的版本号与所述对象在协调者中的版 本号相同, 则结论为执行事务; 或者,如果所述对象在参与者中的版本号与所述 对象在协调者中的版本号不同, 则结论为终止事务。
处理器 511 可能是一个中央处理器 CPU , 或者是特定集成电路 ASIC ( Application Specific Integrated Circuit ), 或者是被配置成实施本发明实施例的 一个或多个集成电路。存储器 512可能包含高速 RAM存储器,也可能还包括非 易失性存储器( non-volatile memory ), 例如至少一个磁盘存储器。
通过以上的实施方式的描述, 可以清楚地了解到本发明可借助软件加必需 的通用硬件的方式来实现, 当然也可以通过硬件, 但很多情况下前者是更佳的 实施方式。 基于这样的理解, 本发明的技术方案本质上或者说对现有技术做出 贡献的部分可以以软件产品的形式体现出来, 该计算机软件产品存储在可读取 的存储介质中, 如计算机的软盘, 硬盘或光盘等, 包括若干指令用以使得一台 计算机设备(可以是个人计算机, 服务器, 或者网络设备等)执行本发明各个 实施例所述的方法。
以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限于 此, 任何人员在本发明揭露的技术范围内, 想到的变化或替换, 都应涵盖在本 发明的保护范围之内。 因此, 本发明的保护范围应以所述权利要求的保护范围 为准。

Claims

权利要求 书
1、 一种事务处理方法, 应用于协调者, 所述协调者和参与者通信连接, 事 务操作的对象由多个子对象组成, 其中, 一个所述子对象位于所述协调者中, 其他所述子对象分别位于不同的所述参与者中, 其特征在于, 该方法包括: 所述协调者向各个参与者发送查询消息, 所述查询消息中携带有事务 ID、 对象 ID以及所述对象的变化信息, 其中, 所述事务 ID用于标记所述事务, 所 述对象 ID用于标记所述对象, 所述变化信息与所述对象的内容对应, 不同所述 变化信息的所述对象的内容不同;
所述协调者接收各个参与者对所述查询消息的响应消息;
所述协调者根据所述响应消息得出结论, 所述协调者执行所述结论, 并将 所述结论发送给所述参与者, 所述结论包括下述至少一种:
如果任意一个响应消息中携带有第一信息,则结论为执行事务,其中, 所述第一信息表示所述参与者不存在所述事务 ID,存在所述对象 ID,所述 对象在参与者中的变化信息与所述对象在协调者中的变化信息相同; 或者 如果任意一个响应消息中携带有第二信息,则结论为终止事务,其中, 所述第二信息表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 所 述对象在参与者中的变化信息与所述对象在协调者的变化信息不同。
2、 根据权利要求 1所述的方法, 其特征在于:
所述协调者、 参与者都是对象存储设备 OSD, 所述事务是对所有所述子对 象进行读取、 对所有所述子对象删除或者对所有所述子对象写入。
3、 根据权利要求 1所述的方法, 其特征在于, 所述对象在参与者中的变化 信息与所述对象在协调者的变化信息不同, 具体是:
所述对象在参与者中的版本比所述对象在协调者的版本新; 或者
所述对象在参与者中的版本比所述对象在协调者的版本旧。
4、 根据权利要求 1、 2或 3所述的方法, 其特征在于, 所述协调者、 所述 参与者均与原协调者通信连接, 所述原协调者无子对象, 所述方法之前进一步 包括: 原协调者失效后, 选择原参与者中的一个作为所述协调者。
5、 根据权利要求 4所述的方法, 其特征在于, 原协调者失效之前, 所述方 法进一步包括:
所述协调者接收原协调者发送所述事务 ID、 对象 ID、 对象目标变化信息以 及参与者清单。
6、 根据权利要求 4所述的方法, 其特征在于, 原协调者失效之前, 所述方 法进一步包括:
所述原协调者发送操作请求给各个参与者, 所述操作请求中携带有所述对 象 ID, 操作类型、 协调者中记录的对象变化信息以及参与者清单, 所述参与者 清单中记录有所述原参与者。
所述协调者发送准备命令给各个参与者, 命令中携带事务 ID、 对象 ID、 协 调者中记录的对象的变化信息, 以及参与者清单, 以使各个所述原参与者接收 存储参与者清单, 并为事务分配资源。
7、 根据权利要求 1-6中任一所述的方法, 其特征在于:
所述对象的变化信息是对象的版本号。
8、 一种事务处理装置, 与参与者通信连接, 事务操作的对象由多个子对象 组成, 其中, 一个所述子对象位于所述事务处理装置中, 其他所述子对象分别 位于不同的所述参与者中, 其特征在于, 该装置包括:
查询模块, 用于向各个参与者发送查询消息, 所述查询消息中携带有事务 ID、 对象 ID以及所述对象的变化信息, 其中所述事务 ID用于标记所述事务, 所述对象 ID用于标记所述对象, 所述变化信息与所述对象的内容对应, 不同所 述变化信息的所述对象的内容不同;
接收模块, 用于接收各个参与者对所述查询消息的响应消息;
决策模块, 用于根据所述响应消息得出结论, 并将所述结论发送给所述参 与者, 所述结论包括下述至少一种:
如果任意一个响应消息中携带有第一信息, 则结论为执行事务, 其中, 所述第一信息表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 所述 对象在参与者中的变化信息与所述对象在协调者中的变化信息相同; 或者 如果任意一个响应消息中携带有第二信息, 则结论为终止事务, 其中, 所述第二信息表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 所述 对象在参与者中的变化信息与所述对象在协调者的变化信息不同;
执行模块, 用于执行所述决策模块的结论。
9、 根据权利要求 8所述的事务处理装置, 其特征在于:
所述协调者、 参与者都是对象存储设备 OSD, 所述事务是对所有所述子对 象进行读取、 对所有所述子对象删除或者对所有所述子对象写入。
10、根据权利要求 8或 9所述的事务处理装置, 其特征在于, 所述协调者、 所述参与者均与原协调者通信连接, 所述原协调者无子对象, 所述接收模块进 一步包括:
接收原协调发送的所述事务 ID、 对象 ID、 对象变化信息以及参与者清单给 各个参与者。
11、 根据权利要求 8-10任一所述的事务处理装置, 其特征在于:
所述对象的变化信息是对象的版本号。
12、一种协调者, 和参与者通信连接, 事务操作的对象由多个子对象组成, 其中, 一个所述子对象位于所述协调者中, 其他所述子对象分别位于不同的所 述参与者中, 所述协调者包括处理器以及与处理器通信的存储器, 所述存储器 用于存储程序指令, 所述处理器用于执行程序指令, 该程序指令用于:
向各个参与者发送查询消息,所述查询消息中携带有事务 ID、对象 ID以及 所述对象的变化信息, 其中所述事务 ID用于标记所述事务, 所述对象 ID用于 标记所述对象, 所述变化信息与所述对象的内容对应, 不同所述变化信息的所 述对象的内容不同;
接收各个参与者对所述查询消息的响应消息;
根据所述响应消息得出结论, 执行所述结论, 并将所述结论发送给所述参 与者, 所述结论包括下述至少一种:
如果任意一个响应消息中携带有第一信息, 则结论为执行事务, 其中, 所述第一信息表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 所述 对象在参与者中的变化信息与所述对象在协调者中的变化信息相同; 或者 如果任意一个响应消息中携带有第二信息, 则结论为终止事务, 其中, 所 述第二信息表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 所述对象在 参与者中的变化信息与所述对象在协调者的变化信息不同。
13、 根据权利要求 12所述的协调者, 其特征在于:
所述协调者、 参与者都是对象存储设备 OSD, 所述事务是对所有所述子对 象进行读取、 对所有所述子对象删除或者对所有所述子对象写入。
14、 根据权利要求 12所述的协调者, 其特征在于, 所述程序指令还用于: 接收原协调者发送的所述事务 ID、对象 ID、对象变化信息以及参与者清单。
15、 根据权利要求 12任一所述的协调者, 其特征在于:
所述对象的变化信息是对象的版本号。
16、 一种事务处理方法, 应用于协调者, 所述协调者和参与者通信连接, 事务操作的对象由多个子对象组成,其中,一个所述子对象位于所述协调者中, 其他所述子对象分别位于不同的所述参与者中, 其特征在于, 该方法包括: 所述协调者向各个参与者发送查询消息, 所述查询消息中携带有事务 ID以 及对象 ID, 其中所述事务 ID用于标记所述事务, 所述对象 ID用于标记所述对 象, 所述变化信息与所述对象的内容对应, 不同所述变化信息的所述对象的内 容不同;
所述协调者接收各个参与者对所述查询消息的响应消息, 所述响应消息携 带所述第五信息, 所述第五消息表示所述参与者不存在所述事务 ID, 存在所述 对象 ID, 其中, 所述第五信息中还携带有发出响应消息的参与者中所述对象变 化信息;
所述协调者根据所述响应消息得出结论, 所述协调者执行所述结论, 并将 所述结论发送给所述参与者, 所述结论包括下述至少一种:
如果所述对象在参与者中的变化信息与所述对象在协调者中的变化信 息相同, 则结论为执行事务; 或者 如果所述对象在参与者中的变化信息与所述对象在协调者中的变化信 息不同, 则结论为终止事务。
17、 根据权利要求 16所述的方法, 其特征在于:
所述协调者、 参与者都是对象存储设备 OSD, 所述事务是对所有所述子对 象进行读取、 对所有所述子对象删除或者对所有所述子对象写入。
18、 根据权利要求 16所述的方法, 其特征在于, 所述对象在参与者中的变 化信息与所述对象在协调者的变化信息不同, 具体是:
所述对象在参与者中的版本比所述对象在协调者的版本新; 或者
所述对象在参与者中的版本比所述对象在协调者的版本旧。
19、 根据权利要求 16、 17或 18所述的方法, 其特征在于, 所述协调者、 所述参与者均与原协调者通信连接, 所述原协调者无子对象, 所述方法之前进 一步包括:
原协调者失效后, 选择原参与者中的一个作为所述协调者。
20、 根据权利要求 19所述的方法, 其特征在于, 原协调者失效之前, 所述 方法进一步包括:
所述协调者接收原协调者发送的所述事务 ID、 对象 ID、 对象变化信息以及 参与者清单。
21、 根据权利要求 20所述的方法, 其特征在于, 原协调者失效之前, 所述 方法进一步包括:
所述原协调者发送操作请求给各个参与者, 所述操作请求中携带有所述对 象 ID, 操作类型、 协调者中记录的对象变化信息以及参与者清单, 所述参与者 清单中记录有所述原参与者。
所述协调者发送准备命令给各个参与者, 命令中携带事务 ID、 对象 ID、 协 调者中记录的对象的变化信息, 以及参与者清单, 以使各个所述原参与者接收 存储参与者清单, 并为事务分配资源。
22、 根据权利要求 16-21任一所述的方法, 其特征在于:
所述对象的变化信息是对象的版本号。
23、 一种事务处理装置, 与参与者通信连接, 事务操作的对象由多个子对 象组成, 其中, 一个所述子对象位于所述事务处理装置中, 其他所述子对象分 别位于不同的所述参与者中, 其特征在于, 该装置包括:
查询模块, 用于向各个参与者发送查询消息, 所述查询消息中携带有所述 查询消息中携带有事务 ID以及对象 ID , 其中所述事务 ID用于标记所述事务, 所述对象 ID用于标记所述对象, 所述变化信息与所述对象的内容对应, 不同所 述变化信息的所述对象的内容不同;
接收模块, 用于接收各个参与者对所述查询消息的响应消息, 所述响应消 息携带所述第五信息, 所述表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 其中, 所述第五信息中还携带有发出响应消息的参与者中所述对象变化信 息;
决策模块, 根据所述响应消息得出结论, 所述协调者执行所述结论, 并将 所述结论发送给所述参与者, 所述结论包括下述至少一种:
如果所述对象在参与者中的变化信息与所述对象在协调者中的变化信 息相同, 则结论为执行事务; 或者
如果所述对象在参与者中的变化信息与所述对象在协调者中的变化信 息不同, 则结论为终止事务;
执行模块, 用于执行所述决策模块的结论。
24、 根据权利要求 23所述的事务处理装置, 其特征在于:
所述协调者、 参与者都是对象存储设备 OSD, 所述事务是对所有所述子对 象进行读取、 对所有所述子对象删除或者对所有所述子对象写入。
25、 根据权利要求 23或 24所述的事务处理装置, 其特征在于, 所述协调 者、 所述参与者均与原协调者通信连接, 所述原协调者无子对象, 所述接收模 块进一步用于:
接收原协调发送的所述事务 ID、 对象 ID、 对象变化信息以及参与者清单给 各个参与者。
26、 根据权利要求 23-25任一所述的事务处理装置, 其特征在于: 所述对象的变化信息是对象的版本号。
27、一种协调者, 和参与者通信连接, 事务操作的对象由多个子对象组成, 其中, 一个所述子对象位于所述协调者中, 其他所述子对象分别位于不同的所 述参与者中, 所述协调者包括处理器以及与处理器通信的存储器, 所述存储器 用于存储程序指令, 所述处理器用于执行程序指令, 该程序指令用于:
向各个参与者发送查询消息, 所述查询消息中携带有事务 ID以及对象 ID, 其中所述事务 ID用于标记所述事务, 所述对象 ID用于标记所述对象, 所述变 化信息与所述对象的内容对应, 不同所述变化信息的所述对象的内容不同; 接收各个参与者对所述查询消息的响应消息, 所述响应消息携带所述第五 信息, 所述表示所述参与者不存在所述事务 ID, 存在所述对象 ID, 其中, 所述 第五信息中还携带有发出响应消息的参与者中所述对象变化信息;
根据所述响应消息得出结论, 所述协调者执行所述结论, 并将所述结论发 送给所述参与者, 所述结论包括下述至少一种:
如果所述对象在参与者中的变化信息与所述对象在协调者中的变化信 息相同, 则结论为执行事务; 或者
如果所述对象在参与者中的变化信息与所述对象在协调者中的变化信 息不同, 则结论为终止事务。
28、 根据权利要求 27所述的协调者, 其特征在于:
所述协调者、 参与者都是对象存储设备 OSD, 所述事务是对所有所述子对 象进行读取、 对所有所述子对象删除或者对所有所述子对象写入。
29、 根据权利要求 27所述的协调者, 其特征在于, 所述程序指令还用于: 接收原协调者发送的所述事务 ID、对象 ID、对象变化信息以及参与者清单。
30、 根据权利要求 27任一所述的协调者, 其特征在于:
所述对象的变化信息是对象的版本号。
PCT/CN2013/086572 2013-10-29 2013-11-05 一种事务处理方法与装置 WO2015062113A1 (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2016526114A JP6231675B2 (ja) 2013-10-29 2013-11-05 トランザクション処理方法および装置
CN201380002529.0A CN104220982B (zh) 2013-10-29 2013-11-05 一种事务处理方法与装置
EP13886150.5A EP3026574B1 (en) 2013-10-29 2013-11-05 Affair processing method and device
EP18177451.4A EP3514693A1 (en) 2013-10-29 2013-11-05 Transaction processing method and apparatus
US14/733,705 US9348841B2 (en) 2013-10-29 2015-06-08 Transaction processing method and system
US15/099,017 US10055445B2 (en) 2013-10-29 2016-04-14 Transaction processing method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2013086169 2013-10-29
CNPCT/CN2013/086169 2013-10-29

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/733,705 Continuation US9348841B2 (en) 2013-10-29 2015-06-08 Transaction processing method and system

Publications (1)

Publication Number Publication Date
WO2015062113A1 true WO2015062113A1 (zh) 2015-05-07

Family

ID=53003210

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2013/086572 WO2015062113A1 (zh) 2013-10-29 2013-11-05 一种事务处理方法与装置

Country Status (4)

Country Link
US (2) US9348841B2 (zh)
EP (2) EP3514693A1 (zh)
JP (2) JP6231675B2 (zh)
WO (1) WO2015062113A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160065498A1 (en) * 2014-08-26 2016-03-03 rift.IO, Inc. Distributed transaction subsystem
US9509773B2 (en) * 2014-09-10 2016-11-29 Futurewei Technologies, Inc. Array-based computations on a storage device
US10666495B2 (en) 2017-08-22 2020-05-26 International Business Machines Corporation Transaction processing
US11874816B2 (en) * 2018-10-23 2024-01-16 Microsoft Technology Licensing, Llc Lock free distributed transaction coordinator for in-memory database participants
US11640383B2 (en) * 2018-11-15 2023-05-02 Huawei Technologies Co., Ltd. Systems and methods for managing a shared database
WO2022038934A1 (ja) * 2020-08-18 2022-02-24 富士フイルム株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US11625389B2 (en) * 2021-03-19 2023-04-11 Microsoft Technology Licensing, Llc Snapshot isolation query transactions in distributed systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046815A (zh) * 2007-03-14 2007-10-03 华为技术有限公司 事务协调器、资源使用端、服务端及分布式事务处理方法
CN101706811A (zh) * 2009-11-24 2010-05-12 中国科学院软件研究所 一种分布式数据库系统事务提交方法
CN102750322A (zh) * 2012-05-22 2012-10-24 中国科学院计算技术研究所 一种机群文件系统分布式元数据一致性保证方法和系统
CN103064635A (zh) * 2012-12-19 2013-04-24 华为技术有限公司 分布式存储方法和分布式存储装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853843A (en) * 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
US4949251A (en) * 1988-07-18 1990-08-14 Digital Equipment Corporation Exactly-once semantics in a TP queuing system
US5434994A (en) * 1994-05-23 1995-07-18 International Business Machines Corporation System and method for maintaining replicated data coherency in a data processing system
US5781910A (en) * 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
JPH10289142A (ja) * 1997-04-16 1998-10-27 Kokusai Electric Co Ltd ネットワークのファイル更新システム
US7401084B1 (en) * 2001-06-14 2008-07-15 Oracle International Corporation Two-phase commit with queryable caches
JP2006178926A (ja) * 2004-10-18 2006-07-06 Hitachi Ltd 複数のオブジェクトベースのストレージ装置を使用したストレージ装置、システム、および方法
US20060184528A1 (en) * 2005-02-14 2006-08-17 International Business Machines Corporation Distributed database with device-served leases
JP4177339B2 (ja) 2005-02-16 2008-11-05 株式会社東芝 分散システム、コンピュータおよび分散システムの状態遷移制御方法
CN101981575B (zh) 2008-06-03 2012-11-28 图形科技公司 利用多事务技术复制面向对象环境中的对象的方法和装置
GB2472620B (en) * 2009-08-12 2016-05-18 Cloudtran Inc Distributed transaction processing
JP5480046B2 (ja) * 2010-07-12 2014-04-23 日本電信電話株式会社 分散トランザクション処理システム、装置、方法およびプログラム
US9055065B2 (en) * 2011-11-21 2015-06-09 Red Hat, lnc. Managing participant order in distributed transactions
US8676851B1 (en) * 2012-08-30 2014-03-18 Google Inc. Executing transactions in distributed storage systems
US9152649B2 (en) * 2012-10-17 2015-10-06 Datadirect Networks, Inc. Maintaining order and fault-tolerance in a distributed hash table system
US9152501B2 (en) * 2012-12-19 2015-10-06 International Business Machines Corporation Write performance in fault-tolerant clustered storage systems
US9652491B2 (en) * 2013-04-15 2017-05-16 International Business Machines Corporation Out-of-order execution of strictly-ordered transactional workloads

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046815A (zh) * 2007-03-14 2007-10-03 华为技术有限公司 事务协调器、资源使用端、服务端及分布式事务处理方法
CN101706811A (zh) * 2009-11-24 2010-05-12 中国科学院软件研究所 一种分布式数据库系统事务提交方法
CN102750322A (zh) * 2012-05-22 2012-10-24 中国科学院计算技术研究所 一种机群文件系统分布式元数据一致性保证方法和系统
CN103064635A (zh) * 2012-12-19 2013-04-24 华为技术有限公司 分布式存储方法和分布式存储装置

Also Published As

Publication number Publication date
US10055445B2 (en) 2018-08-21
EP3026574A1 (en) 2016-06-01
US9348841B2 (en) 2016-05-24
US20160232198A1 (en) 2016-08-11
EP3026574A4 (en) 2016-08-24
EP3514693A1 (en) 2019-07-24
JP2018049635A (ja) 2018-03-29
JP6475304B2 (ja) 2019-02-27
JP2016538631A (ja) 2016-12-08
US20150269185A1 (en) 2015-09-24
EP3026574B1 (en) 2018-09-05
JP6231675B2 (ja) 2017-11-15

Similar Documents

Publication Publication Date Title
US10055445B2 (en) Transaction processing method and apparatus
US7702741B2 (en) Configuring or reconfiguring a multi-master information sharing environment
US20200348851A1 (en) Data processing method and apparatus
US8898109B2 (en) Automatic transaction retry after session failure
US10073902B2 (en) Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency
KR102072726B1 (ko) 데이터베이스로의 미들-티어 트랜잭션 로그들의 인라인 위임을 지원하는 시스템들 및 방법들
US10831741B2 (en) Log-shipping data replication with early log record fetching
WO2018040589A1 (zh) 一种基于分布式存储系统的数据处理方法及存储设备
WO2018098972A1 (zh) 一种日志恢复方法、存储装置和存储节点
CN107402722B (zh) 一种数据迁移方法及存储设备
WO2022063322A1 (en) Hard drive migration method, distributed storage cluster system and storage medium
US10860447B2 (en) Database cluster architecture based on dual port solid state disk
JP6225262B2 (ja) 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法
JP2012018449A (ja) スナップショット取得処理プログラム、スナップショット取得処理方法、スナップショット・パティシパント・コンピュータ、スナップショット・コーディネータ・コンピュータ
JP2016517605A (ja) ビザンチン故障耐性データ複製を行う方法およびシステム
CN110888718A (zh) 分布式事务的实现方法及装置
WO2022048358A1 (zh) 数据处理方法、装置及存储介质
CN102833273B (zh) 临时故障时的数据修复方法及分布式缓存系统
US7899785B2 (en) Reconfiguring propagation streams in distributed information sharing
CN106997305B (zh) 一种事务处理方法与装置
WO2021082925A1 (zh) 一种交易处理的方法及装置
US10552057B2 (en) Methods for improving journal performance in storage networks and devices thereof
CN110196788B (zh) 一种数据读取方法、装置、系统及存储介质
CN104220982A (zh) 一种事务处理方法与装置
CN104680307A (zh) 一种物品事务处理方法和装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13886150

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016526114

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE