用于分布式数据库的提供时钟服务的方法和装置与流程



1.本说明书实施例通常涉及计算机技术领域,尤其涉及用于分布式数据库的提供时钟服务的方法和装置。


背景技术:



2.随着互联网技术和大数据技术的飞速发展,分布式数据库(distributed database,ddb)取得了越来越广泛的应用。分布式数据库由多个节点组成,各个节点需要通过交换消息相互通信。由于分布式数据库的每个节点上的数据库实例拥有相对独立的时钟或日志,因而每个节点上的时钟并不能反映全局的顺序,而在各个节点上可能存在网络延迟、时钟偏移(clock skew)等情况,因而需要时钟服务来提供全局一致的时间先后顺序的标记,例如为整个分布式集的所有事务(transaction)分配时间戳。现有技术之一如分布式数据库spanner通过为集配备gps时间校准和原子钟硬件来直接对接国际标准时间,即业界称为“绝对时间”(true time)的方式。现有技术之一如分布式数据库tidb采用全局中心总控节点pd(placement driver)集成etcd(一种分布式一致性键值存储系统)来实现tso(timestamp oracle,通过中心统一授时)。但上述方法中,前者的成本高昂,而后者的分布式存储系统则依赖于外部etcd服务,由于我们无法保证外部服务的可用性,因而增加了整个系统的风险。


技术实现要素:



3.鉴于上述,本说明书实施例提供了一种用于分布式数据库的提供时钟服务的方法和装置。利用该方法、装置,可以实现为分布式数据库提供较为可靠,较低成本的时钟服务。
4.根据本说明书的实施例的一个方面,提供一种用于分布式数据库的提供时钟服务的方法,所述方法应用于所述分布式数据库的主节点,所述方法包括:获取已持久化的前次的日志标识预分配区间的右边界;将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的左边界;根据所述当前的日志标识预分配区间的左边界和预分配区间长度,确定当前的日志标识预分配区间的右边界和本次的日志标识预分配区间;将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志;以及根据所述本次的日志标识预分配区间提供时钟服务。
5.根据本说明书的实施例的又一个方面,提供一种用于分布式数据库的提供时钟服务的方法,所述方法应用于所述分布式数据库的主节点,所述方法包括:获取已持久化的前次的日志标识预分配区间的右边界;确定所述分布式数据库的日志中是否存在与所述前次的日志标识预分配区间的右边界相匹配的已持久化的当前剩余可分配区间;响应于存在,将大于等于所述相匹配的已持久化的当前剩余可分配区间的左边界确定为所述当前的日志标识预分配区间的左边界;将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的右边界;将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志;根据所述当前的日志标识预分配区间的左边界和已持久
化的所述当前的日志标识预分配区间的右边界,确定本次的日志标识预分配区间;以及根据所述本次的日志标识预分配区间提供时钟服务。
6.根据本说明书的实施例的另一个方面,提供一种用于分布式数据库的提供时钟服务的装置,其中,所述装置设置于所述分布式数据库的主节点,所述装置包括:第一前次边界获取单元,被配置为获取已持久化的前次的日志标识预分配区间的右边界;第一当前边界确定单元,被配置为将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的左边界;根据所述当前的日志标识预分配区间的左边界和预分配区间长度,确定当前的日志标识预分配区间的右边界和本次的日志标识预分配区间;第一持久化单元,被配置为将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志;以及第一时钟服务提供单元,被配置为根据所述本次的日志标识预分配区间提供时钟服务。
7.根据本说明书的实施例的另一个方面,提供一种用于分布式数据库的提供时钟服务的装置,其中,所述装置设置于所述分布式数据库的主节点,所述装置包括:第二前次边界获取单元,被配置为获取已持久化的前次的日志标识预分配区间的右边界;第二当前边界确定单元,被配置为确定所述分布式数据库的日志中是否存在与所述前次的日志标识预分配区间的右边界相匹配的已持久化的当前剩余可分配区间;响应于存在,将大于等于所述相匹配的已持久化的当前剩余可分配区间的左边界确定为所述当前的日志标识预分配区间的左边界;将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的右边界;第二持久化单元,被配置为将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志;以及第二时钟服务提供单元,被配置为根据所述当前的日志标识预分配区间的左边界和已持久化的所述当前的日志标识预分配区间的右边界,确定本次的日志标识预分配区间;根据所述本次的日志标识预分配区间提供时钟服务。
8.根据本说明书的实施例的又一个方面,提供一种分布式数据库,包括:主节点,被配置为执行如上所述的用于分布式数据库的提供时钟服务的方法;从节点,被配置为同步所述分布式数据库的日志。
9.根据本说明书的实施例的再一个方面,提供一种用于分布式数据库的提供时钟服务的装置,包括:至少一个处理器,以及与所述至少一个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的用于分布式数据库的提供时钟服务的方法。
10.根据本说明书的实施例的另一方面,提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的用于分布式数据库的提供时钟服务的方法。
11.根据本说明书的实施例的再一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如上所述的用于分布式数据库的提供时钟服务的方法。
附图说明
12.通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。
在附图中,类似组件或特征可以具有相同的附图标记。
13.图1示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的方法和装置的示例性架构。
14.图2示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的方法的一个示例的流程图。
15.图3示出了根据本说明书的实施例的时钟服务的提供过程的一个示例的流程图。
16.图4示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的方法的又一个示例的流程图。
17.图5示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的方法的应用场景的一个示例的示意图。
18.图6示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的装置的一个示例的方框图。
19.图7示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的装置的又一个示例的方框图。
20.图8示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的装置的一个示例的方框图。
21.图9示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的装置的一个示例的方框图。
具体实施方式
22.以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书实施例内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
23.如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
24.在本说明书中,术语“时钟服务”可以为分布式数据库提供全局一致的时间先后顺序的标记的技术,例如为整个分布式集的所有事务(transaction)分配时间戳,为整个分布式集的wal(write ahead log,预写日志)分配日志序列号等。
25.在本说明书中,术语“日志回放”可以指一种保证数据一致性的技术,通常是指在分布式数据库的主节点出现故障时对事务涉及到的数据进行“整理”(例如在出现故障时对尚未提交的事务所涉及的数据的修改进行回滚操作)的过程。
26.在本说明书中,术语“原子性(atomicity)”操作可以指不会被线程调度机制打断的一个或一系列操作。原子性操作(atomic operation)一旦开始,就一直运行到结束,中间
不会切换到另一个线程(context switch),因而不需要额外进行同步(synchronized)。
27.下面将结合附图来详细描述根据本说明书实施例的用于分布式数据库的提供时钟服务的方法和装置。
28.图1示出了根据本说明书实施例的用于分布式数据库的提供时钟服务的方法和装置的示例性架构100。
29.图1示出了分布式数据库100的一个示例的示意图。如图1所示,分布式数据库系统100包括多个数据库节点110、120、130。数据库节点110、120、130为分布式数据库节点,每个数据库节点可以包括日志管理引擎和日志存储空间。要说明的是,图1示出的示例仅仅是例示性的,每个数据库节点还可以包括用于执行数据查询任务的数据查询引擎和数据存储引擎等。在其它实施例中,分布式数据库100可以包括更多或更少的数据库节点。
30.在这种分布式数据库中,数据可以分布式地存储在各个数据库节点的存储引擎中。例如,数据可以被分割为多个数据分区(也可以称为数据分块),所分割出的数据分区分别存储到不同的存储引擎中。每个存储引擎可以存储一个或多个数据分区。每个数据库节点上涉及的数据访问所需要的cpu资源和io资源都发生在本地,由该数据库节点上的数据查询引擎执行。
31.分布式数据库100中作为主节点的数据库节点(例如数据库节点110、120、130之一)可以执行上述用于分布式数据库的提供时钟服务的方法,以实现为整个分布式数据库100提供较为可靠,较低成本的时钟服务。例如,数据库节点130通过存储在其日志存储空间(比如磁盘)中的已持久化的日志来确定本次的日志标识预分配区间,并根据所确定的本次的日志标识预分配区间提供时钟服务(例如分配日志序列号)。分布式数据库100中作为从节点的数据库节点(例如数据库节点110、120)可以通过各自的日志管理引擎进行日志主副版本的同步,从而一方面能够在保证数据一致性的,另一方面可以有效避免主节点切换后的“时钟回退”现象的发生。
32.应当理解,图1中所示的所有网络实体都是示例性的,根据具体的应用需求,架构100中可以涉及任何其它网络实体。
33.图2示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的方法200的一个示例的流程图。
34.如图2所示,在210,获取已持久化的前次的日志标识预分配区间的右边界。
35.在本实施例中,可以通过各种方式获取前次的日志标识预分配区间的右边界。其中,上述日志标识预分配区间可以指用于区分日志的标识的取值区间。在一个示例中,日志可以是分布式数据库的预写日志。例如,前次的日志标识预分配区间可以为[t
x
,tlimited)。其中,t
x
、tlimited可以用于表示时间戳。tlimited即为前次的日志标识预分配区间的右边界。可以理解,上述前次的日志标识预分配区间也可以是(t
x
,tlimited],但需保证整个方案中是一致的,以免在端点处重复分配。下述的相关的日志标识预分配区间同理,不再赘述。
[0036]
作为示例,当对上述前次的日志标识预分配区间的右边界进行持久化的执行主体与用于分布式数据库的提供时钟服务的方法的执行主体一致(例如均为图1所示的数据库节点110)时,可以直接从内存获取前次的日志标识预分配区间的右边界。
[0037]
在本实施例的一些可选的实现方式中,上述前次的日志标识预分配区间的右边界
可以包括分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界。其中,上述前任主节点通常用于指当前主节点的上一任主节点。
[0038]
在这些实现方式中,可以通过日志回放获取上述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界。在一个示例中,用于分布式数据库的提供时钟服务的方法的执行主体可以是如图1所示的数据库节点120。对上述前次的日志标识预分配区间的右边界进行持久化的前任主节点可以是如图1所示的数据库节点110。基于分布式数据库的日志主副版本同步机制,数据库节点120可以从通过日志回放获取已持久化的前次的日志标识预分配区间的右边界。
[0039]
在一个示例中,也可以多线程并发回放日志。例如,通过一个日志分发线程每次从本地的日志存储空间读取一批日志,经拆分后形成单独的日志回放任务分配给不同的日志回放线程进行处理,从而提高日志回放效率。
[0040]
在220,将大于等于前次的日志标识预分配区间的右边界确定为当前的日志标识预分配区间的左边界。
[0041]
在本实施例中,可以将大于等于前次的日志标识预分配区间的右边界确定为当前的日志标识预分配区间的左边界。在一个示例中,前次的日志标识预分配区间的右边界可以为tlimited。从而,当前的日志标识预分配区间的左边界可以为tlimited+δt。其中,上述δt可以为大于等于0的数值,用于表征偏移量。
[0042]
在230,根据当前的日志标识预分配区间的左边界和预分配区间长度,确定当前的日志标识预分配区间的右边界和本次的日志标识预分配区间。
[0043]
在本实施例中,作为示例,参考前例,预分配区间长度可以为trange。从而,当前的日志标识预分配区间的右边界可以确定为tlimited+trange。可以将上述当前的日志标识预分配区间的左边界和所确定的当前的日志标识预分配区间的右边界之间的区间作为待确定区间。之后,可以将本次的日志标识预分配区间确定为上述待确定区间的子集。在一个示例中,上述当前的日志标识预分配区间的左边界例如可以是t1。所确定的当前的日志标识预分配区间的右边界例如可以是t2。可以将本次的日志标识预分配区间确定为[t1,t2)。可选地,还可以将本次的日志标识预分配区间确定为[t1+t,t
2-t)。其中,t≤(t
2-t1)/2。上述t可以作为安全裕度,用于防止所分配的日志标识之间的重叠。
[0044]
在240,将当前的日志标识预分配区间的右边界持久化至分布式数据库的日志。
[0045]
在本实施例中,将上述步骤所确定的当前的日志标识预分配区间的右边界持久化至分布式数据库的日志。在一个示例中,主节点将上述步骤所确定的当前的日志标识预分配区间的右边界持久化至本地的日志存储空间。基于分布式数据库的日志主副版本同步机制,分布式数据库的从节点可以获取到记录有已持久化的上述当前的日志标识预分配区间的右边界的日志。
[0046]
在250,根据本次的日志标识预分配区间提供时钟服务。
[0047]
在本实施例中,根据本次的日志标识预分配区间可以通过各种方式提供时钟服务。在一个示例中,日志标识可以是时间戳。从而,可以根据用于表征时间戳区间的本次的日志标识预分配区间分配时间戳。
[0048]
可选地,进一步参见图3,图3示出了根据本说明书的实施例的时钟服务的提供过程300的一个示例的流程图。
[0049]
如图3所示,在310,响应于接收到时钟服务请求,通过自增方式从本次的日志标识预分配区间确定与时钟服务请求相对应的日志标识。
[0050]
在本实施例中,当接收到时钟服务请求时,可以通过自增方式(例如原子性自增方式)从所确定的本次的日志标识预分配区间确定与时钟服务请求相对应的日志标识。在一个示例中,时钟服务请求可以包括时间戳获取请求。在一个示例中,时钟服务请求可以包括日志序列号获取请求。可选地,可以通过原子性操作按照递增顺序从所确定的本次的日志标识预分配区间确定与时钟服务请求相对应的日志标识(例如时间戳或日志序列号)。
[0051]
在本实施例的一些可选的实现方式中,上述时钟服务请求可以是多个请求,即通过一次网络请求来批量申请多个日志标识。从而可以减小网络开销,提高响应效率。
[0052]
在320,将与时钟服务请求相对应的日志标识作为响应提供给时钟服务请求的发送方。
[0053]
在本实施例中,可以将所确定的与时钟服务请求相对应的日志标识作为响应提供给时钟服务请求的发送方。
[0054]
基于此,本方案可以以响应时钟服务请求的方式提供时钟服务,并且通过自增方式使得所分配的日志标识依次向前推进,实现了日志标识分配的全局单调递增,避免了“时钟回退”现象的发生。
[0055]
可选地,上述日志标识可以包括日志序列号。在一个示例中,可以从所确定的本次的日志标识预分配区间中按照单调递增的方式分配日志序列号。
[0056]
基于此,本方案可以通过上述时钟服务实现分布式数据库中日志序列号的分配,从而保证数据库系统的全局一致性。
[0057]
可选地,还可以继续执行步骤260:响应于接收到指示从主节点转换为从节点的卸任指令,将所确定的本次的日志标识预分配区间的当前剩余可分配区间持久化至分布式数据库的日志。
[0058]
在一个示例中,在将当前的日志标识预分配区间的右边界持久化至上述分布式数据库的日志的基础上,可以提供时钟服务。上述提供时钟服务的过程可以相当于上述所确定的本次的日志标识预分配区间中的日志标识的实际分配过程。在这一日志标识的实际分配过程中,可以确定本次的日志标识预分配区间的当前剩余可分配区间。
[0059]
在一个示例中,当接收到指示从主节点转换为从节点的卸任指令,可以预先确定本次的日志标识预分配区间的当前剩余可分配区间,之后可以将所确定的本次的日志标识预分配区间的当前剩余可分配区间持久化至分布式数据库的日志。例如,可以在接收到指示从主节点转换为从节点的卸任指令时确定本次的日志标识预分配区间的当前剩余可分配区间。
[0060]
基于此,本方案可以在非因故障而切换主从节点(例如主动切主)的过程中保留当前剩余可分配区间,从而为下一任主节点上任后获取持久化的当前剩余可分配区间以扩展本次的日志标识预分配区间的范围提供数据和技术基础,从而有助于减少由于主动频繁切换主从节点而导致的区间浪费。
[0061]
在本实施例的一些可选的实现方式中,上述用于分布式数据库的提供时钟服务的方法还可以包括以下步骤:
[0062]
s1、确定本次的日志标识预分配区间的当前剩余可分配区间。
[0063]
在一个示例中,可以定期(例如每隔预设时间间隔)确定当前剩余可分配区间。在一个示例中,可以在每次分配或每n(n为正整数)次分配时确定当前剩余可分配区间。其中,当前剩余可分配区间可以是可分配的日志标识所在区间的左边界和右边界,也可以是可分配的日志标识的数目,还可以是可分配的日志标识的数目占当前的日志标识预分配区间所对应的日志标识的总数目的比值,此处不作限定。
[0064]
s2,确定当前剩余可分配区间是否满足预分配空间扩充条件。
[0065]
在本实施例中,预分配空间扩充条件可以与当前剩余可分配区间的形式相匹配。预分配空间扩充条件具体可以根据实际应用场景而设定。在一个示例中,预分配空间扩充条件可以是当前剩余可分配区间占本次的日志标识预分配区间的比值不足1/3。在一个示例中,预分配空间扩充条件可以是当前剩余可分配区间所指示的日志标识的数目小于预设可分配数目阈值。
[0066]
当上述s2判断为是,继续执行以下步骤s21-s22:
[0067]
在s21,根据已持久化的当前的日志标识预分配区间的右边界确定新的日志标识预分配区间的右边界。
[0068]
在本实施例中,所确定的新的日志标识预分配区间的右边界不小于上述已持久化的当前的日志标识预分配区间的右边界。在一个示例中,当前的日志标识预分配区间的右边界可以为tlimited+trange。可以将tlimited+2
×
trange确定为新的日志标识预分配区间的右边界。在一个示例中,可以将tlimited+2
×
trange+δt确定为新的日志标识预分配区间的右边界。在一个示例中,trange可以为预分配区间长度。δt可以为预设的安全裕度值,例如1ms。从而各个日志标识预分配区间的长度可以一致。
[0069]
s22,将新的日志标识预分配区间的右边界持久化至分布式数据库的日志。
[0070]
在本实施例中,可以通过与上述图2实施例中240类似的方式将上述步骤s21所确定的新的日志标识预分配区间的右边界持久化至上述分布式数据库的日志。
[0071]
可选地,当上述s2判断为否,可以继续根据本次的日志标识预分配区间提供时钟服务。在此期间,可以继续执行上述步骤s1、s2,当上述s2判断为是时执行上述步骤s21-s22。
[0072]
基于此,本方案可以在本次的日志标识预分配区间的日志标识的实际分配过程检测当前剩余可分配区间,提前触发新的日志标识预分配区间的确定和持久化,保证了时钟服务的稳步推进。
[0073]
下面参考图4,图4示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的方法400的又一个示例的流程图。
[0074]
如图4所示,在410,获取已持久化的前次的日志标识预分配区间的右边界。
[0075]
在本实施例的一些可选的实现方式中,上述前次的日志标识预分配区间的右边界可以包括分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界。其中,上述前任主节点通常用于指当前主节点的上一任主节点。在这些实现方式中,可以通过日志回放获取上述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界。
[0076]
需要说明的是,上述过程可以参考前述图2描述的实施例中步骤210的可选的实现方式的相关描述,此处不再赘述。
[0077]
在420,确定分布式数据库的日志中是否存在与前次的日志标识预分配区间的右
边界相匹配的已持久化的当前剩余可分配区间。
[0078]
在本实施例中,前任主节点也可以对与所持久化的日志标识预分配区间的右边界相匹配的当前剩余可分配区间进行持久化。从而上述分布式数据库的日志还可以用于保存与日志标识预分配区间相匹配的当前剩余可分配区间。在一个示例中,上述前任主节点通常用于指当前主节点的上一任主节点。上述前次的日志标识预分配区间的右边界可以是前任主节点所持久化的日志标识预分配区间的右边界。上述与前次的日志标识预分配区间的右边界相匹配的已持久化的当前剩余可分配区间可以是上述前任主节点在分配上述前次的日志标识预分配区间时所持久化的当前剩余可分配区间。在一个示例中,日志可以是分布式数据库的预写日志。
[0079]
需要说明的是,上述前任主节点对当前剩余可分配区间的持久化通常发生在非因故障而切换主从节点(例如主动切主)的过程中。
[0080]
还需要说明的是,日志标识预分配区间可以看作预先申请的用于分配日志标识的一段连续区间。上述日志标识预分配区间从被持久化完成至真正将日志标识预分配区间实际分配完毕之间还存在一定的时间。在这段时间内,可以确定不同时刻所对应的当前剩余可分配区间。
[0081]
在430,响应于存在,将大于等于相匹配的已持久化的当前剩余可分配区间的左边界确定为当前的日志标识预分配区间的左边界。
[0082]
在本实施例中,当上述步骤420判断为是,可以将大于等于相匹配的已持久化的当前剩余可分配区间的左边界确定为当前的日志标识预分配区间的左边界。
[0083]
在440,将大于等于前次的日志标识预分配区间的右边界确定为当前的日志标识预分配区间的右边界。
[0084]
在本实施例中,作为示例,前次的日志标识预分配区间的右边界可以为tlimited。从而,当前的日志标识预分配区间的右边界可以为tlimited+δt。其中,上述δt可以为大于等于0的数值,用于表征偏移量。可选地,上述δt也可以为如前述实施例中步骤230所描述的预分配区间长度。
[0085]
在450,将当前的日志标识预分配区间的右边界持久化至分布式数据库的日志。
[0086]
在460,根据当前的日志标识预分配区间的左边界和已持久化的当前的日志标识预分配区间的右边界,确定本次的日志标识预分配区间。
[0087]
在本实施例中,可以根据当前的日志标识预分配区间的左边界和已持久化的当前的日志标识预分配区间的右边界,确定本次的候选日志标识预分配区间。在一个示例中,可以将本次的日志标识预分配区间确定为上述本次的候选日志标识预分配区间的子集。
[0088]
在一个示例中,上述当前的日志标识预分配区间的左边界例如可以是t0。已持久化的当前的日志标识预分配区间的右边界例如可以是t2。可以将本次的日志标识预分配区间确定为[t0,t2)。可选地,还可以将本次的日志标识预分配区间确定为[t0+t

,t
2-t

)。其中,t

≤(t
2-t0)/2。上述t

可以作为安全裕度,用于防止所分配的日志标识之间的重叠。
[0089]
可选地,当上述步骤420判断为否,可以按照上述图2实施例中步骤230所描述的方式确定本次的日志标识预分配区间。
[0090]
基于此,本方案可以根据日志中保存的前任主节点所持久化的当前剩余可分配区间来扩展新上任主节点本次的日志标识预分配区间的范围,从而可以有效地减少由于主动
频繁切换主从节点而导致的区间浪费。并且,还通过每个新上任主节点都需持久化当前的日志标识预分配区间的右边界,从而避免了因保留前任主节点所持久化的当前剩余可分配区间且未重新持久化而造成下一任主节点可能出现的“时钟回退”的问题。
[0091]
在470,根据本次的日志标识预分配区间提供时钟服务。
[0092]
需要说明的是,上述步骤410、450、470的具体操作可以参考前述图2实施例中步骤210、240、250的相应描述,此处不再赘述。
[0093]
在本实施例的一些可选的实现方式中,时钟服务的提供过程可以包括:
[0094]
响应于接收到时钟服务请求,通过自增方式从本次的日志标识预分配区间确定与时钟服务请求相对应的日志标识;以及
[0095]
将与时钟服务请求相对应的日志标识作为响应提供给时钟服务请求的发送方。
[0096]
需要说明的是,上述过程可以参考前述图3描述的实施例中步骤310、320相关描述,此处不再赘述。
[0097]
可选地,日志标识包括日志序列号。在一个示例中,可以从所确定的本次的日志标识预分配区间中按照单调递增的方式分配日志序列号。
[0098]
在本实施例的一些可选的实现方式中,响应于接收到指示主节点转换为从节点的卸任指令,将所确定的本次的日志标识预分配区间的当前剩余可分配区间持久化至分布式数据库的日志。
[0099]
需要说明的是,上述过程可以参考前述图2描述的实施例中步骤260的相关描述,此处不再赘述。
[0100]
继续参考图5,图5示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的方法500的应用场景的一个示例的示意图。
[0101]
如图5所示,在t1时刻,作为主节点的节点a可以获取已持久化的前次的日志序列号预分配区间的右边界(例如节点a所持久化的“100”)。在t1~t2时段,作为主节点的节点a可以确定当前的日志标识预分配区间的左边界为“100”。根据上述左边界“100”和预分配区间长度(例如100),作为主节点的节点a可以确定当前的日志序列号预分配区间的右边界(例如“200”)和本次的日志标识预分配区间(例如[100,200))。之后,可以将所确定的当前的日志序列号预分配区间的右边界(例如“200”)持久化至分布式数据库的日志。在t2~t3时段,作为主节点的节点a可以分配上述日志序列号预分配区间(例如[100,200))中的日志序列号。在t3时刻,节点a可能由于各种原因停止服务(即卸任主节点)。在t3~t4时段,节点a所在的分布式数据库可以重新选举主节点。在t4时刻,节点b作为新的主节点上任。此时,作为主节点的节点b可以获取已持久化的前次的日志序列号预分配区间的右边界(例如节点a所持久化的“200”)。在t4~t5时段,根据前次的日志序列号预分配区间的右边界,作为主节点的节点b可以参考前任主节点a的上述方式确定当前的日志序列号预分配区间的右边界(例如“300”)并对其持久化。从而,作为主节点的节点b可以确定本次的日志序列号预分配区间(例如[200,300))。在t5~t6时段,作为主节点的节点b可以分配上述日志序列号预分配区间(例如[200,300))中的日志序列号。
[0102]
可选地,在t3时刻,节点a可能由于主动切主而停止服务。在卸任主节点之前,节点a可以持久化当前剩余可分配区间(例如[150,200))。在这一示例中,作为主节点的节点b可以确定分布式数据库的日志中存在与前次的日志标识预分配区间(例如[100,200))的右边
界相匹配的已持久化的当前剩余可分配区间(例如[150,200))。从而,作为主节点的节点b可以将大于等于相匹配的已持久化的当前剩余可分配区间的左边界(例如“150”)确定为当前的日志标识预分配区间的左边界;将大于等于前次的日志标识预分配区间的右边界(例如“200”)确定为所述当前的日志标识预分配区间的右边界(例如“300”)。之后,作为主节点的节点b可以将当前的日志标识预分配区间的右边界(例如“300”)持久化至分布式数据库的日志。并且,作为主节点的节点b可以确定本次的日志序列号预分配区间(例如[150,300))。
[0103]
可选地,在t5~t6时段,作为主节点的节点b可以确定本次的日志序列号预分配区间的当前剩余可分配区间。当所确定的当前剩余可分配区间满足预分配空间扩充条件时,作为主节点的节点b可以根据已持久化的当前的日志序列号预分配区间的右边界(例如“300”)确定新的日志标识预分配区间的右边界(例如“400”)并对其持久化。
[0104]
利用图1-图5中公开的用于分布式数据库的提供时钟服务的方法,可以借助于分布式数据库已有的日志系统和主副版本同步机制,通过适时地对日志标识预分配区间的右边界进行持久化以及所确定的当前的日志标识预分配区间的左边界始终大于已被分配的日志标识,实现用于分布式数据库的低成本、高可用的时钟服务。
[0105]
图6示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的装置600的一个示例的方框图。该装置实施例可以与图1-图5所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
[0106]
如图6所示,用于分布式数据库的提供时钟服务的装置600可以包括第一前次边界获取单元610、第一当前边界确定单元620、第一持久化单元630和第一时钟服务提供单元640。
[0107]
第一前次边界获取单元610,被配置为获取已持久化的前次的日志标识预分配区间的右边界。第一前次边界获取单元610的操作可以参考上面图2描述的210的操作。
[0108]
在一个示例中,前次的日志标识预分配区间的右边界可以包括所述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界。第一前次边界获取单元610可以被进一步配置为:通过日志回放获取所述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界。第一前次边界获取单元610的操作可以参考上面图2描述的实施例中步骤210的可选的实现方式的相关描述。
[0109]
第一当前边界确定单元620,被配置为将大于等于前次的日志标识预分配区间的右边界确定为当前的日志标识预分配区间的左边界;根据当前的日志标识预分配区间的左边界和预分配区间长度,确定当前的日志标识预分配区间的右边界和本次的日志标识预分配区间。第一当前边界确定单元620的操作可以参考上面图2描述的220和230的操作。
[0110]
在一个示例中,第一当前边界确定单元620可以被进一步配置为:将所述前次的日志标识预分配区间的右边界确定为当前的日志标识预分配区间的左边界;以及根据所述左边界和预分配区间长度,确定当前的日志标识预分配区间的右边界。第一当前边界确定单元620的操作可以参考上面图3描述的当前的日志标识预分配区间的右边界的确定过程。
[0111]
第一持久化单元630,被配置为将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志。第一持久化单元630的操作可以参考上面图2描述的240的操作。
[0112]
在一个示例中,第一持久化单元630被进一步配置为:响应于接收到指示从主节点转换为从节点的卸任指令,将所确定的本次的日志标识与分配区间的当前剩余可分配区间持久化至所述分布式数据库的日志。第一持久化单元630的上述操作可以参考上面图2描述的260的操作。
[0113]
第一时钟服务提供单元640,被配置为根据所述本次的日志标识预分配区间提供时钟服务。第一时钟服务提供单元640的操作可以参考上面图2描述的250的操作。
[0114]
在一个示例中,第一时钟服务提供单元640可以被进一步配置为:响应于接收到时钟服务请求,通过自增方式从所述本次的日志标识预分配区间确定与所述时钟服务请求相对应的日志标识;以及将与所述时钟服务请求相对应的日志标识作为响应提供给所述时钟服务请求的发送方。第一时钟服务提供单元640的操作可以参考上面图3描述的时钟服务的提供过程。
[0115]
在一个示例中,上述日志标识可以包括日志序列号。第一时钟服务提供单元640可以被进一步配置为:从所述本次的日志标识预分配区间中按照单调递增的方式分配日志序列号。第一时钟服务提供单元640的操作可以参考上面图3实施例的可选的实现方式的描述。
[0116]
图7示出了根据本说明书的实施例的用于分布式数据库的提供时钟服务的装置700的又一个示例的方框图。该装置具体可以应用于各种电子设备中。
[0117]
如图7所示,用于分布式数据库的提供时钟服务的装置700可以包括第二前次边界获取单元710、第二当前边界确定单元720、第二持久化单元730和第二时钟服务提供单元740。
[0118]
第二当前边界确定单元720,被配置为确定所述分布式数据库的日志中是否存在与所述前次的日志标识预分配区间的右边界相匹配的已持久化的当前剩余可分配区间;响应于存在,将大于等于所述相匹配的已持久化的当前剩余可分配区间的左边界确定为所述当前的日志标识预分配区间的左边界;将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的右边界。第二当前边界确定单元720的上述操作可以参考上面图4描述的420-440的操作。
[0119]
第二时钟服务提供单元740,被进一步配置为根据所述当前的日志标识预分配区间的左边界和已持久化的所述当前的日志标识预分配区间的右边界,确定本次的日志标识预分配区间;根据所述本次的日志标识预分配区间提供时钟服务。第二时钟服务提供单元740的上述操作可以参考上面图4描述的460的操作。
[0120]
需要说明的是,第二前次边界获取单元710、第二持久化单元730可以参考前述图6实施例中第一前次边界获取单元610、第一持久化单元630的相应描述,此处不再赘述。
[0121]
以上参照图1到图7,对根据本说明书实施例的用于分布式数据库的提供时钟服务的方法和装置的实施例进行了描述。
[0122]
本说明书实施例的用于分布式数据库的提供时钟服务的装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本说明书实施例中,用于分布式数据库的提供时钟服务的装置例如可以利用电子设备实现。
[0123]
本说明书实施例的分布式数据库可以参考图1所示。数据库节点110、120、130可以分别具有不同的节点角。当节点角为主节点时,可以执行如前述图2-图5所描述的用于分布式数据库的提供时钟服务的方法。当节点角为从节点时,可以同步上述分布式数据库的日志。在一个示例中,可以基于分布式数据库的主副本同步机制将本地的日志更新为与主节点的日志一致的日志。
[0124]
图8示出了本说明书的实施例的用于分布式数据库的提供时钟服务的装置800的示意图。
[0125]
如图8所示,用于分布式数据库的提供时钟服务的装置800可以包括至少一个处理器810、存储器(例如,非易失性存储器)820、内存830和通信接口840,并且至少一个处理器810、存储器820、内存830和通信接口840经由总线850连接在一起。至少一个处理器810执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
[0126]
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器810:获取已持久化的前次的日志标识预分配区间的右边界;将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的左边界;根据所述当前的日志标识预分配区间的左边界和预分配区间长度,确定当前的日志标识预分配区间的右边界和本次的日志标识预分配区间;将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志;以及根据所述本次的日志标识预分配区间提供时钟服务。
[0127]
图9示出了本说明书的实施例的用于分布式数据库的提供时钟服务的装置900的示意图。
[0128]
如图9所示,用于分布式数据库的提供时钟服务的装置900可以包括至少一个处理器910、存储器(例如,非易失性存储器)920、内存930和通信接口940,并且至少一个处理器910、存储器920、内存930和通信接口940经由总线950连接在一起。至少一个处理器910执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
[0129]
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器910:获取已持久化的前次的日志标识预分配区间的右边界;确定所述分布式数据库的日志中是否存在与所述前次的日志标识预分配区间的右边界相匹配的已持久化的当前剩余可分配区间;响应于存在,将大于等于所述相匹配的已持久化的当前剩余可分配区间的左边界确定为所述当前的日志标识预分配区间的左边界;将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的右边界;将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志;根据所述当前的日志标识预分配区间的左边界和已持久化的所述当前的日志标识预分配区间的右边界,确定本次的日志标识预分配区间;以及根据所述本次的日志标识预分配区间提供时钟服务。
[0130]
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器810或至少一个处理器910进行本说明书的各个实施例中以上结合图1-5描述的各种操作和功能。
[0131]
根据一个实施例,提供了一种例如计算机可读介质的程序产品。计算机可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被计算机执行时,使得计算机执行本说明书的各个实施例中以上结合图1-5描述的各种操作和功能。
[0132]
具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储
着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
[0133]
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
[0134]
本说明书各部分操作所需的计算机程序代码可以用任意一种或多种程序语言编写,包括面向对象编程语言,如java、scala、smalltalk、eiffel、jade、emerald、c++、c#、vb、net以及python等,常规程序化编程语言如c语言、visual basic 2003、perl、cobol 2002、php以及abap,动态编程语言如python、ruby和groovy,或者其他编程语言等。该程序编码可以在用户计算机上运行,或者作为独立的软件包在用户计算机上运行,或者部分在用户计算机上运行另一部分在远程计算机运行,或者全部在远程计算机或服务器上运行。在后一种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan),或连接至外部计算机(例如通过因特网),或者在云计算环境中,或者作为服务使用,比如软件即服务(saas)。
[0135]
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd-rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
[0136]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0137]
上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
[0138]
在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
[0139]
以上结合附图详细描述了本说明书的实施例的可选实施方式,但是,本说明书的实施例并不限于上述实施方式中的具体细节,在本说明书的实施例的技术构思范围内,可以对本说明书的实施例的技术方案进行多种简单变型,这些简单变型均属于本说明书的实施例的保护范围。
[0140]
本说明书内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本说明书内容。对于本领域普通技术人员来说,对本说明书内容进行的各种修改是显而易见的,并且,也可以在不脱离本说明书内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本说明书内容并不限于本文所描述的示例和设计,而是与符
合本文公开的原理和新颖性特征的最广范围相一致。

技术特征:


1.一种用于分布式数据库的提供时钟服务的方法,其中,所述方法应用于所述分布式数据库的主节点,所述方法包括:获取已持久化的前次的日志标识预分配区间的右边界;将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的左边界;根据所述当前的日志标识预分配区间的左边界和预分配区间长度,确定当前的日志标识预分配区间的右边界和本次的日志标识预分配区间;将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志;以及根据所述本次的日志标识预分配区间提供时钟服务。2.如权利要求1所述的方法,其中,所述前次的日志标识预分配区间的右边界包括所述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界,所述获取已持久化的前次的日志标识预分配区间的右边界包括:通过日志回放获取所述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界。3.如权利要求1所述的方法,所述方法还包括:响应于接收到指示主节点转换为从节点的卸任指令,将所确定的本次的日志标识预分配区间的当前剩余可分配区间持久化至所述分布式数据库的日志。4.如权利要求1所述的方法,其中,所述根据所述本次的日志标识预分配区间提供时钟服务包括:响应于接收到时钟服务请求,通过自增方式从所述本次的日志标识预分配区间确定与所述时钟服务请求相对应的日志标识;以及将与所述时钟服务请求相对应的日志标识作为响应提供给所述时钟服务请求的发送方。5.如权利要求1到4中任一所述的方法,其中,所述日志标识包括日志序列号,所述根据所述本次的日志标识预分配区间提供时钟服务包括:从所述本次的日志标识预分配区间中按照单调递增的方式分配日志序列号。6.一种用于分布式数据库的提供时钟服务的方法,其中,所述方法应用于所述分布式数据库的主节点,所述方法包括:获取已持久化的前次的日志标识预分配区间的右边界;确定所述分布式数据库的日志中是否存在与所述前次的日志标识预分配区间的右边界相匹配的已持久化的当前剩余可分配区间;响应于存在,将大于等于所述相匹配的已持久化的当前剩余可分配区间的左边界确定为所述当前的日志标识预分配区间的左边界;将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的右边界;将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志;根据所述当前的日志标识预分配区间的左边界和已持久化的所述当前的日志标识预分配区间的右边界,确定本次的日志标识预分配区间;以及根据所述本次的日志标识预分配区间提供时钟服务。
7.如权利要求6所述的方法,其中,所述前次的日志标识预分配区间的右边界包括所述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界,所述获取已持久化的前次的日志标识预分配区间的右边界包括:通过日志回放获取所述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界。8.如权利要求6所述的方法,所述方法还包括:响应于接收到指示主节点转换为从节点的卸任指令,将所确定的本次的日志标识预分配区间的当前剩余可分配区间持久化至所述分布式数据库的日志。9.如权利要求6所述的方法,其中,所述根据所述本次的日志标识预分配区间提供时钟服务包括:响应于接收到时钟服务请求,通过自增方式从所述本次的日志标识预分配区间确定与所述时钟服务请求相对应的日志标识;以及将与所述时钟服务请求相对应的日志标识作为响应提供给所述时钟服务请求的发送方。10.如权利要求6到9中任一所述的方法,其中,所述日志标识包括日志序列号,所述根据所述本次的日志标识预分配区间提供时钟服务包括:从所述本次的日志标识预分配区间中按照单调递增的方式分配日志序列号。11.一种用于分布式数据库的提供时钟服务的装置,其中,所述装置设置于所述分布式数据库的主节点,所述装置包括:第一前次边界获取单元,被配置为获取已持久化的前次的日志标识预分配区间的右边界;第一当前边界确定单元,被配置为将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的左边界;根据所述当前的日志标识预分配区间的左边界和预分配区间长度,确定当前的日志标识预分配区间的右边界和本次的日志标识预分配区间;第一持久化单元,被配置为将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志;以及第一时钟服务提供单元,被配置为根据所述本次的日志标识预分配区间提供时钟服务。12.如权利要求11所述的装置,其中,所述前次的日志标识预分配区间的右边界包括所述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界,所述第一前次边界获取单元被进一步配置为:通过日志回放获取所述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界。13.如权利要求11所述的装置,其中,所述第一持久化单元被进一步配置为:响应于接收到指示从主节点转换为从节点的卸任指令,将所确定的本次的日志标识与分配区间的当前剩余可分配区间持久化至所述分布式数据库的日志。14.如权利要求11所述的装置,其中,所述第一时钟服务提供单元被进一步配置为:响应于接收到时钟服务请求,通过自增方式从所述本次的日志标识预分配区间确定与
所述时钟服务请求相对应的日志标识;以及将与所述时钟服务请求相对应的日志标识作为响应提供给所述时钟服务请求的发送方。15.如权利要求11到14中任一所述的装置,其中,所述日志标识包括日志序列号,所述第一时钟服务提供单元被进一步配置为:从所述本次的日志标识预分配区间中按照单调递增的方式分配日志序列号。16.一种用于分布式数据库的提供时钟服务的装置,其中,所述装置设置于所述分布式数据库的主节点,所述装置包括:第二前次边界获取单元,被配置为获取已持久化的前次的日志标识预分配区间的右边界;第二当前边界确定单元,被配置为确定所述分布式数据库的日志中是否存在与所述前次的日志标识预分配区间的右边界相匹配的已持久化的当前剩余可分配区间;响应于存在,将大于等于所述相匹配的已持久化的当前剩余可分配区间的左边界确定为所述当前的日志标识预分配区间的左边界;将大于等于所述前次的日志标识预分配区间的右边界确定为所述当前的日志标识预分配区间的右边界;第二持久化单元,被配置为将所述当前的日志标识预分配区间的右边界持久化至所述分布式数据库的日志;以及第二时钟服务提供单元,被配置为根据所述当前的日志标识预分配区间的左边界和已持久化的所述当前的日志标识预分配区间的右边界,确定本次的日志标识预分配区间;根据所述本次的日志标识预分配区间提供时钟服务。17.如权利要求16所述的装置,其中,所述前次的日志标识预分配区间的右边界包括所述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界,所述第二前次边界获取单元被进一步配置为:通过日志回放获取所述分布式数据库的前任主节点所持久化的日志标识预分配区间的右边界。18.如权利要求16所述的装置,其中,所述第二持久化单元被进一步配置为:响应于接收到指示从主节点转换为从节点的卸任指令,将所确定的本次的日志标识与分配区间的当前剩余可分配区间持久化至所述分布式数据库的日志。19.如权利要求16所述的装置,其中,所述第二时钟服务提供单元被进一步配置为:响应于接收到时钟服务请求,通过自增方式从所述本次的日志标识预分配区间确定与所述时钟服务请求相对应的日志标识;以及将与所述时钟服务请求相对应的日志标识作为响应提供给所述时钟服务请求的发送方。20.如权利要求16到19中任一所述的装置,其中,所述日志标识包括日志序列号,所述第二时钟服务提供单元被进一步配置为:从所述本次的日志标识预分配区间中按照单调递增的方式分配日志序列号。21.一种分布式数据库,包括:主节点,被配置为执行如权利要求1到5中任一所述的方法或实现如权利要求6到10中任一所述的方法;
从节点,被配置为同步所述分布式数据库的日志。22.一种用于分布式数据库的提供时钟服务的装置,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器上的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求1到5中任一所述的方法或实现如权利要求6到10中任一所述的方法。23.一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1到5中任一所述的方法或实现如权利要求6到10中任一所述的方法。24.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如权利要求1到5中任一所述的方法或实现如权利要求6到10中任一所述的方法。

技术总结


本说明书的实施例提供了一种用于分布式数据库的提供时钟服务的方法和装置。在该用于分布式数据库的提供时钟服务的方法中,获取已持久化的前次的日志标识预分配区间的右边界;将大于等于前次的日志标识预分配区间的右边界确定为当前的日志标识预分配区间的左边界;根据当前的日志标识预分配区间的左边界和预分配区间长度,确定当前的日志标识预分配区间的右边界和本次的日志标识预分配区间;将当前的日志标识预分配区间的右边界持久化至分布式数据库的日志;以及根据本次的日志标识预分配区间提供时钟服务。配区间提供时钟服务。配区间提供时钟服务。


技术研发人员:

李欣泽 肖金亮 郭进伟

受保护的技术使用者:

北京奥星贝斯科技有限公司

技术研发日:

2022.10.17

技术公布日:

2022/12/29

本文发布于:2024-09-20 21:43:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/49716.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:区间   分配   标识   日志
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议