CN115878664A - 一种海量输入数据的实时查询匹配的方法及系统 - Google Patents
一种海量输入数据的实时查询匹配的方法及系统 Download PDFInfo
- Publication number
- CN115878664A CN115878664A CN202211480168.8A CN202211480168A CN115878664A CN 115878664 A CN115878664 A CN 115878664A CN 202211480168 A CN202211480168 A CN 202211480168A CN 115878664 A CN115878664 A CN 115878664A
- Authority
- CN
- China
- Prior art keywords
- parameter
- task
- thread
- execution unit
- parameters
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000007781 pre-processing Methods 0.000 claims abstract description 39
- 238000012545 processing Methods 0.000 claims description 56
- 230000004083 survival effect Effects 0.000 claims description 8
- 238000002360 preparation method Methods 0.000 claims description 7
- 238000010276 construction Methods 0.000 claims description 4
- 238000012360 testing method Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种海量输入数据的实时查询匹配的方法及系统,该方法包括:构建线程池,根据线程池属性结构定义并构建线程池;接收参数并进行预处理,客户端接收参数,根据接收参数数量MaxS、所述线程池属性结构和预设执行单元的参数数量MinS分配线程池对所述参数进行预处理,得到所述执行单元的集合aN和任务执行次数N,并通过管道将所述执行单元的集合aN发送至服务端执行,得到预处理结果;定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果;其中,根据执行单元的缓存容量和拒绝策略handler调整所述预设执行单元的参数数量MinS,从而提升了大量参数一次性输入并实时返回查询结果的速度、查询效率和数据库系统性能。
Description
技术领域
本申请涉及数据库技术领域,更具体地,涉及一种海量输入数据的实时查询匹配的方法及系统。
背景技术
随着互联网技术的普及和发展,各种复杂业务场景应运而生,为了更好的满足用户的需求、提升客户的体验,对业务系统的性能提出了更苛刻的要求。在一些应用场景中,日常业务查询中只带少量参数,并不需要特殊处理,这类查询操作对业务系统及数据库的性能产生的影响页相对有限,如任务数据库分布式缓存、分库分表等技术日益成熟,基本能满足这些一般业务场景。然而在实际开发场景中,业务系统常常也会遭遇大量参数一次性传入并实时返回查询结果的操作,如一次传入10万条企业id或10万条用户身份证号,要求实时计算多个维度的数据,并通过图表实时呈现。为满足大量参数一次性传入并实时返回查询结果的查询功能,中小型业务系统采用flink、spark等实时计算技术,人力成本、硬件投入成本及技术复杂程度会瞬间提升一个等级,这种挑战往往对中小型业务系统而言,往往难以接受。
传统的数据库通过sql语句查询:select a,b,c from tab where caridno in(10万个参数),不仅因为sql超长导致sql执行报错,同时因sql中传入参数过多直接导致索引失效。几十万级别的参数,在sql执行中使用in或union all实现,不仅查询效率难以保证,还进一步容易导致数据库cpu 100%一系列极端问题产生。
同样换种方式,把10万-50万个参数,2000-5000一批,开启多个线程同时查询数据库,由于sql查数据库在磁盘中执行,属于IO密集型操作,这种方案cpu资源貌似得到有效利用,然而多次连接数据库导致资源开销会增加数倍,sql查询本质还是磁盘扫描,数据库的IO开销依然很大,查询效率同样难以保证。
如果使用任务数据库做作为存储工具,任务数据库是一种基于nio技术的内存数据库,虽然单次查询效率比较快,但几万、甚至十几万级别的单次查询,每次查询都需要连接任务数据库服务端,会带来巨大的网络开销,任务数据库的查询性能会被严重影响,任务数据库实时查询方案仍需要进行优化。
综上所述,目前中小型系统中,针对大量参数一次性输入并实时返回查询结果的需求,考虑人力、技术、硬件成本,现有传统的技术方案,难以有效的保证查询效率,是整个行业中普遍面临的一个技术痛点。
基于此,有必要引入一种新的方法及系统,能够满足大量参数一次性输入并实时返回查询结果的需求,以解决大量参数查询导致查询效率降低、数据库开销大、内存溢出等技术问题,进而提升大量参数一次性输入并实时返回查询结果的速度、查询效率和数据库系统性能,降低人力成本、硬件投入成本及技术复杂程度。
发明内容
针对上面提到的技术问题,本发明提供一种海量输入数据的实时查询匹配的方法及系统,通过利用多线程数据并行处理机制,根据参数查询的需要和线程池属性结构定义并构建线程池,将大规模查询参数按照预设执行单元的参数数量MinS进行执行单元划分和分批次并行处理,实现了大规模参数的批量发送、传入和处理,有效地减少了应用程序与任务处理数据库的连接次数,网络IO大幅降低,避免了管道的命令过多会导致网络阻塞。进而满足了大量参数一次性输入并实时返回查询结果的需求,解决了大量参数查询导致查询效率降低、数据库开销大、内存溢出等技术问题,提升了大量参数一次性输入并实时返回查询结果的速度、查询效率和数据库系统性能,降低了人力成本、硬件投入成本及技术复杂程度。
本发明提供一种海量输入数据的实时查询匹配方法,所述方法包括:
S101,构建线程池,根据线程池属性结构定义并构建线程池;
S102,接收参数并进行预处理,客户端接收参数,根据接收参数数量MaxS、所述线程池属性结构和预设执行单元的参数数量MinS分配线程池对所述参数进行预处理,得到所述执行单元的集合aN和任务执行次数N,并通过管道将所述执行单元的集合aN发送至服务端执行,得到预处理结果;
S103,定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果;
其中,根据执行单元的缓存容量和拒绝策略handler调整所述预设执行单元的参数数量MinS。
如上所述,所述线程池属性结构包括核心线程数corePoolSize、最大线程数maximumPoolSize、空闲线程存活时间keepAliveTime、空闲线程存活时间对应的时间单位unit、线程池队列workQueue、拒绝策略handler、创建新线程变量threadFactory;
其中,所述核心线程数corePoolSize小于最大线程数maximumPoolSize,由服务端根据所述执行单元的集合aN进行分配。
如上所述,所述任务执行次数N根据客户端接收参数数量MaxS和所述预设执行单元的参数数量MinS获取;所述执行单元的集合aN包括N个执行单元,所述执行单元包括与预设执行单元的参数数量MinS相同的参数;
aN={a1+a2+a3+…+aN-2+aN-1+aN};
当接收参数数量MaxS%预设执行单元的参数数量MinS求余数的结果等于零时,
N=接收参数数量MaxS/预设执行单元的参数数量MinS;
当接收参数数量MaxS%预设执行单元的参数数量MinS求余数的结果大于时,
N=接收参数数量MaxS/预设执行单元的参数数量MinS+1;
其中,所述预设执行单元的参数数量MinS可以预先设定,也可以根据系统性能通过测试获得。
如上所述,根据线程池属性结构定义并构建线程池前还需要数据准备处理,所述数据准备处理的步骤为:
历史数据同步,服务端将历史数据库中的历史数据通过批量写入方式存储到任务处理数据库中;
实时数据同步,服务端将历史数据库中的实时数据通过实时同步方式存储到任务处理数据库中;
应用程序同步,服务端接收应用程序请求,并将所述应用程序请求同时发送至历史数据库和任务处理数据库;
其中,所述批量写入方式根据历史数据的数据总量和单次存储的数据量,将所述历史数据分批次从所述历史数据库中读出,并写入到所述任务处理数据库中;所述实时同步方式根据所述实时数据的新增量,实时地将所有新增的所述实时数据从所诉历史数据库中读出,并写入到所述任务处理数据库中。
如上所述,客户端接收参数,根据接收参数数量MaxS、所述线程池属性结构和所述预设执行单元的参数数量MinS分配线程池对所述参数进行预处理的步骤为:
S501,客户端接收参数,获取所述接收参数数量MaxS;
S502,根据所述接收参数数量MaxS和所述预设执行单元的参数数量MinS,得到所述执行单元的集合aN和所述任务执行次数N,并分别生成执行任务a1,a2,a3…aN-2,aN-1,aN;
S503,根据所述任务执行次数N和所述核心线程数corePoolSize,将所述执行任务a1,a2,a3…aN-2,aN-1,aN批量写入所述管道,并发送至服务端;
S504,服务端根据所述核心线程数corePoolSize,为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配任务处理线程并执行,并分别从所述任务处理数据库中获取a1,a2,a3…aN-2,aN-1,aN的处理结果;
S505,服务端将a1,a2,a3…aN-2,aN-1,aN的处理结果存储至所述线程池队列workQueue中,得到所述执行单元的集合aN的预处理结果。
如上所述,服务端根据所述核心线程数corePoolSize,为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配任务处理线程并执行的步骤,还包括:
当所述任务执行次数N大于核心线程数corePoolSize时,服务端为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配的任务处理线程数为核心线程数corePoolSize;
当所述任务执行次数N小于或等于核心线程数corePoolSize时,服务端为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配的任务处理线程数为N。
如上所述,所述S3,定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果的步骤包括:
S601,客户端定义业务线程的批量查询管道、传入参数集合和结果返回调用接口;
S602,客户端接收所述传入参数集合,调用所述结果返回调用接口并通过所述批量查询管道,从服务端的线程池队列workQueue中的所述预处理结果中,获取所述传入参数集合的查询结果;
S603,服务端通过所述结果返回调用接口和所述批量查询管道将所述发送至客户端,并返回给业务端。
如上所述,根据执行单元的缓存容量和拒绝策略handler调整所述预设执行单元的参数数量MinS包括:
设定所述预设执行单元的参数数量MinS的值;
比较根据所述预设执行单元的缓存容量和线程池的缓存容量进行,如果预设执行单元的参数数量MinS所需的缓存容量大于线程池的缓存容量,则服务端根据拒绝策略handler返回所述执行单元的集合aN,并向客户端管道阻塞的通知;
客户端根据通知,并根据线程池的缓存容量减少所述预设执行单元的参数数量MinS。
相应的,本发明还提供了一种海量输入数据的实时查询匹配系统,所述系统包括线程池构建单元、预处理单元和返回单元;
其中,
所述线程池构建单元部署于服务端,用于构建线程池,根据所述线程池属性结构定义并构建线程池;
所述预处理单元部署于服务端,用于接收参数并进行预处理,客户端接收参数,根据所述接收参数数量MaxS、所述线程池属性结构和所述预设执行单元的参数数量MinS分配线程池对所述参数进行预处理,得到所述执行单元的所述集合aN和所述任务执行次数N,并通过管道将所述执行单元的所述集合aN发送至服务端执行,得到预处理结果;
所述返回单元部署于客户端,用于定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果;
其中,根据执行单元的缓存容量和拒绝策略handler调整所述预设执行单元的参数数量MinS。
本发明通过应用以上技术方案,实现了通过利用多线程数据并行处理机制,根据参数查询的需要和线程池属性结构定义并构建线程池,将大规模查询参数按照预设执行单元的参数数量MinS进行执行单元划分和分批次并行处理,使得数据库系统能够完成大规模参数的批量发送、传入和处理任务,有效地减少了应用程序与任务处理数据库的连接次数,网络IO大幅降低,避免了管道的命令过多会导致网络阻塞。进而满足了大量参数一次性输入并实时返回查询结果的需求,解决了大量参数查询导致查询效率降低、数据库开销大、内存溢出等技术问题,提升了大量参数一次性输入并实时返回查询结果的速度、查询效率和数据库系统性能,降低了人力成本、硬件投入成本及技术复杂程度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例提出的一种海量输入数据的实时查询匹配方法的流程示意图;
图2示出了本发明实施例提出的一种海量输入数据的实时查询匹配方法的数据准备处理的流程示意图;
图3示出了本发明实施例提出的一种海量输入数据的实时查询匹配方法的对所述参数进行预处理的流程示意图;
图4示出了本发明实施例提出的一种海量输入数据的实时查询匹配系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明提供了一种海量输入数据的实时查询匹配方法,如图1所示,所述方法包括以下步骤:
S101,构建线程池,根据线程池属性结构定义并构建线程池。
本实施例中,所述线程池属性结构包括核心线程数corePoolSize、最大线程数maximumPoolSize、空闲线程存活时间keepAliveTime、空闲线程存活时间对应的时间单位unit、线程池队列workQueue、拒绝策略handler、创建新线程变量threadFactory;所述核心线程数corePoolSize小于最大线程数maximumPoolSize,由服务端根据所述执行单元的集合aN进行分配。
所述线程池属性结构如表1所示。
表1
核心线程数corePoolSize |
最大线程数maximumPoolSize |
空闲线程存活时间keepAliveTime |
空闲线程存活时间对应的时间单位unit |
线程池队列workQueue |
拒绝策略handler |
创建新线程变量threadFactory |
S102,接收参数并进行预处理,客户端接收参数,根据接收参数数量MaxS、所述线程池属性结构和预设执行单元的参数数量MinS分配线程池对所述参数进行预处理,得到所述执行单元的集合aN和任务执行次数N,并通过管道将所述执行单元的集合aN发送至服务端执行,得到预处理结果。
为了更好地对大量参数进行任务切分和处理,本实施例中,所述任务执行次数N根据客户端接收参数数量MaxS和所述预设执行单元的参数数量MinS获取;所述执行单元的集合aN包括N个执行单元,所述执行单元包括与预设执行单元的参数数量MinS相同的参数。
aN={a1+a2+a3+…+aN-2+aN-1+aN};
当接收参数数量MaxS%预设执行单元的参数数量MinS求余数的结果等于零时,
N=接收参数数量MaxS/预设执行单元的参数数量MinS;
当接收参数数量MaxS%预设执行单元的参数数量MinS求余数的结果大于时,
N=接收参数数量MaxS/预设执行单元的参数数量MinS+1;
其中,所述预设执行单元的参数数量MinS可以预先设定,也可以根据系统性能通过测试获得。
例如,传入参数为身份证号,参数数量MaxS为10万,核心线程数为10,预设执行单元的参数数量MinS为3000,即3000个身份证号作为一个执行单元。
执行次数N=10/3000=334;
334远大于核心线程数10,10个核心线程立马执行批量查询任务数据库的操作,剩余324个任务直接插入线程池队列中等待执行;一旦有闲置的线程,线程池会分配闲置的线程从队列中获取任务,继续执行批量查询任务数据库的操作。多个线程并批量查询任务数据库,有效的实现了线程的复用,避免了频繁创建及销毁线程导致的资源的开销,同时线程池中的多个线程可以并行执行,提高了cpu的利用率。
S103,定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果。
本实施例中,根据执行单元的缓存容量和拒绝策略handler调整所述预设执行单元的参数数量MinS。
为了提高大量参数处理的效率和准确性,在本发明的实施例中,定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果的步骤包括:
客户端定义业务线程的批量查询管道、传入参数集合和结果返回调用接口。
客户端接收所述传入参数集合,调用所述结果返回调用接口并通过所述批量查询管道,从服务端的线程池队列workQueue中的所述预处理结果中,获取所述传入参数集合的查询结果。
服务端通过所述结果返回调用接口和所述批量查询管道将所述发送至客户端,并返回给业务端。
可选择地,根据执行单元的缓存容量和拒绝策略handler调整所述预设执行单元的参数数量MinS包括:
设定所述预设执行单元的参数数量MinS的值;
比较根据所述预设执行单元的缓存容量和线程池的缓存容量进行,如果预设执行单元的参数数量MinS所需的缓存容量大于线程池的缓存容量,则服务端根据拒绝策略handler返回所述执行单元的集合aN,并向客户端管道阻塞的通知;
客户端根据通知,并根据线程池的缓存容量减少所述预设执行单元的参数数量MinS。
例如,每5000参数为一个执行单元,线程池的缓存容量最大为1G,以5000参数为一个执行单元所需的缓存容量如果超过线程池的缓存容量,任务数据库拒绝执行管道命令,同时管道的命令过多会导致网络阻塞。此种情况下,系统对任务数据库并发性能要求不苛刻的话,可以设置所述预设执行单元的参数数量MinS的值在[3000,5000]区间(包含3000和5000),相对苛刻的话,可以设置可以设置所述预设执行单元的参数数量MinS的值在[300,1000]区间(包含3000和5000),同时基于此任务数据库以内存作为介质完成参数查询任务,进而避免了大量的磁盘IO,提高了大量参数查询的效率。
如图2所示,根据线程池属性结构定义并构建线程池前还需要数据准备处理,所述数据准备处理的步骤为:
S201,历史数据同步,服务端将历史数据库中的历史数据通过批量写入方式存储到任务处理数据库中;
S202,实时数据同步,服务端将历史数据库中的实时数据通过实时同步方式存储到任务处理数据库中;
S203,应用程序同步,服务端接收应用程序请求,并将所述应用程序请求同时发送至历史数据库和任务处理数据库;
本实施例中,所述批量写入方式根据历史数据的数据总量和单次存储的数据量,将所述历史数据分批次从所述历史数据库中读出,并写入到所述任务处理数据库中;所述实时同步方式根据所述实时数据的新增量,实时地将所有新增的所述实时数据从所诉历史数据库中读出,并写入到所述任务处理数据库中。
如图3所示,客户端接收参数,根据接收参数数量MaxS、所述线程池属性结构和所述预设执行单元的参数数量MinS分配线程池对所述参数进行预处理的步骤为:
S501,客户端接收参数,获取所述接收参数数量MaxS;
S502,根据所述接收参数数量MaxS和所述预设执行单元的参数数量MinS,得到所述执行单元的集合aN和所述任务执行次数N,并分别生成执行任务a1,a2,a3…aN-2,aN-1,aN;
S503,根据所述任务执行次数N和所述核心线程数corePoolSize,将所述执行任务a1,a2,a3…aN-2,aN-1,aN批量写入所述管道,并发送至服务端;
S504,服务端根据所述核心线程数corePoolSize,为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配任务处理线程并执行,并分别从所述任务处理数据库中获取a1,a2,a3…aN-2,aN-1,aN的处理结果;
S505,服务端将a1,a2,a3…aN-2,aN-1,aN的处理结果存储至所述线程池队列workQueue中,得到所述执行单元的集合aN的预处理结果。
为了充分利用处理资源并确保参数批量处理的高效率,在本发明的实施例中,服务端根据所述核心线程数corePoolSize,为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配任务处理线程并执行的步骤,还包括:
当所述任务执行次数N大于核心线程数corePoolSize时,服务端为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配的任务处理线程数为核心线程数corePoolSize;
当所述任务执行次数N小于或等于核心线程数corePoolSize时,服务端为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配的任务处理线程数为N。
通过应用以上技术方案,构建线程池,根据线程池属性结构定义并构建线程池;接收参数并进行预处理,得到预处理结果;定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果。实现了通过利用多线程数据并行处理机制,根据参数查询的需要和线程池属性结构定义并构建线程池,将大规模查询参数按照预设执行单元的参数数量MinS进行执行单元划分和分批次并行处理,使得数据库系统能够完成大规模参数的批量发送、传入和处理任务,有效地减少了应用程序与任务处理数据库的连接次数,网络IO大幅降低,避免了管道的命令过多会导致网络阻塞。进而满足了大量参数一次性输入并实时返回查询结果的需求,解决了大量参数查询导致查询效率降低、数据库开销大、内存溢出等技术问题,提升了大量参数一次性输入并实时返回查询结果的速度、查询效率和数据库系统性能,降低了人力成本、硬件投入成本及技术复杂程度。
与本发明实施例中的一种所述海量输入数据的实时查询匹配方法相对应,本发明还公开了一种海量输入数据的实时查询匹配系统,如图4所示,所述系统包括线程池构建单元、预处理单元和返回单元。
其中,
所述线程池构建单元部署于服务端,用于构建线程池,根据所述线程池属性结构定义并构建线程池;
所述预处理单元部署于服务端,用于接收参数并进行预处理,客户端接收参数,根据所述接收参数数量MaxS、所述线程池属性结构和所述预设执行单元的参数数量MinS分配线程池对所述参数进行预处理,得到所述执行单元的所述集合aN和所述任务执行次数N,并通过管道将所述执行单元的所述集合aN发送至服务端执行,得到预处理结果;
所述返回单元部署于客户端,用于定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果;
根据执行单元的缓存容量和拒绝策略handler调整所述预设执行单元的参数数量MinS。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (9)
1.一种海量输入数据的实时查询匹配方法,所述方法包括:
S101,构建线程池,根据线程池属性结构定义并构建线程池;
S102,接收参数并进行预处理,客户端接收参数,根据接收参数数量MaxS、所述线程池属性结构和预设执行单元的参数数量MinS分配线程池对所述参数进行预处理,得到所述执行单元的集合aN和任务执行次数N,并通过管道将所述执行单元的集合aN发送至服务端执行,得到预处理结果;
S103,定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果;
其特征在于,根据执行单元的缓存容量和拒绝策略handler调整所述预设执行单元的参数数量MinS。
2.如权利要求1所述的方法,其特征在于,所述线程池属性结构包括核心线程数corePoolSize、最大线程数maximumPoolSize、空闲线程存活时间keepAliveTime、空闲线程存活时间对应的时间单位unit、线程池队列workQueue、拒绝策略handler、创建新线程变量threadFactory;
其中,所述核心线程数corePoolSize小于最大线程数maximumPoolSize,由服务端根据所述执行单元的集合aN进行分配。
3.如权利要求1所述的方法,其特征在于,所述任务执行次数N根据客户端接收参数数量MaxS和所述预设执行单元的参数数量MinS获取;所述执行单元的集合aN包括N个执行单元,所述执行单元包括与预设执行单元的参数数量MinS相同的参数;
aN={a1+a2+a3+…+aN-2+aN-1+aN};
当接收参数数量MaxS%预设执行单元的参数数量MinS求余数的结果等于零时,
N=接收参数数量MaxS/预设执行单元的参数数量MinS;
当接收参数数量MaxS%预设执行单元的参数数量MinS求余数的结果大于时,
N=接收参数数量MaxS/预设执行单元的参数数量MinS+1;
其中,所述预设执行单元的参数数量MinS可以预先设定,也可以根据系统性能通过测试获得。
4.如权利要求1所述的方法,其特征在于,根据线程池属性结构定义并构建线程池前还需要数据准备处理,所述数据准备处理的步骤为:
历史数据同步,服务端将历史数据库中的历史数据通过批量写入方式存储到任务处理数据库中;
实时数据同步,服务端将历史数据库中的实时数据通过实时同步方式存储到任务处理数据库中;
应用程序同步,服务端接收应用程序请求,并将所述应用程序请求同时发送至历史数据库和任务处理数据库;
其中,所述批量写入方式根据历史数据的数据总量和单次存储的数据量,将所述历史数据分批次从所述历史数据库中读出,并写入到所述任务处理数据库中;所述实时同步方式根据所述实时数据的新增量,实时地将所有新增的所述实时数据从所诉历史数据库中读出,并写入到所述任务处理数据库中。
5.如权利要求1所述的方法,其特征在于,客户端接收参数,根据接收参数数量MaxS、所述线程池属性结构和所述预设执行单元的参数数量MinS分配线程池对所述参数进行预处理的步骤为:
S501,客户端接收参数,获取所述接收参数数量MaxS;
S502,根据所述接收参数数量MaxS和所述预设执行单元的参数数量MinS,得到所述执行单元的集合aN和所述任务执行次数N,并分别生成执行任务a1,a2,a3…aN-2,aN-1,aN;
S503,根据所述任务执行次数N和所述核心线程数corePoolSize,将所述执行任务a1,a2,a3…aN-2,aN-1,aN批量写入所述管道,并发送至服务端;
S504,服务端根据所述核心线程数corePoolSize,为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配任务处理线程并执行,并分别从所述任务处理数据库中获取a1,a2,a3…aN-2,aN-1,aN的处理结果;
S505,服务端将a1,a2,a3…aN-2,aN-1,aN的处理结果存储至所述线程池队列workQueue中,得到所述执行单元的集合aN的预处理结果。
6.如权利要求5所述的方法,其特征在于,服务端根据所述核心线程数corePoolSize,为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配任务处理线程并执行的步骤,还包括:
当所述任务执行次数N大于核心线程数corePoolSize时,服务端为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配的任务处理线程数为核心线程数corePoolSize;
当所述任务执行次数N小于或等于核心线程数corePoolSize时,服务端为所述执行任务a1,a2,a3…aN-2,aN-1,aN分配的任务处理线程数为N。
7.如权利要求1所述的方法,其特征在于,所述S3,定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果的步骤包括:
S601,客户端定义业务线程的批量查询管道、传入参数集合和结果返回调用接口;
S602,客户端接收所述传入参数集合,调用所述结果返回调用接口并通过所述批量查询管道,从服务端的线程池队列workQueue中的所述预处理结果中,获取所述传入参数集合的查询结果;
S603,服务端通过所述结果返回调用接口和所述批量查询管道将所述发送至客户端,并返回给业务端。
8.如权利要求1所述的方法,其特征在于,根据执行单元的缓存容量和拒绝策略handler调整所述预设执行单元的参数数量MinS包括:
设定所述预设执行单元的参数数量MinS的值;
比较根据所述预设执行单元的缓存容量和线程池的缓存容量进行,如果预设执行单元的参数数量MinS所需的缓存容量大于线程池的缓存容量,则服务端根据拒绝策略handler返回所述执行单元的集合aN,并向客户端管道阻塞的通知;
客户端根据通知,并根据线程池的缓存容量减少所述预设执行单元的参数数量MinS。
9.一种实施权利要求1所述海量输入数据的实时查询匹配方法的系统,其特征在于,所述系统包括线程池构建单元、预处理单元和返回单元;
其中,
所述线程池构建单元部署于服务端,用于构建线程池,根据所述线程池属性结构定义并构建线程池;
所述预处理单元部署于服务端,用于接收参数并进行预处理,客户端接收参数,根据所述接收参数数量MaxS、所述线程池属性结构和所述预设执行单元的参数数量MinS分配线程池对所述参数进行预处理,得到所述执行单元的所述集合aN和所述任务执行次数N,并通过管道将所述执行单元的所述集合aN发送至服务端执行,得到预处理结果;
所述返回单元部署于客户端,用于定义业务线程,并根据所述参数的集合和所述预处理结果,返回所述参数的任务执行结果;
其特征在于,根据执行单元的缓存容量和拒绝策略handler调整所述预设执行单元的参数数量MinS。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211480168.8A CN115878664B (zh) | 2022-11-24 | 2022-11-24 | 一种海量输入数据的实时查询匹配的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211480168.8A CN115878664B (zh) | 2022-11-24 | 2022-11-24 | 一种海量输入数据的实时查询匹配的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115878664A true CN115878664A (zh) | 2023-03-31 |
CN115878664B CN115878664B (zh) | 2023-07-18 |
Family
ID=85763764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211480168.8A Active CN115878664B (zh) | 2022-11-24 | 2022-11-24 | 一种海量输入数据的实时查询匹配的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878664B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043675A (zh) * | 2010-12-06 | 2011-05-04 | 北京华证普惠信息股份有限公司 | 一种基于任务处理请求任务量大小的线程池管理方法 |
CN105260374A (zh) * | 2015-07-17 | 2016-01-20 | 中国科学院计算技术研究所 | 异步流水线式的图查询方法及系统 |
CN110765157A (zh) * | 2019-09-06 | 2020-02-07 | 中国平安财产保险股份有限公司 | 数据查询方法、装置、计算机设备及存储介质 |
CN112000455A (zh) * | 2020-09-10 | 2020-11-27 | 华云数据控股集团有限公司 | 一种多线程任务处理方法、装置及电子设备 |
CN113157410A (zh) * | 2021-03-30 | 2021-07-23 | 北京大米科技有限公司 | 线程池调节方法、装置、存储介质及电子设备 |
CN113268330A (zh) * | 2021-05-28 | 2021-08-17 | 中国银行股份有限公司 | 线程池参数调整方法及装置 |
CN113722117A (zh) * | 2020-11-10 | 2021-11-30 | 北京沃东天骏信息技术有限公司 | 消息队列处理方法、线程池参数调整方法、装置和设备 |
CN114217993A (zh) * | 2021-12-17 | 2022-03-22 | 深圳前海微众银行股份有限公司 | 线程池拥塞的控制方法、系统、终端设备以及存储介质 |
CN114281503A (zh) * | 2021-12-23 | 2022-04-05 | 上海淇毓信息科技有限公司 | 一种线程池核心参数实时动态调整方法、装置和电子设备 |
CN114463131A (zh) * | 2022-02-09 | 2022-05-10 | 吉林亿联银行股份有限公司 | 交易处理方法及装置、存储介质及电子设备 |
CN115016916A (zh) * | 2022-06-30 | 2022-09-06 | 苏州浪潮智能科技有限公司 | 一种线程池调度方法、系统、设备及可读存储介质 |
-
2022
- 2022-11-24 CN CN202211480168.8A patent/CN115878664B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043675A (zh) * | 2010-12-06 | 2011-05-04 | 北京华证普惠信息股份有限公司 | 一种基于任务处理请求任务量大小的线程池管理方法 |
CN105260374A (zh) * | 2015-07-17 | 2016-01-20 | 中国科学院计算技术研究所 | 异步流水线式的图查询方法及系统 |
CN110765157A (zh) * | 2019-09-06 | 2020-02-07 | 中国平安财产保险股份有限公司 | 数据查询方法、装置、计算机设备及存储介质 |
CN112000455A (zh) * | 2020-09-10 | 2020-11-27 | 华云数据控股集团有限公司 | 一种多线程任务处理方法、装置及电子设备 |
CN113722117A (zh) * | 2020-11-10 | 2021-11-30 | 北京沃东天骏信息技术有限公司 | 消息队列处理方法、线程池参数调整方法、装置和设备 |
CN113157410A (zh) * | 2021-03-30 | 2021-07-23 | 北京大米科技有限公司 | 线程池调节方法、装置、存储介质及电子设备 |
CN113268330A (zh) * | 2021-05-28 | 2021-08-17 | 中国银行股份有限公司 | 线程池参数调整方法及装置 |
CN114217993A (zh) * | 2021-12-17 | 2022-03-22 | 深圳前海微众银行股份有限公司 | 线程池拥塞的控制方法、系统、终端设备以及存储介质 |
CN114281503A (zh) * | 2021-12-23 | 2022-04-05 | 上海淇毓信息科技有限公司 | 一种线程池核心参数实时动态调整方法、装置和电子设备 |
CN114463131A (zh) * | 2022-02-09 | 2022-05-10 | 吉林亿联银行股份有限公司 | 交易处理方法及装置、存储介质及电子设备 |
CN115016916A (zh) * | 2022-06-30 | 2022-09-06 | 苏州浪潮智能科技有限公司 | 一种线程池调度方法、系统、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115878664B (zh) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Li et al. | A platform for scalable one-pass analytics using mapreduce | |
US9171044B2 (en) | Method and system for parallelizing database requests | |
CN101556678A (zh) | 一种批处理业务的处理方法、系统及业务处理控制设备 | |
WO2020233262A1 (zh) | 一种基于Spark的多中心数据协同计算的流处理方法 | |
CN100538646C (zh) | 一种在分布式系统中执行sql脚本文件的方法和装置 | |
CN114756629B (zh) | 基于sql的多源异构数据交互分析引擎及方法 | |
CN113485806A (zh) | 处理任务的方法、装置、设备和计算机可读介质 | |
US6549931B1 (en) | Distributing workload between resources used to access data | |
CN115640278B (zh) | 一种数据库性能智能优化的方法及系统 | |
CN111736907B (zh) | 一种自适应低延迟内存计算引擎的数据分析方法 | |
CN110414865A (zh) | 一种审核任务的分配方法、装置、计算机设备和存储介质 | |
CN115185787A (zh) | 处理事务日志的方法及装置 | |
CN102760073A (zh) | 一种任务调度方法、系统及装置 | |
CN110084507A (zh) | 云计算环境下分级感知的科学工作流调度优化方法 | |
CN117762979A (zh) | 数据并行查询方法、装置、存储介质及计算机设备 | |
CN116974994A (zh) | 一种基于集群的高效能文件协作系统 | |
CN110955461B (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
CN115878664B (zh) | 一种海量输入数据的实时查询匹配的方法及系统 | |
CN107918676A (zh) | 结构化查询的资源优化方法及数据库查询系统 | |
CN109871394B (zh) | 一种全量分布式高并发计算方法及装置 | |
US20230153317A1 (en) | Method for scheduling offloading snippets based on large amount of dbms task computation | |
CN110750362A (zh) | 生物信息的分析方法、装置和存储介质 | |
US8229946B1 (en) | Business rules application parallel processing system | |
CN115982230A (zh) | 数据库的跨数据源查询方法、系统、设备及存储介质 | |
CN106227739B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |