CN115878664A - 一种海量输入数据的实时查询匹配的方法及系统 - Google Patents

一种海量输入数据的实时查询匹配的方法及系统 Download PDF

Info

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
Application number
CN202211480168.8A
Other languages
English (en)
Other versions
CN115878664B (zh
Inventor
高金涛
石昱馨
王琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lingxi Technology Co ltd
Original Assignee
Lingxi Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lingxi Technology Co ltd filed Critical Lingxi Technology Co ltd
Priority to CN202211480168.8A priority Critical patent/CN115878664B/zh
Publication of CN115878664A publication Critical patent/CN115878664A/zh
Application granted granted Critical
Publication of CN115878664B publication Critical patent/CN115878664B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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。
CN202211480168.8A 2022-11-24 2022-11-24 一种海量输入数据的实时查询匹配的方法及系统 Active CN115878664B (zh)

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)

* Cited by examiner, † Cited by third party
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 苏州浪潮智能科技有限公司 一种线程池调度方法、系统、设备及可读存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
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
CN104915407B (zh) 一种基于Hadoop多作业环境下的资源调度方法
US9171044B2 (en) Method and system for parallelizing database requests
CN112000636A (zh) 基于Flink流式处理的用户行为统计分析方法
CN101556678A (zh) 一种批处理业务的处理方法、系统及业务处理控制设备
CN100538646C (zh) 一种在分布式系统中执行sql脚本文件的方法和装置
WO2020233262A1 (zh) 一种基于Spark的多中心数据协同计算的流处理方法
CN110058940B (zh) 一种多线程环境下的数据处理方法及装置
CN101477524A (zh) 基于物化视图的系统性能优化方法及系统
US6549931B1 (en) Distributing workload between resources used to access data
CN108519987A (zh) 一种数据持久化方法和装置
CN111736907B (zh) 一种自适应低延迟内存计算引擎的数据分析方法
CN113485806A (zh) 处理任务的方法、装置、设备和计算机可读介质
CN115185787A (zh) 处理事务日志的方法及装置
CN102760073A (zh) 一种任务调度方法、系统及装置
CN114238523A (zh) 数据同步方法和装置
CN116974994A (zh) 一种基于集群的高效能文件协作系统
CN110955461B (zh) 计算任务的处理方法、装置、系统、服务器和存储介质
CN114756629B (zh) 基于sql的多源异构数据交互分析引擎及方法
CN115878664B (zh) 一种海量输入数据的实时查询匹配的方法及系统
CN115640278B (zh) 一种数据库性能智能优化的方法及系统
US20230153317A1 (en) Method for scheduling offloading snippets based on large amount of dbms task computation
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