1.本公开涉及计算机技术领域,更具体地,涉及分布式事务的管理方法和装置、电子设备和介质。
背景技术:2.在分布式系统中,为了保证数据的高可用,通常会将一份数据保留多个副本,这些副本会放置在不同的节点上。在分布式系统中,事务的提交过程分为两个阶段。第一阶段下发预提交命令,等事务在所有节点预提交成功之后进行第二阶段下发正式提交命令。如果第一阶段有节点预提交失败,则第二阶段应该回滚。如果第一阶段所有节点预提交成功,则在第二阶段事务会在所有节点上正式提交。由于事务不同节点上最终正式提交的时间不一致,读取不同节点的同一份数据可能会出现不一致的状况。目前,可以通过全局快照的方式保证数据一致性,但由于每条语句都需要获取全局快照,在事务并发量很大时会导致巨大的网络流量,从而影响系统性能。因此,有必要提出一种网络流量小的事务管理方案。
技术实现要素:3.本公开的一个目的是提供一种新的分布式事务的管理方法和装置、电子设备和介质。
4.根据本公开的实施例的第一方面,提供了一种分布式事务的管理方法,包括:
5.获取分布式事务的时间戳,所述分布式事务的时间戳是全部事务参与节点完成对分布式事务的预提交时生成的时间戳;
6.将分布式事务的时间戳加入时间戳序列;
7.在全部事务参与节点完成对分布式事务的正式提交时,将分布式事务的状态从未完成状态变更为已完成状态;
8.响应于更新指令,根据所述时间戳序列和所述时间戳序列中的时间戳所对应的分布式事务的状态,更新可见分布式事务的范围。
9.可选地,所述方法还包括:
10.按照预设周期定时生成所述更新指令;或者,
11.响应于分布式事务的状态从未完成状态变更为已完成状态,触发生成所述更新指令。
12.可选地,所述获取分布式事务的时间戳,包括:在从事务协调节点接收到第一报告时,从时间戳服务器获取时间戳作为分布式事务的时间戳;所述第一报告是全部事务参与节点完成对分布式事务的预提交的报告;
13.所述在全部事务参与节点完成对分布式事务的正式提交时,将分布式事务的状态从未完成状态变更为已完成状态,包括:在从事务协调节点接收到第二报告时,将分布式事务的状态从未完成状态变更为已完成状态;所述第二报告是全部事务参与节点完成对分布式事务的正式提交的报告。
14.可选地,所述时间戳序列中的时间戳按照从小到大的顺序排列;
15.所述根据所述时间戳序列和所述时间戳序列中的时间戳所对应的分布式事务的状态,更新可见分布式事务的范围,包括:
16.在所述时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历;
17.将当前遍历到的时间戳作为目标时间戳;如果目标时间戳对应的分布式事务已完成,将临界时间戳修改为目标时间戳;如果目标时间戳对应的分布式事务未完成,结束遍历;
18.在遍历结束后,根据临界时间戳更新可见分布式事务的范围,或者,将临界时间戳发送给事务参与节点,以供事务参与节点根据临界时间戳更新可见分布式事务的范围。
19.可选地,所述根据临界时间戳更新可见分布式事务的范围,包括:
20.将小于等于临界时间戳的时间戳所对应的分布式事务确定为可见分布式事务;
21.将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务。
22.可选地,所述时间戳序列中的时间戳按照从小到大的顺序排列;
23.所述根据所述时间戳序列和所述时间戳序列中的时间戳所对应的分布式事务的状态,更新可见分布式事务的范围,包括:
24.清空第一列表中的时间戳;
25.在所述时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历;
26.将当前遍历到的时间戳作为目标时间戳;如果目标时间戳对应的分布式事务未完成,将目标时间戳加入第一列表;如果时间戳对应的分布式事务已完成并且第一列表为空,将临界时间戳修改为目标时间戳;如果目标时间戳对应的分布式事务已完成,并且目标时间戳对应的分布式事务与第一列表中的每一个时间戳所对应的分布式事务的数据对象都不同,将临界时间戳修改为目标时间戳;如果目标时间戳对应的分布式事务已提交,并且目标时间戳的分布式事务和第一列表中的任意一个时间戳所对应的分布式事务的数据对象相同,将目标时间戳加入到第一列表;
27.在遍历结束后,删除第一列表中大于临界时间戳的时间戳,以及,
28.根据临界时间戳和第一列表更新可见分布式事务的范围,或者,将临界时间戳和第一列表发送给事务参与节点,以供事务参与节点根据临界时间戳和第一列表更新可见分布式事务的范围。
29.可选地,所述根据临界时间戳和第一列表更新可见分布式事务的范围,包括:
30.将小于等于临界时间戳并且不在第一列表中的时间戳所对应的分布式事务确定为可见分布式事务;
31.将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务;
32.将第一列表中的时间戳所对应的分布式事务确定为不可见分布式事务。
33.可选地,所述临界时间戳的初始值为所述时间戳序列中最小的时间戳。
34.根据本公开的实施例的第二方面,提供了一种分布式事务的管理方法,应用于事务协调节点,所述方法包括:
35.在从全部事务参与节点的每一个事务参与节点分别接收到第一通知时,向管理装置发送第一报告,以触发管理装置执行第一预设操作;所述第一通知是事务参与节点完成对分布式事务的预提交的通知;所述第一预设操作包括:从时间戳服务器获取时间戳作为
分布式事务的时间戳,并且将分布式事务的时间戳加入时间戳序列;
36.在从全部事务参与节点的每一个事务参与节点分别接收到第二通知时,向管理装置发送第二报告,以触发管理装置执行第二预设操作;所述第二通知是事务参与节点完成对分布式事务的正式提交的通知;所述第二预设操作包括:将分布式事务的状态从未完成状态变更为已完成状态,根据所述时间戳序列和所述时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子;
37.从管理装置接收时间因子,将时间因子下发给事务参与节点,以供事务参与节点根据时间因子更新可见分布式事务的范围。
38.可选地,所述时间戳序列中的时间戳按照从小到大的顺序排列;所述时间因子包括临界时间戳;
39.所述根据所述时间戳序列和所述时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子,包括:在所述时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历;将当前遍历到的时间戳作为目标时间戳;如果目标时间戳对应的分布式事务已完成,将临界时间戳修改为目标时间戳;如果目标时间戳对应的分布式事务未完成,结束遍历;
40.所述根据时间因子更新可见分布式事务的范围,包括:将小于等于临界时间戳的时间戳所对应的分布式事务确定为可见分布式事务;将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务。
41.可选地,所述时间戳序列中的时间戳按照从小到大的顺序排列;所述时间因子包括临界时间戳和第一列表;
42.所述根据所述时间戳序列和所述时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子,包括:
43.清空第一列表中的时间戳;
44.在所述时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历;
45.将当前遍历到的时间戳作为目标时间戳;如果目标时间戳对应的分布式事务未完成,将目标时间戳加入第一列表;如果时间戳对应的分布式事务已完成并且第一列表为空,将临界时间戳修改为目标时间戳;如果目标时间戳对应的分布式事务已完成,并且目标时间戳对应的分布式事务与第一列表中的每一个时间戳所对应的分布式事务的数据对象都不同,将临界时间戳修改为目标时间戳;如果目标时间戳对应的分布式事务已提交,并且目标时间戳的分布式事务和第一列表中的任意一个时间戳所对应的分布式事务的数据对象相同,将目标时间戳加入到第一列表;
46.在遍历结束后,删除第一列表中大于临界时间戳的时间戳;
47.所述根据时间因子更新可见分布式事务的范围,包括:将小于等于临界时间戳并且不在第一列表中的时间戳所对应的分布式事务确定为可见分布式事务;将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务;将第一列表中的时间戳所对应的分布式事务确定为不可见分布式事务。
48.根据本公开的实施例的第三方面,提供了一种分布式事务的管理方法,应用于事务参与节点,所述方法包括:
49.在完成对分布式事务的预提交时,向事务协调节点发送第一通知;
50.在完成对分布式事务的正式提交时,向事务协调节点发送第二通知;
51.从事务协调节点接收时间因子,根据时间因子更新可见分布式事务的范围;
52.其中,
53.所述事务协调节点被设置为:在从全部事务参与节点的每一个事务参与节点分别接收到第一通知时,向管理装置发送第一报告,以触发管理装置执行第一预设操作;所述第一通知是事务参与节点完成对分布式事务的预提交的通知;所述第一预设操作包括:从时间戳服务器获取时间戳作为分布式事务的时间戳,并且将分布式事务的时间戳加入时间戳序列;以及,
54.在从全部事务参与节点的每一个事务参与节点分别接收到第二通知时,向管理装置发送第二报告,以触发管理装置执行第二预设操作;所述第二通知是事务参与节点完成对分布式事务的正式提交的通知;所述第二预设操作包括:将分布式事务的状态从未完成状态变更为已完成状态,根据所述时间戳序列和所述时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子。
55.可选地,所述时间戳序列中的时间戳按照从小到大的顺序排列;所述时间因子包括临界时间戳;
56.所述根据所述时间戳序列和所述时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子,包括:在所述时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历;将当前遍历到的时间戳作为目标时间戳;如果目标时间戳对应的分布式事务已完成,将临界时间戳修改为目标时间戳;如果目标时间戳对应的分布式事务未完成,结束遍历;
57.所述根据时间因子更新可见分布式事务的范围,包括:将小于等于临界时间戳的时间戳所对应的分布式事务确定为可见分布式事务;将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务。
58.可选地,所述时间戳序列中的时间戳按照从小到大的顺序排列;所述时间因子包括临界时间戳和第一列表;
59.所述根据所述时间戳序列和所述时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子,包括:
60.清空第一列表中的时间戳;
61.在所述时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历;
62.将当前遍历到的时间戳作为目标时间戳;如果目标时间戳对应的分布式事务未完成,将目标时间戳加入第一列表;如果时间戳对应的分布式事务已完成并且第一列表为空,将临界时间戳修改为目标时间戳;如果目标时间戳对应的分布式事务已完成,并且目标时间戳对应的分布式事务与第一列表中的每一个时间戳所对应的分布式事务的数据对象都不同,将临界时间戳修改为目标时间戳;如果目标时间戳对应的分布式事务已提交,并且目标时间戳的分布式事务和第一列表中的任意一个时间戳所对应的分布式事务的数据对象相同,将目标时间戳加入到第一列表;
63.在遍历结束后,删除第一列表中大于临界时间戳的时间戳;
64.所述根据时间因子更新可见分布式事务的范围,包括:将小于等于临界时间戳并且不在第一列表中的时间戳所对应的分布式事务确定为可见分布式事务;将大于临界时间
戳的时间戳所对应的分布式事务确定为不可见分布式事务;将第一列表中的时间戳所对应的分布式事务确定为不可见分布式事务。
65.可选地,所述方法还包括:
66.接收客户端对第一数据对象的查询请求;
67.响应于所述查询请求,确定第一时间戳,所述第一时间戳是所述第一数据对象的全部可见分布式事务的时间戳中最大的一个时间戳;
68.根据所述第一时间戳获取对应版本的第一数据对象返回给客户端。
69.根据本公开的实施例的第四方面,提供了一种分布式事务的管理装置,包括:
70.获取模块,用于获取分布式事务的时间戳,所述分布式事务的时间戳是全部事务参与节点完成对分布式事务的预提交时生成的时间戳;
71.加入模块,用于将分布式事务的时间戳加入时间戳序列;
72.变更模块,用于在全部事务参与节点完成对分布式事务的正式提交时,将分布式事务的状态从未完成状态变更为已完成状态;
73.更新模块,用于响应于更新指令,根据所述时间戳序列和所述时间戳序列中的时间戳所对应的分布式事务的状态,更新可见分布式事务的范围。
74.根据本公开的实施例的第五方面,提供了一种电子设备,包括处理器和存储器;所述存储器中存储有计算机可执行命令,所述计算机可执行命令被所述处理器执行时,实现本公开的第一方面、第二方面、第三方面中的任一方面的方法。
75.根据本公开的实施例的第六方面,提供了一种计算机可读存储介质,存储有计算机可执行命令,所述计算机可执行命令被处理器执行时,实现本公开的第一方面、第二方面、第三方面中的任一方面的方法。
76.本公开实施例的分布式事务的管理方法和装置、电子设备和介质,利用时间戳机制确定分布式事务的可见性,保证各个节点所感知的可见事务的范围是相同的,使得不同节点基于同样的可见事务范围获取数据,从而保证从不同节点读取数据的一致性。本公开实施例的分布式事务的管理方法和装置、电子设备和介质,利用时间戳实现数据的一致性,不会过多产生网络流量,不影响分布式系统的并发性能。
77.通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
78.被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开的原理。
79.图1是可用于实现本公开实施例的分布式系统的示意图;
80.图2是可用于实现本公开实施例的电子设备的示意图;
81.图3是本公开实施例提供的分布式事务的管理方法的流程图;
82.图4是本公开实施例提供的时间戳序列的示意图;
83.图5是本公开实施例提供的分布式事务的管理装置的框图。
具体实施方式
84.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
85.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
86.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
87.在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
88.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
89.《分布式系统实施例》
90.参见图1所示,对本公开实施例涉及的分布式系统进行说明。在该分布式系统中,包括管理装置、事务协调节点以及多个事务参与节点。事务协调节点和每一个事务参与节点通信连接。该分布式系统还可以包括时间戳服务器,管理装置和时间戳服务器进行通信。或者,该分布式系统可以不包括时间戳服务器,管理装置可以和外部的时间戳服务器进行通信。
91.事务协调节点是事务的发起者和事务进度的协调者,事务参与节点是具体执行、提交事务的节点,事务协调节点本身也可以是事务参与节点。也就是说,在分布式系统中,可以有一个节点既作为事务参与节点,又作为事务协调节点。
92.在分布式系统中,事务的提交过程分为两个阶段。事务协调节点发起一个分布式事务,在第一阶段,事务协调节点通知每一个事务参与节点对事务进行预提交,事务参与节点向事务协调节点报告预提交结果。如果第一阶段有事务参与节点预提交失败,则第二阶段应该回滚。如果全部事务参与节点都完成对该事务的预提交,则在第二阶段,事务协调节点通知每一个事务参与节点对该事务进行正式提交。
93.在一个例子中,该分布式系统可以为分布式数据库系统。
94.图1中的管理装置、事务协调节点、事务参与节点、时间戳服务器可以是一种电子设备,该种电子设备可以具有图2所示的硬件配置。
95.参见图2,电子设备包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500和输入装置1600。处理器1100例如可以是中央处理器cpu、微控制单元mcu等。存储器1200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括usb接口、串行接口等。通信装置1400例如是有线网卡或无线网卡。显示装置1500例如是液晶显示屏、触摸屏。输入装置1600例如包括触摸屏、键盘、鼠标、麦克风等。
96.应用于本公开的实施例中,电子设备的存储器1200用于存储指令,该指令用于控制处理器1100进行操作以支持实现本公开任意实施例的方法。技术人员可以根据本公开所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
97.本领域技术人员应当理解,尽管在图2中示出了电子设备的多个装置,但是,本公开实施例的电子设备可以仅涉及其中的部分装置,例如,只涉及处理器1100、存储器1200和通信装置1400。
98.图2所示的硬件配置仅是解释性的,并且决不是为了要限制本公开、其应用或用途。
99.《方法实施例》
100.分布式事务的读一致性在很多场景十分重要,例如在金融支付等业务场景中,对账业务是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线,更加需要保证读取数据的一致性。但由于分布式事务在不同事务参与节点上正式提交的时间不一致,读取不同节点的数据可能会出现不一致的状况。
101.例如:假设分布式系统中存在第一事务参与节点和第二事务参与节点,第一账户的余额为x元,第二账户的余额为y元。现在要从第一账户向第二账户转账100元,也就是从第一账户扣减100元,向第二账户增加100元,使得第一账户的余额变为x-100元,第二账户的余额变为y+100元。假设转账事件在第一事务参与节点已经完成正式提交,但由于网络延迟或者由于第二事务参与节点的负载过重,导致该转账事件在第二事务节点没有完成正式提交。此时,一个读事务要做对账操作,该读事务从第一事务参与节点读到的第一账户余额会是x-100元,从第二事务节点读到的第一账户余额会是x元,从第一事务参与节点和第二事务参与节点读取的数据出现了不一致。
102.为了保证分布式系统数据的一致性,参见图3所示,本公开实施例提供了一种分布式事务的管理方法。该分布式事务的管理方法可以由前述的管理装置执行。该管理装置例如可以是分布式系统的事务管理服务器、分布式数据库的事务管理服务器。
103.该分布式事务的管理方法包括步骤s102-s108。
104.步骤s102、获取分布式事务的时间戳,所述分布式事务的时间戳是全部事务参与节点完成对分布式事务的预提交时生成的时间戳。
105.在数据库系统中,事务可以是由多条数据库语句组成的一个执行单元。
106.在本公开的一个实施例中,时间戳可以是真实的时间。在本公开实施例中,时间戳也可以是表征真实时间的虚拟时间,例如时间戳可以一个数值,用于比较判定事件之间的时间先后关系。在本公开的实施例中,时间戳服务器按照单调递增的方式生成时间戳,即越晚生成的时间戳的值越大。
107.在本公开的一个实施例中,事务协调节点发起一个分布式事务后,所有的事务参与节点都需要对该分布式事务进行预提交,事务参与节点在完成预提交之后会通知给事务协调节点,事务协调节点在确认所有事务参与节点全部完成对分布式事务的预提交时,通知给管理装置。管理装置获知到所有事务参与节点都已完成对分布式事务的预提交时,向时间戳服务器请求时间戳,时间戳服务器会生成时间戳返回给管理装置,管理装置将该时间戳作为分布式事务的时间戳。
108.在本公开的一个实施例中,事务参与节点在完成对分布式事务的预提交时,向事务协调节点发送第一通知。事务协调节点在从全部事务参与节点的每一个事务参与节点都接收到第一通知时,可以确认全部事务参与节点都已完成对该分布式事务的预提交,向管理装置发送第一报告。第一报告用于报告全部事务参与节点完成对该分布式事务的预提
交。管理装置接收到第一报告后,从时间戳服务器获取时间戳作为分布式事务的时间戳并且将分布式事务的时间戳加入时间戳序列。此时,分布式事务的状态为未完成状态。
109.步骤s104、将分布式事务的时间戳加入时间戳序列。
110.在本公开的一个实施例中,时间戳序列中的时间戳按照从小到大的顺序排列,也就是说,在时间戳序列中,多个时间戳之间按照其对应的分布式事务在全部事务参与节点上完成预提交的时间的先后顺序排列。
111.参见图4所示的时间戳序列,该时间戳序列中含有以下时间戳:
…
、97、98、99、100、101、102、103。在当前时刻,时间戳序列中最大的时间戳为时间戳103。其中,小于97的时间戳,以及时间戳97、时间戳98、时间戳99、时间戳101、时间戳102所对应的分布式事务已完成,在图4中用圆形框表示。时间戳100和时间戳102所对应的分布式事务未完成,在图4中用方形框表示。
112.步骤s106、在全部事务参与节点完成对分布式事务的正式提交时,将分布式事务的状态从未完成状态变更为已完成状态。
113.在本公开的一个实施例中,事务参与节点在完成对分布式事务的正式提交时,向事务协调节点发送第二通知。事务协调节点在从全部事务参与节点的每一个事务参与节点都接收到第二通知时,可以确认全部事务参与节点都已完成对该分布式事务的正式提交,向管理装置发送第二报告。第二报告用于报告全部事务参与节点完成对该分布式事务的正式提交。管理装置接收到第二报告后,将分布式事务的状态从未完成状态变更为已完成状态。
114.步骤s108、响应于更新指令,根据时间戳序列和时间戳序列中的时间戳所对应的分布式事务的状态,更新可见分布式事务的范围。
115.在本公开的一个实施例中,管理装置按照预设周期定时生成更新指令。也就是说,管理装置按照预设周期去更新可见分布式事务的范围。
116.在本公开的一个实施例中,响应于分布式事务的状态从未完成状态变更为已完成状态,触发生成更新指令。也就是说,管理装置在每次将分布式事务的状态从未完成状态变更为已完成状态后,更新一次可见分布式事务的范围。
117.在本公开的一个实施例中,根据时间戳序列和时间戳序列中的时间戳所对应的分布式事务的状态,更新可见分布式事务的范围,可以是:根据时间戳序列和时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子,根据时间因子更新可见分布式事务的范围。
118.在本公开的一个实施例中,由管理装置根据时间戳序列和时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子,根据时间因子更新可见分布式事务的范围。或者,管理装置根据时间戳序列和时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子,将时间因子通过事务协调节点下发给事务参与节点,由事务参与节点根据时间因子更新可见分布式事务的范围。
119.下面说明更新时间因子和根据时间因子更新可见分布式事务的范围的第一种实现方式。
120.在第一种方式中,时间戳序列中的时间戳按照从小到大的顺序排列,时间因子包括临界时间戳。
121.在第一种方式中,根据时间戳序列中的时间戳和分布式事务的完成状态,更新时间因子的过程可以包括步骤s202-s204。
122.步骤s202、在时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历。
123.在本公开的一个实施例中,临界时间戳的初始值为时间戳序列中最小的时间戳。
124.步骤s204、将当前遍历到的时间戳作为目标时间戳。如果目标时间戳对应的分布式事务已完成,将临界时间戳修改为目标时间戳。如果目标时间戳对应的分布式事务未完成,结束遍历。
125.根据第一种实现方式,在遍历过程中,如果遇到需要结束遍历的事件,则不再继续遍历而是结束遍历,也就是说,不一定会遍历到时间戳序列中的最后一个时间戳。
126.在第一种方式中,根据时间因子更新可见分布式事务的范围的过程可以包括步骤s302。
127.步骤s302、将小于等于临界时间戳的时间戳所对应的分布式事务确定为可见分布式事务。将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务。
128.下面利用图4所示的时间戳序列,对第一种方式进行举例说明。
129.参见图4所示的时间戳序列,该时间戳序列中含有以下时间戳:
…
、97、98、99、100、101、102、103。在当前时刻,该时间戳序列中最大的时间戳为时间戳103。其中,小于97的时间戳,以及时间戳97、时间戳98、时间戳99、时间戳101、时间戳103所对应的分布式事务已完成,在图4中用圆形框表示。时间戳100和时间戳102所对应的分布式事务未完成,在图4中用方形框表示。
130.假设当前的临界时间戳为时间戳97,根据上述步骤s202-s204,可知:
131.从时间戳98开始向后遍历,也就是按照时间戳98、时间戳99、时间戳100、
…
顺序进行遍历。
132.第一个遍历到的时间戳是98,将时间戳98作为目标时间戳,由于时间戳98对应的分布式事务已完成,将临界时间戳修改为时间戳98,继续进行遍历。
133.第二个遍历到的时间戳是99,将时间戳99作为目标时间戳,由于时间戳99对应的分布式事务已完成,将临界时间戳修改为时间戳99,继续进行遍历。
134.第三个遍历到的时间戳是100,将时间戳100作为目标时间戳,由于时间戳99对应的分布式事务未完成,结束遍历,结束遍历时临界时间戳为时间戳99。
135.临界时间戳为时间戳99,根据步骤s302,将小于等于99的时间戳所对应的分布式事务确定为可见的分布式事务,将大于99的时间戳所对应的分布式事务确定为不可见的分布式事务,也就是将时间戳100、时间戳101、时间戳102、时间戳103所对应的分布式事务确定为不可见的分布式事务。
136.下面说明更新时间因子和根据时间因子更新可见分布式事务的范围的第二种实现方式。
137.在第二种方式中,时间戳序列中的时间戳按照从小到大的顺序排列,时间因子包括临界时间戳和第一列表。
138.在第二种方式中,根据时间戳序列中的时间戳和分布式事务的完成状态,更新时间因子的过程可以包括步骤s402-s408。
139.步骤s402、清空第一列表中的时间戳。
140.步骤s404、在时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历。
141.在本公开的一个实施例中,临界时间戳的初始值为时间戳序列中最小的时间戳。
142.步骤s406、将当前遍历到的时间戳作为目标时间戳。
143.如果目标时间戳对应的分布式事务未完成,将目标时间戳加入第一列表。
144.如果时间戳对应的分布式事务已完成并且第一列表为空,将临界时间戳修改为目标时间戳。
145.如果目标时间戳对应的分布式事务已完成,并且目标时间戳对应的分布式事务与第一列表中的每一个时间戳所对应的分布式事务的数据对象都不同,将临界时间戳修改为目标时间戳。
146.如果目标时间戳对应的分布式事务已提交,并且目标时间戳的分布式事务和第一列表中的任意一个时间戳所对应的分布式事务的数据对象相同,将目标时间戳加入到第一列表。
147.步骤s408、在遍历结束后,删除第一列表中大于临界时间戳的时间戳。
148.根据第二种实现方式,会遍历到时间戳序列中的最后一个时间戳。
149.在第二种方式中,根据时间因子更新可见分布式事务的范围的过程可以包括步骤s502。
150.s502、将小于等于临界时间戳并且不在第一列表中的时间戳所对应的分布式事务确定为可见分布式事务。将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务。将第一列表中的时间戳所对应的分布式事务确定为不可见分布式事务。
151.下面利用图4所示的时间戳序列,对第二种方式进行举例说明。
152.参见图4所示的时间戳序列,该时间戳序列中含有以下时间戳:
…
、97、98、99、100、101、102、103。在当前时刻,该时间戳序列中最大的时间戳为时间戳103。其中,小于97的时间戳,以及时间戳97、时间戳98、时间戳99、时间戳101、时间戳103所对应的分布式事务已完成,在图4中用圆形框表示。时间戳100和时间戳102所对应的分布式事务未完成,在图4中用方形框表示。
153.假设当前的临界时间戳为时间戳99。根据步骤s402-s408可知,首先清空第一列表中的时间戳,然后从时间戳100开始向后遍历,也就是按照时间戳100、时间戳101、时间戳102、时间戳102、时间戳103的顺序进行遍历。
154.例子1:
155.根据上述步骤s402-s408,可知:
156.第一个遍历到的时间戳是时间戳100,将时间戳100作为目标时间戳,由于时间戳100对应的分布式事务未完成,将时间戳100加入到第一列表中。此时,临界时间戳为时间戳99,第一列表中含有时间戳100。
157.第二个遍历到的时间戳是101,将时间戳101作为目标时间戳,由于时间戳101对应的分布式事务已完成,时间戳101和时间戳100的数据对象不同,将临界时间戳修改为时间戳101。此时,临界时间戳为时间戳101,第一列表中含有时间戳100。
158.第三个遍历到的时间戳是102,将时间戳102作为目标时间戳,由于时间戳102对应
的分布式事务未完成,将时间戳102加入到第一列表中。此时,临界时间戳为时间戳101,第一列表中含有时间戳100和时间戳102。
159.第四个遍历到的时间戳是103,将时间戳103作为目标时间戳,由于时间戳103对应的分布式事务已完成,时间戳103和时间戳100的数据对象不同,时间戳103和时间戳102的数据对象也不同,将临界时间戳修改为时间戳103。此时,临界时间戳为时间戳103,第一列表中含有时间戳100和时间戳102。
160.可见,遍历结束后,临界时间戳为时间戳103,第一列表中含有时间戳100和时间戳102。
161.根据步骤s502可知,将小于等于99的时间戳所对应的分布式事务确定为可见的分布式事务,将时间戳101和时间戳103所对应的分布式事务确定为可见的分布式事务,将时间戳100和时间戳102所对应的分布式事务确定为不可见的分布式事务。
162.例子2:
163.根据上述步骤s402-s408,可知:
164.第一个遍历到的时间戳是时间戳100,将时间戳100作为目标时间戳,由于时间戳100对应的分布式事务未完成,将时间戳100加入到第一列表中。此时,临界时间戳为时间戳99,第一列表中含有时间戳100。
165.第二个遍历到的时间戳是101,将时间戳101作为目标时间戳,由于时间戳101对应的分布式事务已完成,时间戳101和时间戳100的数据对象相同,将时间戳100加入第一列表中。此时,临界时间戳为时间戳99,第一列表中含有时间戳100和时间戳101。
166.第三个遍历到的时间戳是102,将时间戳102作为目标时间戳,由于时间戳102对应的分布式事务未完成,将时间戳102加入到第一列表中。此时,临界时间戳为时间戳99,第一列表中含有时间戳100、时间戳101和时间戳102。
167.第四个遍历到的时间戳是103,将时间戳103作为目标时间戳,由于时间戳103对应的分布式事务已完成,时间戳103和时间戳100的数据对象不同,时间戳103和时间戳102的数据对象不同,时间戳101和时间戳102的数据对象不同,将临界时间戳修改为时间戳103。此时,临界时间戳为时间戳103,第一列表中含有时间戳100、时间戳101和时间戳102。
168.可见,遍历结束后,临界时间戳为时间戳103,第一列表中含有时间戳100、时间戳101和时间戳102。
169.根据步骤s502可知,将小于等于99的时间戳所对应的分布式事务确定为可见的分布式事务,将时间戳103所对应的分布式事务确定为可见的分布式事务,将时间戳100、时间戳101和时间戳102所对应的分布式事务确定为不可见的分布式事务。
170.例子3:
171.根据上述步骤s402-s408,可知:
172.第一个遍历到的时间戳是时间戳100,将时间戳100作为目标时间戳,由于时间戳100对应的分布式事务未完成,将时间戳100加入到第一列表中。此时,临界时间戳为时间戳99,第一列表中含有时间戳100。
173.第二个遍历到的时间戳是101,将时间戳101作为目标时间戳,由于时间戳101对应的分布式事务已完成,时间戳101和时间戳100的数据对象不同,将临界时间戳修改为时间戳101。此时,临界时间戳为时间戳101,第一列表中含有时间戳100。
174.第三个遍历到的时间戳是102,将时间戳102作为目标时间戳,由于时间戳102对应的分布式事务未完成,将时间戳102加入到第一列表中。此时,临界时间戳为时间戳101,第一列表中含有时间戳100和时间戳102。
175.第四个遍历到的时间戳是103,将时间戳103作为目标时间戳,由于时间戳103对应的分布式事务已完成,时间戳103和时间戳101的数据对象相同,将时间戳103加入第一列表。此时,临界时间戳为时间戳101,第一列表中含有时间戳100、时间戳102和时间戳103。
176.可见,遍历结束后,临界时间戳为时间戳101,第一列表中含有时间戳100、时间戳102和时间戳103。根据步骤s308,删除第一列表中大于临界时间戳的时间戳,也就是删除第一列表中的时间戳102和时间戳103,使得第一列表中的时间戳仅包含时间戳100。最终,临界时间戳为时间戳101,第一列表中含有时间戳100。
177.根据步骤s502可知,时间戳序列中的小于等于99的时间戳所对应的分布式事务可见,时间戳101所对应的分布式事务可见,时间戳100、时间戳102和时间戳103所对应的分布式事务不可见。
178.本公开实施例的分布式事务的管理方法,利用时间戳机制确定分布式事务的可见性,保证各个节点所感知的可见事务的范围是相同的,使得不同节点基于同样的可见事务范围获取数据,从而保证从不同节点读取数据的一致性。本公开实施例的分布式事务的管理方法,利用时间戳实现数据的一致性,不会过多产生网络流量,不影响分布式系统的并发性能。
179.本公开实施例提供了一种分布式事务的管理方法,应用于事务协调节点,所述方法包括步骤s602-s606。
180.步骤s602、在从全部事务参与节点的每一个事务参与节点分别接收到第一通知时,向管理装置发送第一报告,以触发管理装置执行第一预设操作。其中,第一通知是事务参与节点完成对分布式事务的预提交的通知。第一预设操作包括:从时间戳服务器获取时间戳作为分布式事务的时间戳,并且将分布式事务的时间戳加入时间戳序列。
181.步骤s604、在从全部事务参与节点的每一个事务参与节点分别接收到第二通知时,向管理装置发送第二报告,以触发管理装置执行第二预设操作。其中,第二通知是事务参与节点完成对分布式事务的正式提交的通知。第二预设操作包括:将分布式事务的状态从未完成状态变更为已完成状态,根据时间戳序列和时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子。
182.步骤s606、从管理装置接收时间因子,将时间因子下发给事务参与节点,以供事务参与节点根据时间因子更新可见分布式事务的范围。
183.本公开实施例提供了一种分布式事务的管理方法,应用于事务参与节点,所述方法包括步骤s702-s706。
184.步骤s702、在完成对分布式事务的预提交时,向事务协调节点发送第一通知。
185.步骤s704、在完成对分布式事务的正式提交时,向事务协调节点发送第二通知。
186.步骤s706、从事务协调节点接收时间因子,根据时间因子更新可见分布式事务的范围。
187.其中,事务协调节点被设置为:在从全部事务参与节点的每一个事务参与节点分别接收到第一通知时,向管理装置发送第一报告,以触发管理装置执行第一预设操作。第一
通知是事务参与节点完成对分布式事务的预提交的通知。第一预设操作包括:从时间戳服务器获取时间戳作为分布式事务的时间戳,并且将分布式事务的时间戳加入时间戳序列;以及,在从全部事务参与节点的每一个事务参与节点分别接收到第二通知时,向管理装置发送第二报告,以触发管理装置执行第二预设操作。第二通知是事务参与节点完成对分布式事务的正式提交的通知。第二预设操作包括:将分布式事务的状态从未完成状态变更为已完成状态,根据时间戳序列和时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子。
188.在一个例子中,时间戳序列中的时间戳按照从小到大的顺序排列,时间因子包括临界时间戳。
189.在该例子中,管理装置根据时间戳序列和时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子,包括:在时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历。将当前遍历到的时间戳作为目标时间戳。如果目标时间戳对应的分布式事务已完成,将临界时间戳修改为目标时间戳。如果目标时间戳对应的分布式事务未完成,结束遍历。
190.在该例子中,事务参与节点根据时间因子更新可见分布式事务的范围,包括:将小于等于临界时间戳的时间戳所对应的分布式事务确定为可见分布式事务。将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务。
191.在该例子中,临界时间戳的初始值为时间戳序列中最小的时间戳。
192.在一个例子中,时间戳序列中的时间戳按照从小到大的顺序排列,时间因子包括临界时间戳和第一列表。
193.在该例子中,管理装置根据时间戳序列和时间戳序列中的时间戳所对应的分布式事务的状态更新时间因子,包括步骤s802-s808。
194.s802、清空第一列表中的时间戳。
195.s804、在时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历。
196.s806、将当前遍历到的时间戳作为目标时间戳。如果目标时间戳对应的分布式事务未完成,将目标时间戳加入第一列表。如果时间戳对应的分布式事务已完成并且第一列表为空,将临界时间戳修改为目标时间戳。如果目标时间戳对应的分布式事务已完成,并且目标时间戳对应的分布式事务与第一列表中的每一个时间戳所对应的分布式事务的数据对象都不同,将临界时间戳修改为目标时间戳。如果目标时间戳对应的分布式事务已提交,并且目标时间戳的分布式事务和第一列表中的任意一个时间戳所对应的分布式事务的数据对象相同,将目标时间戳加入到第一列表。
197.s808、在遍历结束后,删除第一列表中大于临界时间戳的时间戳。
198.在该例子中,事务参与节点根据时间因子更新可见分布式事务的范围,包括:将小于等于临界时间戳并且不在第一列表中的时间戳所对应的分布式事务确定为可见分布式事务。将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务。将第一列表中的时间戳所对应的分布式事务确定为不可见分布式事务。
199.在该例子中,临界时间戳的初始值为时间戳序列中最小的时间戳。
200.在事务参与节点更新可见分布式事务的范围之后,所述方法还可以包括步骤s902-s906。
201.s902、事务参与节点接收客户端对第一数据对象的查询请求。
202.s904、响应于所述查询请求,事务参与节点确定第一时间戳,所述第一时间戳是第一数据对象的全部可见分布式事务的时间戳中最大的一个时间戳。
203.s906、事务参与节点根据所述第一时间戳获取对应版本的第一数据对象返回给客户端。
204.在第一数据对象的全部可见分布式事务的时间戳中,选取最大的一个时间戳对应版本的第一数据对象,能够保证在所有节点读到的数据都是一致的。
205.例如:假设分布式系统中存在第一事务参与节点和第二事务参与节点,第一账户的余额为x元,第二账户的余额为y元。现在要从第一账户向第二账户转账100元,也就是从第一账户扣减100元,向第二账户增加100元,使得第一账户的余额变为x-100元,第二账户的余额变为y+100元。假设转账事件在第一事务参与节点已经完成正式提交,但由于网络延迟或者由于第二事务参与节点的负载过重,导致该转账事件在第二事务参与节点没有完成正式提交。此时,该转账事件不可见,从第一事务参与节点读到的第一账户余额为x元,从第二事务参与节点读到的第一账户余额也为x元,第一事务参与节点和第二事务参与节点读取的数据保持一致。
206.本公开实施例的分布式事务的管理方法,利用时间戳机制确定事务的可见性,在读取数据时向客户返回可见事务对应版本的数据,从而保证各个节点读取数据的一致性。本公开实施例的分布式事务的管理方法,利用时间戳实现数据的一致性,不会过多产生网络流量,不影响分布式系统的并发性能。
207.本公开实施例的分布式事务的管理方法,可以应用于分布式数据库。
208.《装置实施例》
209.参见图5所示,本公开的实施例提供了一种分布式事务的管理装置。该分布式事务的管理装置10包括获取模块12、加入模块14、变更模块16以及更新模块18。
210.获取模块12,用于获取分布式事务的时间戳,所述分布式事务的时间戳是全部事务参与节点完成对分布式事务的预提交时生成的时间戳。
211.加入模块14,用于将分布式事务的时间戳加入时间戳序列。
212.变更模块16,用于在全部事务参与节点完成对分布式事务的正式提交时,将分布式事务的状态从未完成状态变更为已完成状态。
213.更新模块18,用于响应于更新指令,根据时间戳序列和时间戳序列中的时间戳所对应的分布式事务的状态,更新可见分布式事务的范围。
214.在一个例子中,所述管理装置还包括生成模块。
215.所述生成模块,用于按照预设周期定时生成所述更新指令,或者,响应于分布式事务的状态从未完成状态变更为已完成状态,触发生成所述更新指令。
216.在一个例子中,获取模块12具体用于:在从事务协调节点接收到第一报告时,从时间戳服务器获取时间戳作为分布式事务的时间戳。第一报告是全部事务参与节点完成对分布式事务的预提交的报告。
217.在一个例子中,变更模块16具体用于在:在从事务协调节点接收到第二报告时,将分布式事务的状态从未完成状态变更为已完成状态。第二报告是全部事务参与节点完成对分布式事务的正式提交的报告。
218.在一个例子中,时间戳序列中的时间戳按照从小到大的顺序排列。
219.在一个例子中,更新模块18包括第一遍历子模块和第一更新子模块。
220.第一遍历子模块,用于在时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历。将当前遍历到的时间戳作为目标时间戳。如果目标时间戳对应的分布式事务已完成,将临界时间戳修改为目标时间戳。如果目标时间戳对应的分布式事务未完成,结束遍历。
221.第一更新子模块,用于在遍历结束后,根据临界时间戳更新可见分布式事务的范围,或者,将临界时间戳发送给事务参与节点,以供事务参与节点根据临界时间戳更新可见分布式事务的范围。
222.在一个例子中,所述根据临界时间戳更新可见分布式事务的范围,包括:将小于等于临界时间戳的时间戳所对应的分布式事务确定为可见分布式事务。将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务。
223.在一个例子中,更新模块18包括第二遍历模块和第二更新子模块。
224.第二遍历子模块,用于清空第一列表中的时间戳。在时间戳序列中,从临界时间戳之后的第一个时间戳开始向后进行遍历。将当前遍历到的时间戳作为目标时间戳。如果目标时间戳对应的分布式事务未完成,将目标时间戳加入第一列表。如果时间戳对应的分布式事务已完成并且第一列表为空,将临界时间戳修改为目标时间戳。如果目标时间戳对应的分布式事务已完成,并且目标时间戳对应的分布式事务与第一列表中的每一个时间戳所对应的分布式事务的数据对象都不同,将临界时间戳修改为目标时间戳。如果目标时间戳对应的分布式事务已提交,并且目标时间戳的分布式事务和第一列表中的任意一个时间戳所对应的分布式事务的数据对象相同,将目标时间戳加入到第一列表。在遍历结束后,删除第一列表中大于临界时间戳的时间戳。
225.第二更新子模块,用于根据临界时间戳和第一列表更新可见分布式事务的范围,或者,将临界时间戳和第一列表发送给事务参与节点,以供事务参与节点根据临界时间戳和第一列表更新可见分布式事务的范围。
226.在一个例子中,所述根据临界时间戳和第一列表更新可见分布式事务的范围,包括:将小于等于临界时间戳并且不在第一列表中的时间戳所对应的分布式事务确定为可见分布式事务。将大于临界时间戳的时间戳所对应的分布式事务确定为不可见分布式事务。将第一列表中的时间戳所对应的分布式事务确定为不可见分布式事务。
227.在一个例子中,临界时间戳的初始值为时间戳序列中最小的时间戳。
228.本公开实施例的分布式事务的管理装置,利用时间戳机制确定分布式事务的可见性,保证各个节点所感知的可见事务的范围是相同的,使得不同节点基于同样的可见事务范围获取数据,从而保证从不同节点读取数据的一致性。本公开实施例的分布式事务的管理装置,利用时间戳实现数据的一致性,不会过多产生网络流量,不影响分布式系统的并发性能。
229.本公开实施例的分布式事务的管理装置,可以应用于分布式数据库。该分布式事务的管理装置例如可以是分布式数据库的管理服务器。
230.《电子设备实施例》
231.本公开的实施例还提供了一种电子设备,包括处理器和存储器,该存储器存储有
计算机可执行命令,该计算机可执行命令被该处理器执行时,实现前述任一实施例公开的方法。
232.本实施例中,电子设备例如可以是图2中的电子设备。在一个例子中,该电子设备例如可以是分布式数据库的管理服务器。
233.《计算机可读存储介质》
234.本公开的实施例还提供了一种计算机可读存储介质,其上存储有计算机可执行命令,该计算机可执行命令被处理器执行时,实现前述任一实施例公开的方法。
235.本公开可以是方法、装置、电子设备、系统、和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
236.计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
237.这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
238.用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
239.这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/
或框图中各方框的组合,都可以由计算机可读程序指令实现。
240.这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
241.也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
242.附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
243.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本公开的范围由所附权利要求来限定。