首页 / 专利分类库 / 电通信技术 / 电话通信 / 绑定关系处理方法及相关设备

绑定关系处理方法及相关设备

申请号 CN202210573347.X 申请日 2022-05-24 公开(公告)号 CN115002187B 公开(公告)日 2024-04-30
申请人 北京有竹居网络技术有限公司; 发明人 孙海生;
摘要 本公开提供一种绑定关系处理方法,包括:设置两个时间轮并分别设置其运行时间,以使所述两个时间轮交替处于运行状态;建立绑定关系时,根据绑定关系的到期时间将绑定关系的标识存储于处于运行状态的时间轮、处于等待状态的时间轮或者定时解绑任务列表之一;从处于运行状态的时间轮对应当前时间的时间格内读出存储的至少一个绑定关系的标识,并根据读出的至少一个绑定关系的标识进行解绑处理;从定时解绑任务列表中获取到期时间在处于等待状态的时间轮的运行时间内的绑定关系的标识,并将获取的绑定关系的标识存储于处于等待状态的时间轮。基于上述方法,本公开还提供了一种绑定关系处理装置、 电子 设备、存储介质以及程序产品。
权利要求

1.一种绑定关系处理方法,包括:
设置两个时间轮并分别设置所述两个时间轮的运行时间,以使所述两个时间轮交替处于运行状态,且在其中一个时间轮处于运行状态时,另一个时间轮处于等待状态;
建立绑定关系时,根据所述绑定关系的到期时间将所述绑定关系的标识存储于所述两个时间轮以及定时解绑任务列表之一;
从处于运行状态的时间轮对应当前时间的时间格内读出存储的至少一个绑定关系的标识,并根据读出的至少一个绑定关系的标识进行解绑处理;
从所述定时解绑任务列表中获取到期时间在处于等待状态时间轮的运行时间内的绑定关系的标识,并将获取的绑定关系的标识存储于所述处于等待状态的时间轮;以及预先设置解绑处理周期,并在每一个解绑处理周期执行如下操作:按照预先设置的分段间隔将绑定关系列表中的绑定关系的标识划分为多个绑定关系标识区间;分别将所述多个绑定关系标识区间分配给多个服务实例,以使所述多个服务实例按照分配给自身的绑定关系标识区间分别扫描所述绑定关系列表,对所述绑定关系列表中记录的已过到期时间且尚未解绑的绑定关系执行解绑操作。
2.根据权利要求1所述的方法,其中,根据所述绑定关系的到期时间将所述绑定关系的标识存储于所述两个时间轮以及定时解绑任务列表之一包括:
响应于确定所述绑定关系的到期时间在所述处于运行状态的时间轮的运行时间内,将所述绑定关系的标识存储于所述处于运行状态的时间轮;
响应于确定所述绑定关系的到期时间在所述处于等待状态的时间轮的运行时间内,将所述绑定关系的标识存储于所述处于等待状态的时间轮;以及
响应于确定所述绑定关系的到期时间既不在所述处于运行状态的时间轮的运行时间内也不在所述处于等待状态的时间轮的运行时间内,将所述绑定关系的标识存储于所述定时解绑任务列表。
3.根据权利要求2所述的方法,其中,将所述绑定关系的标识存储于所述处于运行状态的时间轮包括:根据所述绑定关系的到期时间,将所述绑定关系的标识存储于所述处于运行状态的时间轮上与所述到期时间对应的时间格内;以及
所述将所述绑定关系的标识存储于所述处于等待状态的时间轮包括:根据所述绑定关系的到期时间,将所述绑定关系的标识存储于所述处于等待状态的时间轮上与所述到期时间对应的时间格内。
4.根据权利要求3所述的方法,其中,将所述绑定关系的标识存储于所述处于运行状态的时间轮上与所述到期时间对应的时间格内包括:响应于确定所述处于运行状态的时间轮上与所述到期时间对应的时间格内不包括绑定关系标识队列,建立所述绑定关系标识队列,将所述绑定关系的标识加入所述绑定关系标识队列;以及响应于确定所述处于运行状态的时间轮上与所述到期时间对应的时间格内包括绑定关系标识队列,将所述绑定关系的标识加入所述绑定关系标识队列;
将所述绑定关系的标识存储于所述处于等待状态的时间轮上与所述到期时间对应的时间格内包括:响应于确定所述处于等待状态的时间轮上与所述到期时间对应的时间格内不包括绑定关系标识队列,建立所述绑定关系标识队列,将所述绑定关系的标识加入所述绑定关系标识队列;以及响应于确定所述处于等待状态的时间轮上与所述到期时间对应的时间格内包括绑定关系标识队列,将所述绑定关系的标识加入所述绑定关系标识队列。
5.根据权利要求2所述的方法,其中,所述将所述绑定关系的标识存储于所述定时解绑任务列表包括:以所述到期时间为索引,将所述绑定关系的标识写入所述定时解绑任务列表。
6.根据权利要求1所述的方法,其中,从所述处于运行状态的时间轮对应当前时间段的时间格内读出存储的至少一个绑定关系的标识包括:从所述处于运行状态的时间轮对应当前时间的时间格内读出存储的绑定关系标识队列;以及
根据读出的至少一个绑定关系的标识进行解绑处理包括:由集群中的至少一个服务实例分别从所述绑定关系标识队列中拉取一个或多个绑定关系的标识,并分别根据所述一个或多个绑定关系的标识进行相应绑定关系的解绑操作。
7.根据权利要求6所述的方法,其中,所述根据所述一个或多个绑定关系的标识进行相应绑定关系的解绑操作包括:
根据所述一个或多个绑定关系的标识,在绑定关系列表中查找相应的绑定关系记录,并将所查找到的绑定关系记录的绑定状态修改为已解绑;以及
根据所述一个或多个绑定关系的标识,将所述定时解绑任务列表中相应的定时解绑任务记录删除或者将所述定时解绑任务列表中相应的定时解绑任务记录的任务状态修改为已解绑。
8.根据权利要求1所述的方法,其中,从所述定时解绑任务列表中获取到期时间在所述处于等待状态的时间轮运行时间内的绑定关系的标识包括:以所述处于等待状态的时间轮的运行时间为查询条件,从所述定时解绑任务列表中查询到期时间在所述处于等待状态的时间轮运行时间内的绑定关系的标识;以及
将获取的绑定关系的标识存储于处于等待状态的时间轮包括:根据查询得到的绑定关系的标识对应的到期时间,将所述绑定关系的标识存储于所述处于等待状态的时间轮上与所述到期时间对应的时间格内。
9.根据权利要求1所述的方法,其中,分别将所述多个绑定关系标识区间分配给所述多个服务实例包括:按照所述多个服务实例的索引先递增再递减的顺序分别将所述多个绑定关系标识区间分配给所述多个服务实例。
10.根据权利要求1所述的方法,其中,所述对所述绑定关系列表中记录的已过到期时间且尚未解绑的绑定关系执行解绑操作包括:对所述绑定关系列表中记录的已过到期时间且尚未解绑的绑定关系所对应记录的绑定状态修改为已解绑。
11.一种绑定关系处理装置,包括:
时间轮管理模,用于设置两个时间轮并分别设置所述两个时间轮的运行时间,以使所述两个时间轮交替处于运行状态,且在其中一个时间轮处于运行状态时,另一个时间轮处于等待状态;
第一任务添加模块,用于在建立绑定关系时,根据所述绑定关系的到期时间将所述绑定关系的标识存储于所述两个时间轮以及定时解绑任务列表之一;
任务处理模块,用于从所述处于运行状态的时间轮对应当前时间的时间格内读出存储的至少一个绑定关系的标识,并根据读出的至少一个绑定关系的标识进行解绑处理;
第二任务添加模块,用于从所述定时解绑任务列表中获取到期时间在所述处于等待状态的时间轮的运行时间内的绑定关系的标识,并将获取的绑定关系的标识存储于处于等待状态的时间轮;
解绑处理周期设置模块,用于预先设置解绑处理周期;
分组模块,用于按照预先设置的分段间隔将绑定关系列表中的绑定关系的标识划分为多个绑定关系标识区间;以及
任务分配模块,用于分别将所述多个绑定关系标识区间分配给多个服务实例,以使所述多个服务实例按照分配给自身的绑定关系标识区间分别扫描所述绑定关系列表,对所述绑定关系列表中记录的已过到期时间且尚未解绑的绑定关系执行解绑操作。
12.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1‑10中任意一项所述的绑定关系处理方法。
13.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行权利要求1‑10中任意一项所述的绑定关系处理方法。

说明书全文

绑定关系处理方法及相关设备

技术领域

[0001] 本公开涉及互联网技术领域,尤其涉及一种绑定关系处理方法、绑定关系处理装置、电子设备、存储介质及程序产品。

背景技术

[0002] 虚拟号码是用于保护通信双方的号码安全的一种服务。这种服务可以应用在多种业务场景下,例如,订外卖、打车、快递、客服以及人员招聘等等。在这些业务场景下,通过虚拟号码可以隐藏业务人员,例如,骑手、司机、快递员、客服等人员以及个人用户的真实号码,彼此仅通过业务系统提供的虚拟号码进行通信,以达到保护通信双方的号码安全的目的。
[0003] 在借助虚拟号码进行通信前,业务系统需要先将业务人员号码、用户号码和虚拟号码之间建立绑定关系,并仅向通信的主叫方提供被叫方的虚拟号码。这样,在发生呼叫时,业务系统才能根据被叫方的虚拟号码以及建立的绑定关系确定被叫方的真实号码并建立相应的通信连接。但在上述各种业务场景下,建立的绑定关系都不是永久存在的,通常会未为建立的绑定关系设置一个到期时间,业务系统需要在绑定关系到期时进行解绑操作。
[0004] 此外,在一些大请求量、高并发的场景下,通常需要建立大量的绑定关系,同时绑定关系的有效期比较短,对绑定关系的解绑延迟容忍度低。比如,在机器人外呼的业务场景下,机器人呼叫并发量高,且每通呼叫都需要建立新的绑定关系,2至3分钟后就需要进行解绑,如果解绑延迟过高,则就会阻塞后续绑定关系的建立,从而影响呼叫的并发,限制整个业务量级。发明内容
[0005] 有鉴于此,本公开的实施例提供一种绑定关系处理方法,可以及时并且可靠地实现绑定关系的解绑操作。
[0006] 根据本公开的一些实施例,上述绑定关系处理方法可以包括:设置两个时间轮并分别设置所述两个时间轮的运行时间,以使所述两个时间轮交替处于运行状态,且在其中一个时间轮处于运行状态时,另一个时间轮处于等待状态;建立绑定关系时,根据所述绑定关系的到期时间将所述绑定关系的标识存储于所述两个时间轮以及定时解绑任务列表之一;从所述处于运行状态的时间轮对应当前时间的时间格内读出存储的至少一个绑定关系的标识,并根据读出的至少一个绑定关系的标识进行解绑处理;从所述定时解绑任务列表中获取到期时间在所述处于等待状态的时间轮的运行时间内的绑定关系的标识,并将获取的绑定关系的标识存储于所述处于等待状态的时间轮。
[0007] 基于上述方法,本公开的实施例提供了一种绑定关系处理装置,包括:
[0008] 时间轮管理模,用于设置两个时间轮并分别设置所述两个时间轮的运行时间,以使所述两个时间轮交替处于运行状态,且在其中一个时间轮处于运行状态时,另一个时间轮处于等待状态;
[0009] 第一任务添加模块,用于在建立绑定关系时,根据所述绑定关系的到期时间将所述绑定关系的标识存储于所述两个时间轮以及定时解绑任务列表之一;
[0010] 任务处理模块,用于从所述处于运行状态的时间轮对应当前时间的时间格内读出存储的至少一个绑定关系的标识,并根据读出的至少一个绑定关系的标识进行解绑处理;
[0011] 第二任务添加模块,用于从所述定时解绑任务列表中获取到期时间在所述处于等待状态的时间轮的运行时间内的绑定关系的标识,并将获取的绑定关系的标识存储于所述处于等待状态的时间轮。
[0012] 此外,本公开的实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述绑定关系处理方法。
[0013] 本公开的实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行上述绑定关系处理方法。
[0014] 本公开的实施例还提供了一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行上述绑定关系处理方法。
[0015] 上述绑定关系处理方法以及相关设备通过两个时间轮交替运行的方式实现绑定关系的及时解绑。其中,处于运行状态的时间轮中记录了即将到期的绑定关系,并通过时间轮的运转按照绑定关系的到期时间依次完成绑定关系的解绑。在此期间,还可以将已建立的其他绑定关系按照其到期时间存储在处于等待状态的时间轮或者定时解绑任务列表中,以便在处于等待状态的时间轮运行时再对这些绑定关系进行及时解绑。可见,上述绑定关系的处理方式可以实现绑定关系的及时解绑,有效避免了解绑延迟过高的情况发生,而且两个时间轮交替运行的方式具有很高的可靠性。附图说明
[0016] 为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0017] 图1显示了本公开一些实施例所述的绑定关系处理方法的实现流程;
[0018] 图2a和图2b分别显示了本公开实施例中处于运行状态的时间轮和处于等待状态的时间轮的一个示例;
[0019] 图2c显示了本公开实施例中定时解绑任务列表的一个示例;
[0020] 图3a和图3b分别显示了本公开实施例所述的处于运行状态的时间轮的示例;
[0021] 图4显示了本公开实施例所述的处于等待状态的时间轮的示例;
[0022] 图5显示了本公开实施例所述的在一个解绑处理周期内对绑定关系进行解绑的实现流程;
[0023] 图6显示了本公开实施例中将绑定关系列表所涉及的绑定关系的标识划分为多个绑定关系标识区间并分配给三个服务实例一个示例;
[0024] 图7显示了本公开一些实施例所述的绑定关系处理装置的内部结构;以及
[0025] 图8示出了本公开一些实施例所述的一种更为具体的电子设备硬件结构示意图。

具体实施方式

[0026] 为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
[0027] 需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
[0028] 如前所述,通过建立虚拟号码和真实号码之间的绑定关系可以有效地保护用户号码的安全。但是,在一些大请求量、高并发的场景下,需要建立的绑定关系的数量十分庞大,同时绑定关系的有效期也比较短,对绑定关系的解绑延迟容忍度低。这样,完成绑定关系解绑的时延,在很大程度上会影响呼叫的并发,甚至会限制整个业务量级。
[0029] 为此,本公开的一些实施例提供了一种绑定关系的处理方法,可以及时并且可靠地实现绑定关系的解绑操作。而为了实现本公开实施例所述的绑定关系处理方法需要预先进行如下的配置:建立一个绑定关系列表。该绑定关系列表用于记录已建立的全部的绑定关系及其相关信息。上述绑定关系列表通常以绑定关系的标识作为索引,记录了具有绑定关系的虚拟号码和其对应的真实号码,该绑定关系的到期时间以及该绑定关系的状态(例如,未解绑或者已解绑)等等。也就是说,上述绑定关系列表是一个全量的绑定关系列表,例如,在本公开的一些实施例中,上述全部的绑定关系可以包括:已经解绑的历史绑定关系以及尚未解绑的还没有到期的绑定关系。因此,上述绑定关系列表包含的数据量通常会比较庞大。
[0030] 经过了以上配置之后,就可以对建立的绑定关系进行及时的解绑操作了。
[0031] 图1显示了本公开实施例所述的绑定关系处理方法的实现流程。如图1所示,该方法可以包括如下步骤:
[0032] 在步骤102,设置两个时间轮并分别设置所述两个时间轮的运行时间,以使上述两个时间轮将交替处于运行状态,且在其中一个时间轮处于运行状态时,另一个时间轮处于等待状态。
[0033] 在本公开的实施例中,经过上述设置,两个时间轮按照其设置的运行周期交替处于运行状态或等待状态。也即,在一个时间轮运行时,另一个时间轮处于等待状态;而当原来处于等待状态的时间轮运行时,原来处于运行状态的时间轮将处于等待状态。也就是说,上述处于运行状态的时间轮和处于等待状态的时间轮并不是固定的特指某一个时间轮,而是指代处于某种状态的时间轮。
[0034] 在本公开的实施例中,通过分别为两个时间轮设置运行时间的方式控制两个时间轮交替运行。需要说明的是,在本公开的实施例中,时间轮的运行时间是指为时间轮设置的一个时间段,在这个时间段的起始时间启动时间轮运行,在这个时间段的终止时间,停止时间轮的运行。
[0035] 此外,在本公开的实施例中,每个时间轮还设置有运行周期,也就是,时间轮运行一周所需的时间。通常,上面设置的时间轮的一次运行时间与时间轮的运行周期是相等的。
[0036] 此外,在本公开的实施例中,两个时间轮的运行周期可以相同也可以不同,本申请对此不进行限定。当然,为了简化对两个时间轮的控制流程,方便进行运行时间的设置,可以将两个时间轮的运行周期设置为相同。
[0037] 此外,每个时间轮内部还将包括若干个时间格,每个时间格具有预先设置的时长。通常,一个时间轮内各个时间格所对应的时长时相同的。在时间轮的运行过程中,根据时间轮的具体运行时间,可以将该时间轮上的每个时间格具体对应于一段时间。
[0038] 通常,还将有一个系统指针指向该时间轮上对应当前时间的时间格,从而可以实现对对应当前时间的时间格内数据的读取操作。类似于真正的时钟,当时间走到时间轮下一个时间格对应的下一段时间时,系统指针指向时间轮上的下一个时间格,从而可以实现对下一个时间格内数据的读取操作。
[0039] 在本公开的一些实施例中,上述时间轮可以存储在绑定关系处理装置的缓存中。
[0040] 下面结合一个具体的示例来说明本公开实施例中的时间轮。在本例中,上述两个时间轮的运行周期都设置为1个小时。这样,两个时间轮将每隔1个小时交替运行一次,且每个时间轮的运行时间也是一个小时。如此,可以将上述两个时间轮分别称为奇数时间轮和偶数时间轮,其中,奇数时间轮将在奇数小时内运行,而偶数时间轮将在偶数小时内运行。并且,每个时间轮都包含3600个时间格,这样,每个时间格对应的时长是1秒。对于处于运行状态的时间轮来讲,时间轮上的每个时间格将具体对应于一个秒级时间。系统指针将指向当前秒级时间所对应的时间格。当时间走到下一秒时,系统指针将移动到下一秒所对应的时间格。
[0041] 需要说明的是,上述例子仅仅是时间轮的一个示例,在具体实践中,可以按照业务对时延精度的要求设置不同的时间轮运行周期以及时间格的数量,例如,业务对时延精度的要求较低,则时间格对应的时长可以设置的相对较大,例如2秒或者5秒等等。当然,时间轮的周期也可以设置为其他时长,例如30分钟或者2个小时等等。
[0042] 此外,除了上述绑定关系列表以及两个时间轮之外,还需要设置一个定时解绑任务列表,用于记录已建立的绑定关系中尚未到期需要解绑的绑定关系的标识以及其对应的到期时间。特别地,该定时解绑任务列表可以以各个绑定关系的到期时间作为索引,方便对符合条件的绑定关系的标识进行查找。在本公开的一些实施例中,上述绑定关系列表以及定时解绑任务列表可以存储在绑定关系处理装置的数据库中。
[0043] 在步骤104,建立绑定关系时,根据绑定关系的到期时间将绑定关系的标识存储于两个时间轮以及定时解绑任务列表之一。
[0044] 如前所述,在建立绑定关系时,每个建立的绑定关系都有确定的到期时间,例如,1秒后到期、2分钟后到期或者一个小时后到期等等。由于本公开实施例所设置的两个时间轮运行时间是不同的,因此,需要根据所建立绑定关系的到期时间确定将绑定关系加入哪个时间轮中,才能实现在其到期的时候及时进行解绑。
[0045] 具体地,上述步骤104具体可以包括:对于建立的绑定关系首先确定该绑定关系的到期时间是否在处于运行状态的时间轮的运行时间内或者是否在处于等待状态的时间轮的运行时间内。然后,当确定该绑定关系的到期时间在处于运行状态的时间轮的运行时间内时,可以将该绑定关系的标识存储于处于运行状态的时间轮。当确定该绑定关系的到期时间在处于等待状态的时间轮的运行时间内时,可以将该绑定关系的标识存储于处于等待状态的时间轮。而当确定该绑定关系的到期时间即不在处于运行状态的时间轮的运行时间内,也不在处于等待状态的时间轮的运行时间内时,可以将该绑定关系的标识存储于定时解绑任务列表中。
[0046] 具体地,在将绑定关系的标识存储于处于运行状态的时间轮时,可以先根据该绑定关系的到期时间确定处于运行状态的时间轮上与该到期时间对应的时间格;然后,再将该绑定关系的标识存储于该时间格内。
[0047] 类似地,上述在将绑定关系的标识存储于处于等待状态的时间轮时,可以先根据该绑定关系的到期时间确定处于等待状态的时间轮上与该到期时间对应的时间格;然后,再将该绑定关系的标识存储于该时间格内。
[0048] 具体地,在上述过程中,在将绑定关系的标识存储到一个时间格内时,可以先判断该时间格内是否已包含绑定关系标识队列,如果有,则可以将绑定关系的标识加入到该绑定关系标识队列中,例如,加入到该绑定关系标识队列的队尾;如果没有,则可以先建立一个绑定关系标识队列,再将绑定关系的标识加入到该绑定关系标识队列中,例如,加入到该绑定关系标识队列的队尾。需要说明的是,上述时间轮以及各个时间格内部的绑定关系标识队列都可以通过远程字典服务(Redis)数据库实现,具体地,上述时间轮可以通过双向循环链表实现;上述绑定关系标识队列可以通过队列实现。
[0049] 此外,在将绑定关系的标识存储于定时解绑任务列表时,可以以绑定关系的到期时间为索引,将该绑定关系的标识写入定时解绑任务列表中。
[0050] 图2a和图2b分别显示了本公开实施例中经过上述步骤104处理之后得到的处于运行状态的时间轮和处于等待状态的时间轮的一个示例。图2c显示了本公开实施例中经过上述步骤104处理之后得到的定时解绑任务列表的一个示例。这样,如图2a、图2b、以及图2c所示,需要在当前小时内解绑的绑定关系的标识将被加入到处于运行状态的时间轮中;需要在下一个小时内解绑的绑定关系的标识将被加入到处于等待状态的时间轮中(每个时间轮包含3600个时间格,每个时间格的时长是1秒);而其他绑定关系的标识将被加入到定时解绑任务列表中。在图2a、图2b、以及图2c中将绑定关系的标识简称为关系ID。由于处于运行状态的时间轮是在当前小时内运行的时间轮,因此,其各个时间格内所记录的标识对应的绑定关系将在本小时内解绑;处于等待状态的时间轮是在下一个小时内运行的时间轮,因此,其各个时间格内所记录的标识对应的绑定关系将在下一个小时内解绑。而定时解绑任务列表中记录的标识对应的绑定关系将在后面按照其到期时间解绑。
[0051] 如图2c所示,上述定时解绑任务列表除了包括绑定关系的标识以及到期时间字段之外,还可以包括一个任务状态字段以及一个或多个扩展字段。其中,包括任务状态字段的目的是为了暂存在一段时间内解绑的绑定关系的相关数据,以方便进行数据备份以及业务管理等操作。通常,在可以在数据备份之后,统一将上述定时解绑任务列表中任务状态显示为已解绑的定时解绑任务记录删除,仅保留未解绑的定时解绑任务记录,以避免上述定时解绑任务列表的数据量不断增加,影响数据处理效率。
[0052] 在步骤106,从处于运行状态的时间轮对应当前时间的时间格内读出存储的至少一个绑定关系的标识,并根据读出的至少一个绑定关系的标识进行解绑处理。
[0053] 如前所述,每个时间轮内部将包括若干个时间格,且在时间轮的运行期间,每个时间格对应的具体的一段时间。此时,将有一个系统指针指向该时间轮上对应当前时间的时间格。在这种情况下,在上述步骤106,可以从上述处于运行状态的时间轮对应当前时间的时间格内读出存储的绑定关系标识队列。该绑定关系标识队列中所记录的绑定关系的标识是需要在该段时间内解绑的绑定关系的标识。
[0054] 在本公开的实施例中,上述步骤106所述的解绑处理具体可以包括:由集群中的至少一个服务实例分别从上述绑定关系标识队列中拉取一个或多个绑定关系的标识;再由上述至少一个服务实例再分别根据上述拉取的一个或多个绑定关系的标识进行相应绑定关系的解绑操作;最后,再删除上述绑定关系标识队列。
[0055] 在本公开的一些实施例中,上述由上述至少一个服务实例再分别根据上述拉取的一个或多个绑定关系的标识进行相应绑定关系的解绑操作可以包括如下两个部分的操作:
[0056] 第一部分,根据上述一个或多个绑定关系的标识,在上述绑定关系列表中查找相应的绑定关系记录,并将所查找到的绑定关系记录的绑定状态修改为已解绑。
[0057] 第二部分,根据上述一个或多个绑定关系的标识,将上述定时解绑任务列表中相应的定时解绑任务记录删除或者将所述定时解绑任务列表中相应的定时解绑任务记录的任务状态设置为已解绑。
[0058] 也就是说,在上述解绑操作过程中,既要在上述绑定关系列表中完成解绑操作也要在上述定时解绑任务列表中完成解绑操作。
[0059] 图3a和图3b分别显示了本公开实施例中经过上述步骤106处理之前和之后的处于运行状态的时间轮的示例。假设图3a所对应的时间是X小时Y分1秒,如图3a所示,当前系统指针指向时间轮的第1秒时间格,并可以从中读取包含关系ID1、关系ID2……的绑定关系标识队列。假设图3b所对应的时间是X小时Y分2秒,如图3b所示,当前系统指针指向时间轮的第2秒时间格,并可以从中读取包含关系ID3、关系ID4……的绑定关系标识队列。而且此时,第1秒时间格中包含的绑定关系标识队列已经被删除了。
[0060] 在步骤108,从定时解绑任务列表中获取到期时间在处于等待状态的时间轮的运行时间内的绑定关系的标识,并将获取的绑定关系的标识存储于处于等待状态的时间轮。
[0061] 如前所述,处于运行状态的时间轮的主要作用是在其运行过程中根据其各个时间格内存储的绑定关系的标识进行解绑操作。而上述处于等待状态的时间轮的主要功能是从定时解绑任务列表中读取到期时间为该处于等待状态的时间轮运行时间内的绑定关系的标识,并将读取的绑定关系的标识按照其对应的到期时间写入相应的时间格中。
[0062] 如此,上述步骤108具体可以包括:以处于等待状态的时间轮的运行时间为查询条件,从上述定时解绑任务列表中查询在处于等待状态的时间轮运行时间内的绑定关系的标识;以及根据查询得到的绑定关系的标识对应的到期时间,将查询得到的绑定关系的标识存储于处于等待状态的时间轮上与上述到期时间对应的时间格内。
[0063] 如前所述,上述定时解绑任务列表可以以绑定关系的到期时间作为索引,因此,在上述步骤中,可以直接以上述处于等待状态的时间轮的运行时间为查询条件从定时解绑任务列表中查询出符合条件的绑定关系的标识,而无需遍历整个定时解绑任务列表,实现效率非常高。而且,通常,上述定时解绑任务列表并不包含或者仅包含少量的已解绑的绑定关系的记录,因此,属于轻量级的数据处理,可以实现快速的数据查询和处理。
[0064] 具体地,如前所述,在将绑定关系的标识存储到一个时间格内时,可以先判断该时间格内是否已包含绑定关系标识队列,如果有,则可以将绑定关系的标识加入到该绑定关系标识队列中,例如,加入到该绑定关系标识队列的队尾;如果没有,则可以先建立一个绑定关系标识队列,再将绑定关系的标识加入到该绑定关系标识队列中,例如,加入到该绑定关系标识队列的队尾。
[0065] 图4显示了本公开实施例中经过上述步骤108处理之前和之后的处于等待状态的时间轮的示例。如图4所示,在经过上述步骤108的处理之前,上述处于等待状态的时间轮各个时间格内均可能不包含绑定关系标识队列。而在经过上述步骤108的处理之后,上述处于等待状态的时间轮各个时间格内均装载了绑定关系标识队列,该队列记录了在其的对应时间段内需要解绑的对应关系的标识。
[0066] 需要说明的是,根据设置的两个时间轮的运行时间,在处于运行状态的时间轮运行时间结束后,处于运行状态的时间轮的状态将变为处于等待状态的时间轮,而处于等待状态的时间轮将变为处于运行状态的时间轮。
[0067] 此外,上述方法还可以包括:根据当前时间、上述两个时间轮的运行周期更新当前新变为等待状态的时间轮的运行时间。具体地,可以将上述新变为等待状态的时间轮的运行时间更新为(t+T2,t+T1+T2],其中,t代表当前时间、T1代表该时间轮自身的运行周期以及T2代表另一个时间轮的运行周期。如果两个时间轮的运行周期相同,均为T,则可以将上述新变为等待状态的时间轮的运行时间更新为(t+T,t+2T]。
[0068] 而对于新变为运行状态的时间轮,由于其运行时间已经在其上一次变为等待状态的时间轮时进行了更新,此时不需要再次更新。
[0069] 可见,上述绑定关系处理方法以及相关设备通过两个时间轮交替运行的方式实现绑定关系的及时解绑。其中,处于运行状态的时间轮中记录了即将到期的绑定关系,并通过时间轮的运转按照绑定关系的到期时间依次完成绑定关系的解绑。在此期间,还可以将已建立的其他绑定关系按照其到期时间存储在处于等待状态的时间轮或者定时解绑任务列表中,以便在处于等待状态的时间轮运行时再对这些绑定关系进行及时解绑。可见,上述绑定关系的处理方式可以实现绑定关系的及时解绑。例如,当时间轮的时间格的时长设定为1秒时,可以将绑定关系的解绑延迟降低至1秒之内,有效避免了解绑延迟过高的情况发生,保证资源释放的及时性。
[0070] 此外,上述方法通过建立的定时解绑任务列表,可以减少各个服务实例对全量的绑定关系列表的扫描,大大降低了数据库的压。而且,在提取了需要解绑的绑定关系标识队列之后,集群中所有服务实例均可以参与解绑任务的执行,一方面提高了解绑任务的处理效率,另一方面还可以通过横向拓展(增加服务实例数量)的方式提升整体性能,具有高性能且易扩展的特点。
[0071] 如前所述,上述时间轮可以通过Redis数据库等第三方数据库实现,数据模型简单,实现和维护都比较容易。而且不需要依赖额外组件,一定程度保证可用性。
[0072] 在业务运行的过程中,也可能会遇到网络波动、网络延迟等异常情况。因此,为了保障服务的高可用性以及及时性,本公开的实施例在上述方案的基础之上进一步补充增加了基于分片定时任务的周期解绑方案。在该方案中,对定时任务进行分片并分配给不同的服务实例进行执行,其目的是为了发挥集群的性能。在该方案中,预先设置一个解绑处理周期,用于设定执行该方法的周期。图5显示了本公开实施例所述的在一个解绑处理周期内对绑定关系进行解绑的实现流程。如图5所示,该方法可以包括:
[0073] 在步骤502,按照预先设置的分段间隔将绑定关系列表所涉及的绑定关系的标识划分为多个绑定关系标识区间。
[0074] 在本公开的实施例中,上述分段间隔可以根据实际需要灵活设置。本申请对其具体的数值不进行限定。不过可以理解,设置的分段间隔越小,越容易在多个服务实例之间实现平均的解绑任务分配。
[0075] 在步骤504,将划分得到的多个绑定关系标识区间分配给多个服务实例。
[0076] 在本公开的实施例中,为了在多个服务实例之间实现平均的解绑任务分配,可以按照服务实例的索引先递增再递减的顺序分别将划分得到的多个绑定关系标识区间依次分配给上述多个服务实例。
[0077] 在为上述多个服务实例分配了绑定关系标识区间之后,上述多个服务实例即可以按照分配给自身的绑定关系标识区间分别扫描所述绑定关系列表,对所述绑定关系列表中在分配给自身的绑定关系标识区间内记录的已过到期时间且尚未解绑的绑定关系执行解绑操作。
[0078] 在本公开的实施例中,上述对所述绑定关系列表中在分配给自身的绑定关系标识区间内记录的已过到期时间且尚未解绑的绑定关系执行解绑操作可以包括:对绑定关系列表中在分配给自身的绑定关系标识区间内记录的已过到期时间且尚未解绑的绑定关系所对应记录的绑定状态修改为已解绑。
[0079] 图6显示了本公开实施例中将绑定关系列表所涉及的绑定关系的标识划分为多个绑定关系标识区间并分配给三个服务实例一个示例。图6中的横轴代表绑定关系列表中包含的绑定关系的标识,可见根据预先设置的分段间隔将其划分为多个关系标识区间,简称为分段。图6中的纵轴代表每个分段内包含的绑定关系记录的数量。此外,图6中内部空白的分段代表分别给服务实例1的分段;内部填充了斜条纹的分段代表分配给服务实例2的分段;内部填充了网格的分段分别分配给服务实例3的分段。也就是说,在图6中,是按照服务实例的索引先递增再递减的顺序分别将划分得到的多个分段依次分配给上述多个服务实例的。通过对绑定关系列表进行统计,发现时间越靠前,也就是绑定关系的标识越靠前的分段内尚未解绑的绑定关系的数量越少;而时间越靠后,也就是绑定关系的标识越靠后的分段内尚未解绑的绑定关系的数量越多。每个分段内尚未解绑的大概的数量可如图6中实线之下的部分所示。这样,通过图6所示的按照服务实例的索引先递增再递减的顺序进行分配的方式,可以基本保障每个服务实例最终需要扫描以及需要进行解绑操作的绑定关系的总数量是基本相等的。
[0080] 可以看出通过图5所示的方法,在基于时间轮的绑定关系处理方法的基础之上进一步引入了周期性的分片定时任务的解绑方案,可以进一步保障解绑操作的及时性和高可用性,更加有效地抵御网络波动或者网络延迟等异常情况的发生。
[0081] 需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
[0082] 需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0083] 对应上述方法,本公开的实施例还公开了一种绑定关系处理装置。图7显示了本公开实施例所述的装置的内部结构。如图7所示,该装置可以包括:时间轮管理模块702、第一任务添加模块704、任务处理模块706以及第二任务添加模块708。
[0084] 其中,上述时间轮管理模块702用于设置两个时间轮并分别设置所述两个时间轮的运行时间,以使所述两个时间轮交替处于运行状态,且在其中一个时间轮处于运行状态时,另一个时间轮处于等待状态。
[0085] 上述第一任务添加模块704用于在建立绑定关系时,根据绑定关系的到期时间将绑定关系的标识存储于两个时间轮或者定时解绑任务列表之一。
[0086] 上述任务处理模块706用于从处于运行状态的时间轮对应当前时间的时间格内读出存储的至少一个绑定关系的标识,并根据读出的至少一个绑定关系的标识进行解绑处理。
[0087] 上述第二任务添加模块708用于从定时解绑任务列表中获取到期时间在处于等待状态的时间轮的运行时间内的绑定关系的标识,并将获取的绑定关系的标识存储于处于等待状态的时间轮。
[0088] 在本公开的一些实施例中,上述第一任务添加模块704可以包括:
[0089] 到期时间判断单元,用于确定所述绑定关系的到期时间是否在所述处于运行状态的时间轮的运行时间内或者是否在所述处于等待状态的时间轮的运行时间内;
[0090] 第一任务添加单元,用于响应于确定所述绑定关系的到期时间在所述处于运行状态的时间轮的运行时间内,将所述绑定关系的标识存储于所述处于运行状态的时间轮;
[0091] 第二任务添加单元,用于响应于确定所述绑定关系的到期时间在所述处于等待状态时间轮的运行时间内,将所述绑定关系的标识存储于所述处于等待状态的时间轮;
[0092] 第三任务添加单元,用于响应于确定所述绑定关系的到期时间既不在所述处于运行状态的时间轮的运行时间内也不在所述处于等待状态时间轮的运行时间内,将所述绑定关系的标识存储于所述定时解绑任务列表。
[0093] 在本公开的另一些实施例中,上述绑定关系处理装置可以进一步包括:
[0094] 解绑处理周期设置模块,用于预先设置解绑处理周期;
[0095] 分组模块,用于按照预先设置的分段间隔将绑定关系列表中的绑定关系的标识划分为多个绑定关系标识区间;
[0096] 任务分配模块,用于分别将所述多个绑定关系标识区间分配给所述多个服务实例,以使所述多个服务实例按照分配给自身的绑定关系标识区间分别扫描所述绑定关系列表,对所述绑定关系列表中记录的已过到期时间且尚未解绑的绑定关系执行解绑操作。
[0097] 上述各个模块的具体实现可以参考前述方法以及附图,在此不再重复说明。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
[0098] 上述实施例的装置用于实现前述任一实施例中相应的绑定关系处理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
[0099] 基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的绑定关系处理方法。
[0100] 图8示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器2010、存储器2020、输入/输出接口2030、通信接口2040和总线2050。其中处理器2010、存储器2020、输入/输出接口2030和通信接口2040通过总线2050实现彼此之间在设备内部的通信连接。
[0101] 处理器2010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
[0102] 存储器2020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器2020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器2020中,并由处理器2010来调用执行。
[0103] 输入/输出接口2030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘鼠标触摸屏、麦克、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
[0104] 通信接口2040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
[0105] 总线2050包括一通路,在设备的各个组件(例如处理器2010、存储器2020、输入/输出接口2030和通信接口2040)之间传输信息。
[0106] 需要说明的是,尽管上述设备仅示出了处理器2010、存储器2020、输入/输出接口2030、通信接口2040以及总线2050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0107] 上述实施例的电子设备用于实现前述任一实施例中相应的绑定关系处理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
[0108] 基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的绑定关系处理方法。
[0109] 本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
[0110] 上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的任务处理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
[0111] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0112] 另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
[0113] 尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
[0114] 本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
QQ群二维码
意见反馈