(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 20221094319 9.6 (22)申请日 2022.08.08 (71)申请人 浪潮云信息技 术股份公司 地址 250100 山东省济南市高新区浪潮路 1036号浪潮科技园S01号楼 (72)发明人 薛小珊  (74)专利代理 机构 济南信达专利事务所有限公 司 37100 专利代理师 阚恭勇 (51)Int.Cl. G06F 9/46(2006.01) G06F 9/50(2006.01) (54)发明名称 一种同步请求的异步并发系统 (57)摘要 本发明提供一种同步请求的异步并发系统, 属于同步请求领域, 本发明包括多线程池设计、 Future‑Callback机制、 CountDownLatch计数器、 同步等待回调机制。 基于Cou ntdownLatch机制初 始化多个线 程池的调度与同步返回, 基于java的 ExecutorService初始化线程池, 线程池内使用 Future‑Callback机制完成池内多线程的同步等 待。 本系统的实现主要适用于分组事务隔离处 理, 规划多线 程池执行, 并通过池内Future等待+ 池间计数器调度实现高性能同步请求的处理与 返回。 权利要求书1页 说明书3页 附图1页 CN 115408114 A 2022.11.29 CN 115408114 A 1.一种同步请求的异步并发系统, 其特 征在于, 包括, 数个线程池、 Future ‑Callback机制、 CountDo wnLatch计数器、 同步 等待模块; 数个线程池: 同步启动且进行事务分组隔离; Future‑CallBack机制: 单事务的线程池内通过Future任务实现异步执行, 同时通过 CallBack机制+future.get()同步 等待单线程的执 行完成; CountDownLatch计数器: 对于隔离的线程池之间通过CountDownLatch机制进行调度, 每次执行1个线程池完成则countDown()进行计数器减1操作, 待所有线程池执行完成则恢 复await断点执 行; 同步等待模块: 线程池内通过Future.get完成同步等待, 各线程池通过await()等待同 步返回。 2.根据权利要求1所述的系统, 其特 征在于, 基于CountdownLatch初始化线程池的调度与同步返回, 基于j ava的ExecutorService 初始化线程池, 线程池内使用Future ‑Callback机制完成池内多 线程的同步 等待。 3.根据权利要求2所述的系统, 其特 征在于, 对于事务或数据进行分组划分, 分数组等同于线程池的数量。 4.根据权利要求3所述的系统, 其特 征在于, 对线程池进行分组隔离并发执 行; 线程池同步执 行, 每个线程池执 行1个事务。 5.根据权利要求2所述的系统, 其特 征在于, CounDownLatch初始值为线程池的数量, 线程池初始化后 执行await()等待, 每个线程 池执行完成执行countDown()进行计数器减1, 直至计数器=0从await()等待节点处继续 执行。 6.根据权利要求2所述的系统, 其特 征在于, 基于java的ExecutorService 方式创建线程池。 7.根据权利要求6所述的系统, 其特 征在于, 基于CountdownLatch机制初始化线程池的调度与同步返回, 基于java的 ExecutorService初始化线程池, 线 程池内使用Future ‑Callback完成池内多线程的同步等 待。 8.根据权利要求2所述的方法, 其特 征在于, 工作流程如下: 1)同步请求进入后, 系统进行初始化, 首先获取待 处理全部事务分成N组(N>1), 初始化 CountDownLatch容器的初始值为N, 同时初始化N个线程池, 触发N个线程池的执行, 并执行 CountDownLatch.await()等待返回执 行; 2)线程池通过java的ExecutorService进行线程与等待队列的初始化, 单个线程通过 Future‑Callback实现, 通过Future.get()方式等待单线程完成, 待线程池内线程均执行 完成后, 触发CountDo wnLatch.countDo wn(), 进行计数器 ‑1; 3)待N个线程池均执行完成后, 执行了N次CountDownLatch.countDown(), 此时计数器 的数值为0, 触发CountDownLatch.await()处的等待逻辑继续执行, 此处逻辑为进行返回 事务结果的收集与转换, 并进行同步返回。权 利 要 求 书 1/1 页 2 CN 115408114 A 2一种同步请求的异步并发系统 技术领域 [0001]本发明涉及同步请求 技术领域, 尤其涉及一种同步请求的异步并发系统。 背景技术 [0002]伴随着互联网技术的飞速发展和软件复杂度的提高, 一些同步请求不但事务越来 越复杂, 同时对性能要求越来越高。 [0003]复杂事务的同步处理的实现方案有多种, 选择一种高性能架构是一种紧迫诉求。 下面是一些最常用的实现技 术: [0004]1)硬件方式提速: 通过不断提升CPU+内存的硬件性能提高执行效率, 但是基于业 务逻辑本身的限制, 很多场景并不能良好的提高执 行效率 [0005]2)通过Kafka等方式异步实现: 同步实现进行生产者、 消费者模式拆分, 对于部分 同步要求不高的场景如购物下单的后续流程有良好效果, 但是对于严格实时等待的机制无 法良好的处 理; [0006]单层线程池处理: 将事务拆分到线程池的单个线程执行, 对于简单场景有一定效 率提升, 但是对于复杂分层结构处理不好, 不便于扩展与事务隔离, 比如一个请求要调用多 个组织机构, 每 个组织机构要出发多个请求。 发明内容 [0007]为了解决以上技术问题, 本发明提供了一种同步请求的异步并发系统。 选择使用 双层异步架构实现同步事务返回: 首先不依赖于硬件的提速, 能做到底层解耦; 能够保持严 格等待, 避免方案2的纯异步架构; 另外, 进行分层隔离处 理复杂事务, 架构清晰, 便 于扩展。 [0008]本发明的技 术方案是: [0009]一种同步请求的异步并发系统, 包括多线程池设计、 Future ‑Callback机制、   CountDownLatch计数器、 同步 等待回调机制。 [0010]本发明基于CountdownLatch机制初始化多个线程池的调度与同步返回, 基于   java的ExecutorServic e初始化线 程池, 线程池内使用Future ‑Callback机制完成池内多线 程的同步 等待 [0011]其中: [0012]1)多线程池设计: 同步启动多个线程池进行事务分组隔离, 相互不影响; [0013]2)Future ‑CallBack机制: 单事务的线程池内通过Future任务实现异步执行, 同时 通过CallBack机制+future.get()同步 等待单线程的执 行完成; [0014]3)CountDownLatch机制: 对于多个隔离的线程池之间通过CountDownLatch  机制 进行调度, 每次执行1个线程池完成则countDown()进行计数器减1操作, 待所有线程池执 行完成则恢复await断点执 行; [0015]4)同步等待回调: 线程池内通过Futur e.get完成同步等待, 多个线程池通过await ()机制等待同步返回。说 明 书 1/3 页 3 CN 115408114 A 3

.PDF文档 专利 一种同步请求的异步并发系统

文档预览
中文文档 6 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共6页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种同步请求的异步并发系统 第 1 页 专利 一种同步请求的异步并发系统 第 2 页 专利 一种同步请求的异步并发系统 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 13:07:59上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。