CN113239088A - 一种异步化可调节预取量的序号发生器获取方法及装置 - Google Patents
一种异步化可调节预取量的序号发生器获取方法及装置 Download PDFInfo
- Publication number
- CN113239088A CN113239088A CN202110387660.XA CN202110387660A CN113239088A CN 113239088 A CN113239088 A CN 113239088A CN 202110387660 A CN202110387660 A CN 202110387660A CN 113239088 A CN113239088 A CN 113239088A
- Authority
- CN
- China
- Prior art keywords
- sequence number
- sequence
- early warning
- asynchronous
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000015654 memory Effects 0.000 claims description 31
- 230000001360 synchronised effect Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 2
- 230000007717 exclusion Effects 0.000 claims description 2
- 239000002699 waste material Substances 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种异步化可调节预取量的序号发生器获取方法及装置。该方法及装置可预测出序号不足并发出预警信号,并利用异步方式对预警信号进行处理。并且还能根据序号消耗速度动态计算需要预取的序号数量,然后从数据库中预取上述数量的序号。该方法及装置在高并发条件下能更加平缓获取序号,并能够尽量减少序号浪费。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种异步化可调节预取量的序号发生器获取方法及装置。
背景技术
序号发生器作为一类非常重要和常见的二进制信号产生装置。在金融业务交易系统中,序号是唯一标识一个实体的重要标识,比如金融机构系统常见的客户序号和流水号这两种序号,都具有唯一性。
目前,应用序号发生器来实现交易用序号的获取方式通常为:在数据库表中登记一条序号记录,记录序号的各种属性及当前已分配的最大序号。使用程序开发组件,从数据库中预取N个连续序号,并缓存在本地的内存中,为防止流水号重复,更新数据库表中序号记录的当前已分配的最大序号+N。每次申请交易时首先从本地内存中计算并返回下一个序号。如果该段序号用完后,则重复上述过程从数据库中再预取N个连续序号。
然而,现有的序号发生器存在如下问题:高并发情况下,多个节点的本地缓存用完同时到数据库中申请,造成数据库单条记录的锁等待排队,影响联机交易处理过程的平缓与稳定,影响用户体验;本地缓存的序号的个数的设定是个难题,设置过大会造成序号浪费,设置过小会降低序号申请的性能。
发明内容
本发明的目的在于提供一种异步化可调节预取量的序号发生器获取方法及装置,在高并发条件下更加平缓获取序号,并能够尽量减少序号浪费。
为实现上述目的,第一方面,本发明提供了一种异步化可调节预取量的序号发生器获取方法,包括以下步骤:
获取序列号生成请求,并从通过序列号名称获取的本地缓存序列号段队列中计算并返回下一个可用序列号;
根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号;
利用异步序号处理器的线程池接收所述序号不足预警信号,并分配对应的线程对所述序号不足预警信号进行处理;
若所述序号不足预警信号满足处理条件,则计算序号消耗速度,并从数据库中基于计算出的预取数据量预取设定序列名对应的可用序号段;
将所述可用序号段添加到所述本地缓存序列号段队列中,并发出添加信号至前台线程。
其中,根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号之后,所述方法还包括:
将上次发出所述序号不足预警信号对应的申请序号个数重置为0;
利用wait方法阻塞等待条件锁上的信号。
其中,将所述可用序号段添加到所述本地缓存序列号段队列中,并发出添加信号至前台线程之后,所述方法还包括:
在接收到所述添加信号后,重新判断当前所述本地缓存序列号段队列中的队列的元素个数。
其中,将所述可用序号段添加到所述本地缓存序列号段队列中,并发出添加信号至前台线程之后,所述方法还包括:
更新预取序号的平均处理时间,并将分配的所述线程归还至所述异步序号处理器的线程池。
其中,根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号,包括:
若当前队列元素个数大于0,判断当前所述可用序列号与设定序号段的起始序号的比值;
当当前所述队列中的剩余元素个数除以所有序号段的总元素个数,并乘以100%后,若得到的乘积小于或等于设定的预警阈值,则发出序号不足预警信号;
若当前队列元素个数等于0或者在移除掉队列开头的设定序号段后队列内的元素个数为0,则发出序号不足预警信号。
其中,若所述序号不足预警信号满足处理条件,则计算序号消耗速度,并从数据库中基于计算出的预取数据量预取设定序列名对应的可用序号段,包括:
若所述序号不足预警信号满足处理条件,则将消耗序号总数除以当前预警时间与上次预警时间的差值,得到序号消耗速度;
将设定的预取序号时间间隔与设定的预取序号平均耗时进行求和,并将得到的和值与所述序号消耗速度相乘,得到当前预取序号总数;
基于所述当前预取序号总数,从数据库中预取设定序列名对应的可用序号段。
其中,基于所述当前预取序号总数,从数据库中预取设定序列名对应的可用序号段,包括:
获取当前时间戳作为预取序号起始时间;
使用带互斥写锁的sql语句从数据库中的序号表中查询设定序列名的所有字段;
判断所述序号表中的当前使用序号与初始序号和最大序号之间的比值,并更新当前使用序号为返回序号段的最大序号,得到对应的所述可用序号段。
第二方面,本发明提供了一种异步化可调节预取量的序号发生器获取装置,适用于如第一方面所述的一种异步化可调节预取量的序号发生器获取方法,
所述异步化可调节预取量的序号发生器获取装置包括获取模块、同步处理模块和异步处理模块,所述获取模块与所述同步处理模块连接,所述异步处理模块与所述同步处理模块连接;
所述获取模块,用于获取序号生成请求,所述序号生成请求包含需要生成的序号的序号名;
所述同步处理模块,用于从预取的序号段中计算需要返回的可用序列号;并根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号;
所述异步处理模块,用于对接收的序号不足预警信号进行处理,从数据库中预取一段或多段设定序列名对应的可用序号段,并存储到本地缓存序列号段队列中。
第三方面,本发明提供了一种计算机设备,包括存储器和处理器,所述存储器,用于存储程序指令,所述处理器,用于调用所述存储器中的程序指令执行如第一方面所述的方法包括的部分或全部步骤。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如第一方面所述的方法的部分或全部步骤。
本发明的一种异步化可调节预取量的序号发生器获取方法及装置,获取序列号生成请求,并从通过序列号名称获取的本地缓存序列号段队列中计算并返回下一个可用序列号;根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号;同时也根据队列中剩余可用序号个数所占百分比是否低于预警阀值,并给予判断结果发出序号不足预警信号;利用异步序号处理器的线程池接收所述序号不足预警信号,并分配对应的线程对所述序号不足预警信号进行处理;若所述序号不足预警信号满足处理条件,则计算序号消耗速度,并据此计算需要预取的序列号个数,然后从数据库中预取设定序列名对应的可用序号段;将所述可用序号段添加到所述本地缓存序列号段队列中,并发出添加信号至前台线程,在高并发条件下更加平缓获取序号,并能够尽量减少序号浪费。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的一种异步化可调节预取量的序号发生器获取方法的步骤示意图。
图2是本发明第二实施例提供的一种异步化可调节预取量的序号发生器获取方法的步骤示意图。
图3是本发明提供的一种异步化可调节预取量的序号发生器获取方法的流程示意图。
图4是本发明提供的一种分布式计算机系统。
图5是本发明提供的一种异步化可调节预取量的序号发生器获取装置的而机构示意图。
图6是本发明提供的计算机设备的结构组成示意图。
1-获取模块、2-同步处理模块、3-异步处理模块、101-客户端、102-数据库服务器、301-应用程序、302-处理器、303-存储器、304-输入单元、305-显示单元。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
请参阅图1、图3和图4,本发明第一实施例提供一种异步化可调节预取量的序号发生器获取方法,包括以下步骤:
S101、获取序列号生成请求,并从通过序列号名称获取的本地缓存序列号段队列中计算并返回下一个可用序列号。
具体的,客户端101通过调用序号生成请求API发起序列号生成请求,序列号生成请求API参数:序列号名称,字符串类型,最大长度64个字符,字符限定为英文字符和数字字符;序列号生成请求API响应:下一个可用序号,字符串类型,字符限定为数字字符。
客户端通过序列号名称获取该名称对应的本地缓存序列号段队列,本地缓存序列号段队列优选地存储于哈希表中,键值为序列号名,通过序列号名可以快速的检索到该本地缓存序列号段队列。
其中本地缓存序列号段队列的数据结构为一个先进先出列表、上次预警开始时间、距离上次预警申请序号个数。其中列表中存储着缓存的序号段。
其中序号段的数据结构为起始序号、最大序号及当前可用序号。
当从哈希表中未检索到指定的序列号名的本地缓存序列号段队列时,则生成一个包含空队列、上次预警时间为当前时间(精度为毫秒)、距离上次预警申请序号个数为0的本地缓存序列号段队列,并将其以序列号名为键值加入到哈希表中,同时发出事件给后台处理线程,通知后台线程申请序号段,最后返回该本地缓存序列号段队列。
从本地缓存序列号段队列中计算并返回下一个可用序列号的详细过程如下:
首先,对本地缓存序列号段队列使用synchronized关键字进行加锁,加锁成功后进入下面步骤处理,否则当前线程阻塞等待。
S102、根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号。
具体的,当队列中元素大小超过0时,从先进先出队列中获取队列头部的序号段,但不从队列中移除。检查序号段当前可用序号,如果当前可用序号小于序号段的起始序号,则设置当前可用序号为起始序号加1,并返回起始序号;如果当前可用序号大于序号段的起始序号,并小于等于最大序号,则将结果序号设置为当前可用序号,并将当前可用序号加1,并返回结果序号。如果当前可用序号大于序号段最大序号,则将该序号段从队列中移除,重新根据条件判断执行判断当前队列元素个数是否等于0。
检查当前序号名对应的序号段队列中的所有序号段中剩余序号个数除以所有序号段的总个数,最后乘以100%,如果低于或等于系统配置的预警阀值参数值,则发送序号不足预警信号。
当队列中元素个数等于0或者在一个步骤中移除掉队列开头的序号段后队列内的元素个数为0,则生成序号预警事件,并将序号不足预警事件发送到后台线程池中进行异步处理,同时将距上次预警已申请序号个数重置为0。然后当前线程调用wait方法阻塞等待条件锁(本地缓存序列号段队列)上的信号。
其中序号预警事件包含的属性为:序号名称为当前的申请的序号名称,消耗序号总数设置为距上次预警已申请序号个数,上次预警时间设置为缓存序号段列表中的上次预警时间,当前预警时间设置为当前的时间戳(单位:毫秒)。
S103、利用异步序号处理器的线程池接收所述序号不足预警信号,并分配对应的线程对所述序号不足预警信号进行处理。
具体的,异步序号处理器的线程池接收所述序号不足预警信号,线程池分配线程处理序号不足预警信,线程首先检查该序号名对应的本地缓存序号段列表是否不足或达到预警阀值,如果条件不满足,则丢弃本序号不足预警信号,结束处理,归还线程。
S104、若所述序号不足预警信号满足处理条件,则计算序号消耗速度,并从数据库中基于计算出的预取数据量预取设定序列名对应的可用序号段。
具体的,计算序号消耗速度,计算公式为:
序号消耗速度=消耗序号总数/(当前预警时间–上次预警事件)
根据预取序号时间间隔(单位:秒)计算本次需要预取的序号总数,计算公式为:
需预取序号总数=(预取序号时间间隔+预取序号平均耗时)*计算序号消耗速度。
从数据库中预取指定序列名的下一个可用序号段,该序号段长度为计算出的需预取的序号总数:
获取当前的时间戳作为预取序号起始时间(精确到毫秒);
使用带互斥写锁(for update)的sql语句从数据库中的序号表中查询指定序列名的所有字段。
其中上述的序号表的表结构如下所示:
序号 | 字段名 | 是否主键 | 字段说明 | 类型 | 是否可为空 |
1 | SEQ_NAME | 是 | 序号名称 | VARchar(64) | 否 |
2 | CUR_SEQ_NO | 否 | 当前使用序号 | BIGINT | 是 |
3 | FIRST_SEQ | 否 | 初始序号 | BIGINT | |
4 | MAX_SEQ_NO | 否 | 最大序号 | BIGINT |
如果序号表中当前使用序号小于初始序号,或者当前使用序号大于等于最大序号,则返回的序号段的起始序号为序号表中的初始序号,返回序号段的最大序号为:起始序号+需预取的序号总数-1。
如果序号表中当前使用序号小于最大序号并且大于等于初始序号,那么返回序号段的起始序号为:当前使用序号 + 1,返回序号段的最大序号为: 当前使用序号 + 需预取序号总数。如果返回序号段的最大序号大于序号表中的最大序号,则返回序号段的最大序号为序号表中的最大序号。
更新库表中的当前使用序号为返回序号段的最大序号,并得到对应的可用序号段。
S105、将所述可用序号段添加到所述本地缓存序列号段队列中,并发出添加信号至前台线程。
具体的,将获取到序号段添加到本地缓存序列号段队列中对应序号名的队列中,并使用notify方法发送添加信号,通知相关等待线程。
S106、在接收到所述添加信号后,重新判断当前所述本地缓存序列号段队列中的队列的元素个数。
具体的,根据S102步骤所述,申请序号的线程当前状态为在条件锁上等待通知信号。在收到添加信号后,检查序号段队列中的元素个数,如果队列中元素个数为0,则重新再条件锁上等待通知添加信号,否则按照S102步骤执行。
请参阅图2至图4,本发明第一实施例提供一种异步化可调节预取量的序号发生器获取方法,包括以下步骤:
S201-S206的具体实施方式所描述的内容与本发明第一实施例中的S101-S106中所描述的内容一致,此处不在赘述。
S207、更新预取序号的平均处理时间,并将分配的所述线程归还至所述异步序号处理器的线程池。
具体的,更新预取序号的平均处理时间:
获取当前的时间戳作为预取序号结束时间(精确到毫秒),计算预取序号段耗时:
本次预取序号段耗时 = 预取序号结束时间 – 预取序号开始时间
取当前的预取序号段平均耗时,如果小于等于0,则设置平均耗时为本次预取序号段耗时,否则,将当前的预取序号段平均耗时与本次预取序号段耗时的平均值作为预取序号段的平均耗时更新到内存变量中。
归还线程给异步处理线程池。
其中,S206和S207为同时发生,此处只是基于第一实施例的顺序进行描述,并不限定于S207发生于S206之后。
如图4所示,本申请一实施例提供一种分布式计算机系统,该分布式计算机系统应用于下面实施例所描述的序列号生成方法。该序列号生成系统包括多个客户端101和数据库服务器102。当分布式计算机系统中的某一客户端101(也就是节点)的某一程序需要获取序列号时,会通过该程序的线程进行竞争,竞争成功的线程会进入同步方法,此时会触发从本地缓存的序列号段中计算下一个序号并返回。如果本地没有缓存序号段,或者缓存的序号段消耗完毕,则将触发后台线程申请序号段,并等待序号段申请完毕的信号。后台线程收到请求后则到数据库服务器102中的对应库表的对应记录中获取一段序号段,并添加到当前本地缓存的序号段列表中,并给相关等待申请序号的线程发送信号。
请参阅图5,本发明提供了一种异步化可调节预取量的序号发生器获取装置,适用于所述的一种异步化可调节预取量的序号发生器获取方法,
所述异步化可调节预取量的序号发生器获取装置包括获取模块1、同步处理模块2和异步处理模块3,所述获取模块1与所述同步处理模块2连接,所述异步处理模块3与所述同步处理模块2连接;
所述获取模块1,用于获取序号生成请求,所述序号生成请求包含需要生成的序号的序号名;
所述同步处理模块2,用于从预取的序号段中计算需要返回的可用序列号;并根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号;
所述异步处理模块3,用于对接收的序号不足预警信号进行处理,从数据库中预取一段或多段设定序列名对应的可用序号段,并存储到本地缓存序列号段队列中。
在本实施方式中,关于一种异步化可调节预取量的序号发生器获取装置的具体限定可以参见上文中对于一种异步化可调节预取量的序号发生器获取方法的限定,在此不再赘述。上述一种异步化可调节预取量的序号发生器获取装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本发明实施例提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有应用程序,该程序被处理器执行时实现上述实施例中任意一个实施例的一种基于虚拟引擎的实时画面图片显示方法。其中,所述计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random AcceSS Memory,随即存储器)、EPROM(EraSable Programmable Read-OnlyMemory,可擦写可编程只读存储器)、EEPROM(Electrically EraSable ProgrammableRead-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储设备包括由设备(例如,计算机、手机)以能够读的形式存储或传输信息的任何介质,可以是只读存储器,磁盘或光盘等。
本发明实施例还提供了一种计算机应用程序,其运行在计算机上,该计算机应用程序用于执行上述中任意一个实施例的一种基于虚拟引擎的实时画面图片显示方法。
此外,图6是本发明实施例中的计算机设备的结构组成示意图。
本发明实施例还提供了一种计算机设备,如图6所示。所述计算机设备包括处理器302、存储器303、输入单元304以及显示单元305等器件。本领域技术人员可以理解,图3示出的设备结构器件并不构成对所有设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储器303可用于存储应用程序301以及各功能模块,处理器302运行存储在存储器303的应用程序301,从而执行设备的各种功能应用以及数据处理。存储器可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(ROM)、可编程 ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本发明所公开的存储器包括但不限于这些类型的存储器。本发明所公开的存储器只作为例子而非作为限定。
输入单元304用于接收信号的输入,以及接收用户输入的关键字或者图像。输入单元304可包括触控面板以及其它输入设备。触控面板可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元305可用于显示用户输入的信息或提供给用户的信息以及终端设备的各种菜单。显示单元305可采用液晶显示器、有机发光二极管等形式。处理器302是终端设备的控制中心,利用各种接口和线路连接整个设备的各个部分,通过运行或执行存储在存储器303内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据。
作为一个实施例,所述计算机设备包括:一个或多个处理器302,存储器303,一个或多个应用程序301,其中所述一个或多个应用程序301被存储在存储器303中并被配置为由所述一个或多个处理器302执行,所述一个或多个应用程序301配置用于执行上述实施例中的任意一实施例中的一种基于虚拟引擎的实时画面图片显示方法。
本发明旨在提供一种序号生成性能稳定的基于可持久存储的序号生成器。本申请的发明构思是:让从数据库中获取序号段的操作作为后台线程异步处理,在序号生成请求处理过程中,在序号缓存剩余量达到某个阀值时,触发后台线程提前预取序号段,并加入到的缓存中,避免序号生成请求处理过程中直接到数据库中获取序号段。另外,通过收集序号消耗速度数据,后台线程可以动态调整预取的序号段长度,最大限度减少到数据库中获取序号段的操作,同时也减少了序号的浪费。
本发明的一种异步化可调节预取量的序号发生器获取方法及装置,获取序列号生成请求,并从通过序列号名称获取的本地缓存序列号段队列中计算并返回下一个可用序列号;根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号;利用异步序号处理器的线程池接收所述序号不足预警信号,并分配对应的线程对所述序号不足预警信号进行处理;若所述序号不足预警信号满足处理条件,则计算序号消耗速度,并从数据库中预取设定序列名对应的可用序号段;将所述可用序号段添加到所述本地缓存序列号段队列中,并发出添加信号至前台线程,在高并发条件下更加平缓获取序号,并能够尽量减少序号浪费。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (10)
1.一种异步化可调节预取量的序号发生器获取方法,其特征在于,包括以下步骤:
获取序列号生成请求,并从通过序列号名称获取的本地缓存序列号段队列中计算并返回下一个可用序列号;
根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号;
利用异步序号处理器的线程池接收所述序号不足预警信号,并分配对应的线程对所述序号不足预警信号进行处理;
若所述序号不足预警信号满足处理条件,则计算序号消耗速度,并从数据库中基于计算出的预取数据量预取设定序列名对应的可用序号段;
将所述可用序号段添加到所述本地缓存序列号段队列中,并发出添加信号至前台线程。
2.如权利要求1所述的异步化可调节预取量的序号发生器获取方法,其特征在于,根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号之后,所述方法还包括:
将上次发出所述序号不足预警信号对应的申请序号个数重置为0;
利用wait方法阻塞等待条件锁上的信号。
3.如权利要求1所述的异步化可调节预取量的序号发生器获取方法,其特征在于,将所述可用序号段添加到所述本地缓存序列号段队列中,并发出添加信号至前台线程之后,所述方法还包括:
在接收到所述添加信号后,重新判断当前所述本地缓存序列号段队列中的队列的元素个数。
4.如权利要求1所述的异步化可调节预取量的序号发生器获取方法,其特征在于,将所述可用序号段添加到所述本地缓存序列号段队列中,并发出添加信号至前台线程之后,所述方法还包括:
更新预取序号的平均处理时间,并将分配的所述线程归还至所述异步序号处理器的线程池。
5.如权利要求1所述的异步化可调节预取量的序号发生器获取方法,其特征在于,根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号,包括:
若当前队列元素个数大于0,判断当前所述可用序列号与设定序号段的起始序号的比值;
当当前所述队列中的剩余元素个数除以所有序号段的总元素个数,并乘以100%后,若得到的乘积小于或等于设定的预警阈值,则发出序号不足预警信号;
若当前队列元素个数等于0或者在移除掉队列开头的设定序号段后队列内的元素个数为0,则发出序号不足预警信号。
6.如权利要求1所述的异步化可调节预取量的序号发生器获取方法,其特征在于,若所述序号不足预警信号满足处理条件,则计算序号消耗速度,并从数据库中基于计算出的预取数据量预取设定序列名对应的可用序号段,包括:
若所述序号不足预警信号满足处理条件,则将消耗序号总数除以当前预警时间与上次预警时间的差值,得到序号消耗速度;
将设定的预取序号时间间隔与设定的预取序号平均耗时进行求和,并将得到的和值与所述序号消耗速度相乘,得到当前预取序号总数;
基于所述当前预取序号总数,从数据库中预取设定序列名对应的可用序号段。
7.如权利要求6所述的异步化可调节预取量的序号发生器获取方法,其特征在于,基于所述当前预取序号总数,从数据库中预取设定序列名对应的可用序号段,包括:
获取当前时间戳作为预取序号起始时间;
使用带互斥写锁的sql语句从数据库中的序号表中查询设定序列名的所有字段;
判断所述序号表中的当前使用序号与初始序号和最大序号之间的比值,并更新当前使用序号为返回序号段的最大序号,得到对应的所述可用序号段。
8.一种异步化可调节预取量的序号发生器获取装置,适用于如权利要求1至权利要求7任一项所述的一种异步化可调节预取量的序号发生器获取方法,其特征在于,
所述异步化可调节预取量的序号发生器获取装置包括获取模块、同步处理模块和异步处理模块,所述获取模块与所述同步处理模块连接,所述异步处理模块与所述同步处理模块连接;
所述获取模块,用于获取序号生成请求,所述序号生成请求包含需要生成的序号的序号名;
所述同步处理模块,用于从预取的序号段中计算需要返回的可用序列号;并根据所述可用序列号判断当前队列元素个数是否等于0,并基于判断结果发出序号不足预警信号;
所述异步处理模块,用于对接收的序号不足预警信号进行处理,从数据库中预取一段或多段设定序列名对应的可用序号段,并存储到本地缓存序列号段队列中。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器,用于存储程序指令,所述处理器,用于调用所述存储器中的程序指令执行如权利要求1-8任一项的所述的方法包括的部分或全部步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-8任一项的所述的方法的部分或全部步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110387660.XA CN113239088A (zh) | 2021-04-12 | 2021-04-12 | 一种异步化可调节预取量的序号发生器获取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110387660.XA CN113239088A (zh) | 2021-04-12 | 2021-04-12 | 一种异步化可调节预取量的序号发生器获取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113239088A true CN113239088A (zh) | 2021-08-10 |
Family
ID=77127921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110387660.XA Pending CN113239088A (zh) | 2021-04-12 | 2021-04-12 | 一种异步化可调节预取量的序号发生器获取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113239088A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180024929A1 (en) * | 2016-07-20 | 2018-01-25 | International Business Machines Corporation | Managing a prefetch queue based on priority indications of prefetch requests |
CN108322330A (zh) * | 2017-12-26 | 2018-07-24 | 成都卫士通信息产业股份有限公司 | 一种ipsec vpn序列号及抗重放窗口同步方法及设备 |
CN109597853A (zh) * | 2018-10-22 | 2019-04-09 | 平安科技(深圳)有限公司 | 业务场景元素序列号生成方法、装置、介质和计算机设备 |
CN110096528A (zh) * | 2019-04-12 | 2019-08-06 | 中国银行股份有限公司 | 一种分布式系统中生成序列的方法、装置及系统 |
CN110515956A (zh) * | 2019-09-02 | 2019-11-29 | 中国工商银行股份有限公司 | 序列号获取方法、装置、系统、电子设备及存储介质 |
CN111949730A (zh) * | 2020-08-12 | 2020-11-17 | 中国银行股份有限公司 | 分布式全局序列号实现方法及序列分发器 |
CN112416614A (zh) * | 2020-10-28 | 2021-02-26 | 网宿科技股份有限公司 | 基于消息队列的数据处理方法、系统及服务器 |
-
2021
- 2021-04-12 CN CN202110387660.XA patent/CN113239088A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180024929A1 (en) * | 2016-07-20 | 2018-01-25 | International Business Machines Corporation | Managing a prefetch queue based on priority indications of prefetch requests |
CN108322330A (zh) * | 2017-12-26 | 2018-07-24 | 成都卫士通信息产业股份有限公司 | 一种ipsec vpn序列号及抗重放窗口同步方法及设备 |
CN109597853A (zh) * | 2018-10-22 | 2019-04-09 | 平安科技(深圳)有限公司 | 业务场景元素序列号生成方法、装置、介质和计算机设备 |
CN110096528A (zh) * | 2019-04-12 | 2019-08-06 | 中国银行股份有限公司 | 一种分布式系统中生成序列的方法、装置及系统 |
CN110515956A (zh) * | 2019-09-02 | 2019-11-29 | 中国工商银行股份有限公司 | 序列号获取方法、装置、系统、电子设备及存储介质 |
CN111949730A (zh) * | 2020-08-12 | 2020-11-17 | 中国银行股份有限公司 | 分布式全局序列号实现方法及序列分发器 |
CN112416614A (zh) * | 2020-10-28 | 2021-02-26 | 网宿科技股份有限公司 | 基于消息队列的数据处理方法、系统及服务器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10176057B2 (en) | Multi-lock caches | |
KR101647071B1 (ko) | 지속적인 웹 어플리케이션 설계를 위한 구조적 패턴 | |
US10108653B2 (en) | Concurrent reads and inserts into a data structure without latching or waiting by readers | |
US9229869B1 (en) | Multi-lock caches | |
CN109614347B (zh) | 多级缓存数据的处理方法、装置、存储介质及服务器 | |
CN107958018B (zh) | 缓存中的数据更新方法、装置及计算机可读介质 | |
CN110990439A (zh) | 基于缓存的快速查询方法、装置、计算机设备及存储介质 | |
CN109815425A (zh) | 缓存数据处理方法、装置、计算机设备和存储介质 | |
US11799961B2 (en) | File directory traversal method, apparatus, device, and medium | |
CN111176850B (zh) | 一种数据池的构建方法、装置、服务器及介质 | |
US10747773B2 (en) | Database management system, computer, and database management method | |
CN111125156A (zh) | 数据的查询方法、装置和电子设备 | |
CN113485642A (zh) | 数据缓存方法及装置 | |
US7908268B2 (en) | Predictive database pool preparation | |
US11269784B1 (en) | System and methods for efficient caching in a distributed environment | |
CN113010535A (zh) | 缓存数据的更新方法、装置、设备和存储介质 | |
CN117033831A (zh) | 一种客户端缓存方法、装置及其介质 | |
US8533398B2 (en) | Combination based LRU caching | |
CN113076067B (zh) | 淘汰缓存数据的方法和装置 | |
CN113239088A (zh) | 一种异步化可调节预取量的序号发生器获取方法及装置 | |
US11481321B2 (en) | Asynchronous garbage collection in parallel transaction system without locking | |
CN114390069B (zh) | 基于分布式缓存的数据访问方法与系统、设备及存储介质 | |
US20210397581A1 (en) | Sparse file system implemented with multiple cloud services | |
CN114461950A (zh) | 一种全局缓存方法、装置、电子设备及存储介质 | |
CN109492020A (zh) | 一种数据缓存方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221109 Address after: 100083 D, Floor 9, Building 2, Yard 1, Wangzhuang Road, Haidian District, Beijing Applicant after: Beijing Murong Information Technology Co.,Ltd. Address before: 200033 floor 6, building 21, No. 958, Zhenbei Road, Putuo District, Shanghai Applicant before: Shanghai Murong Information Technology Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210810 |