CN104038439A - 报文流量控制方法及系统 - Google Patents
报文流量控制方法及系统 Download PDFInfo
- Publication number
- CN104038439A CN104038439A CN201410273258.9A CN201410273258A CN104038439A CN 104038439 A CN104038439 A CN 104038439A CN 201410273258 A CN201410273258 A CN 201410273258A CN 104038439 A CN104038439 A CN 104038439A
- Authority
- CN
- China
- Prior art keywords
- pond
- message
- communication connection
- queue
- pool
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种报文流量控制方法及系统,该方法包括:建立通讯连接池、报文缓冲池和处理线程池;实时检测通讯连接池、报文缓冲池和处理线程池的当前使用情况;根据通讯连接池的当前使用情况调整通讯连接池的大小,根据报文缓冲池的当前使用情况调整报文缓冲池的大小以及根据处理线程池的当前使用情况调整处理线程池的大小;使用通讯连接池中的通讯连接收发报文,使用报文缓冲池缓存报文以及使用处理线程池中的线程处理报文。建立通讯连接池、报文缓冲池和处理线程池,并分别对各个池的当前使用情况进行实时监控,自适应地调整各个池的大小,实现系统对数据通讯流量的自适应控制,避免通讯堵塞等问题。
Description
技术领域
本发明涉及数据通讯技术领域,尤其涉及一种报文流量控制方法及系统。
背景技术
随着信息技术的快速发展,许多企业都需要与外单位进行网络连接和数据通讯。例如,商业银行的跨行支付等需要与其它第三方系统进行数据报文的交互。企业在与外部系统进行数据报文通讯时,通讯方式多种多样,常见的有消息队列(MessageQueue,简称MQ)、传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol,简称TCP/IP(Socket))、超文本传输协议/安全超文本传输协议(Hypertext Transfer Protocol/Hypertext Transfer Protocol Secure,简称HTTP/HTTPS)、文件传输协议/安全文件传输协议(File Transfer Protocol/Secure File Transfer Protocol,简称FTP/SFTP)等,且根据业务的时效性要求,对报文数据的处理需要实时联机在业务系统进行处理,通过通讯处理进程(或线程)与外系统通讯,负责报文收发。
通过通讯处理进程从外部系统接收数据报文,然后由系统处理进程进行数据加工处理。在数据加工处理完成后,通过通讯处理进程将返回的数据报文发送到外部系统。在数据处理量不大的情况下,上述数据处理过程能够很好地完成内部系统与外部系统间的数据报文交互,且通讯处理进程工作顺利。但在系统数据处理量比较大时,例如,交易系统处理交易信息,特别是交易瞬时并发高峰时,由于通讯处理进程数量不能与当前要处理的报文数量相适应,容易出现通讯处理进程不能及时获取需要接收或发送的数据报文而导致报文堵报或丢失,也可能出现通讯处理进程不能及时分配或数据报文不能及时处理而导致的系统排队。长时间的堵报或系统排队,容易导致系统不能对外服务甚至宕机。
发明内容
本发明提供了一种报文流量控制方法及系统,以至少解决现有技术中系统间进行报文交互时,报文收发高峰导致不可预知性系统堵报、处理缓慢甚至系统宕机的问题。
根据本发明的一个方面,提供了一种报文流量控制方法,包括:建立通讯连接池、报文缓冲池和处理线程池,其中,所述通讯连接池存储与外部系统进行报文交互的通讯连接,所述报文缓冲池存储利用所述通讯连接收发的报文,所述处理线程池存储用于处理所述报文的线程;实时检测所述通讯连接池、所述报文缓冲池和所述处理线程池的当前使用情况;根据所述通讯连接池的当前使用情况调整所述通讯连接池的大小,根据所述报文缓冲池的当前使用情况调整所述报文缓冲池的大小以及根据所述处理线程池的当前使用情况调整所述处理线程池的大小;使用所述通讯连接池中的通讯连接收发所述报文,使用所述报文缓冲池缓存所述报文以及使用所述处理线程池中的线程处理所述报文。
在一个实施例中,建立通讯连接池包括:在系统初始化时,读取所述通讯连接池的配置参数,其中,所述通讯连接池的配置参数包括:连接类型、所述通讯连接池的初始最大值和所述通讯连接池的初始最小值,所述连接类型包括:MQ、TCP/IP、HTTP/HTTPS和FTP/SFTP;根据所述通讯连接池的配置参数建立对应于不同连接类型的通讯连接池,其中,所述通讯连接池的深度为所述通讯连接池的初始最小值。
在一个实施例中,建立报文缓冲池包括:在系统初始化时,读取所述报文缓冲池的配置参数,其中,所述报文缓冲池的配置参数包括:所述报文缓冲池的初始最大值、所述报文缓冲池的初始最小值和所述报文缓冲池的清理时间;根据所述报文缓冲池的配置参数建立缓冲池队列,构成所述报文缓冲池,其中,所述缓冲池队列的深度为所述报文缓冲池的初始最小值。
在一个实施例中,建立处理线程池包括:在系统初始化时,读取所述处理线程池的配置参数,其中,所述处理线程池的配置参数包括:所述处理线程池的初始最大值、所述处理线程池的初始最小值和所述处理线程池的清理时间;根据所述处理线程池的配置参数建立线程池队列,构成所述处理线程池,其中,所述线程池队列的深度为所述处理线程池的初始最小值。
在一个实施例中,实时检测所述通讯连接池的当前使用情况,并根据所述通讯连接池的当前使用情况调整所述通讯连接池的大小包括:获取所述通讯连接池的调节参数和所述通讯连接池中通讯连接的当前使用情况,其中,所述通讯连接池的调节参数包括:连接类型、所述通讯连接池调节的第一上限阈值和第一下限阈值,所述通讯连接的当前使用情况包括:所述通讯连接池的深度、已使用的通讯连接数和未使用的通讯连接数;比较所述已使用的通讯连接数以及所述第一上限阈值和所述第一下限阈值;如果所述已使用的通讯连接数大于等于所述第一上限阈值,则对所述通讯连接池进行扩充;如果所述已使用的通讯连接数小于所述第一下限阈值,则对所述通讯连接池中未使用的通讯连接进行回收,直到所述通讯连接池中的通讯连接数等于所述第一下限阈值;如果所述已使用的通讯连接数大于等于所述第一下限阈值且小于所述第一上限阈值,则直接从所述通讯连接池中分配通讯连接进行报文的收发。
在一个实施例中,实时检测所述报文缓冲池的当前使用情况,并根据所述报文缓冲池的当前使用情况调整所述报文缓冲池的大小包括:获取所述报文缓冲池的调节参数和所述报文缓冲池中缓冲池队列的当前使用情况,其中,所述报文缓冲池的调节参数包括:所述报文缓冲池调节的第二上限阈值和第二下限阈值,所述缓冲池队列的当前使用情况包括:所述缓冲池队列的深度、已使用的队列空间数和未使用的队列空间数;比较所述已使用的队列空间数以及所述第二上限阈值和所述第二下限阈值;如果所述已使用的队列空间数大于等于所述第二上限阈值,则对所述报文缓冲池进行扩充;如果所述已使用的队列空间数小于所述第二下限阈值,则对所述报文缓冲池中未使用的队列空间进行回收,直到所述报文缓冲池中的队列空间数等于所述第二下限阈值;如果所述已使用的队列空间数大于等于所述第二下限阈值且小于所述第二上限阈值,则直接从所述报文缓冲池中分配队列空间进行报文的缓存。
在一个实施例中,实时检测所述处理线程池的当前使用情况,并根据所述处理线程池的当前使用情况调整所述处理线程池的大小包括:获取所述处理线程池的调节参数和所述处理线程池中线程池队列的当前使用情况,其中,所述处理线程池的调节参数包括:所述处理线程池调节的第三上限阈值和第三下限阈值,所述线程池队列的当前使用情况包括:所述线程池队列的深度、已使用的线程数和未使用的线程数;比较所述已使用的线程数以及所述第三上限阈值和所述第三下限阈值;如果所述已使用的线程数大于等于所述第三上限阈值,则对所述处理线程池进行扩充;如果所述已使用的线程数小于所述第三下限阈值,则对所述处理线程池中未使用的线程进行回收,直到所述处理线程池中的线程数等于所述第三下限阈值;如果所述已使用的线程数大于等于所述第三下限阈值且小于所述第三上限阈值,则直接从所述处理线程池中分配线程进行报文的处理。
在一个实施例中,在调整所述通讯连接池的大小,调整所述报文缓冲池的大小以及调整所述处理线程池的大小之后,所述方法还包括:更新所述通讯连接的状态、所述缓冲池队列中队列空间的状态和所述线程池队列中线程的状态,以及更新所述通讯连接池的计数器、所述报文缓冲池的计数器和所述处理线程池的计数器。
在一个实施例中,使用所述通讯连接池中的通讯连接收发所述报文,使用所述报文缓冲池缓存所述报文以及使用所述处理线程池中的线程处理所述报文包括:接收到所述外部系统的连接后,判断所述通讯连接池中是否存在可使用的通讯连接;如果存在可使用的通讯连接,则分配通讯连接执行与所述外部系统之间的报文收发;如果不存在可使用的通讯连接,则建立新的通讯连接;判断所述报文缓冲池中是否存在可使用的队列空间;如果存在可使用的队列空间,则分配所述可使用的队列空间存储所述通讯连接收发的报文;如果不存在可使用的队列空间,则对所述报文缓冲池中的缓冲池队列的深度进行扩充或建立新的缓冲池队列;在所述报文缓冲池向所述处理线程池推送报文之后,判断所述处理线程池的线程池队列中是否存在可使用的线程;如果存在可使用的线程,则分配所述可使用的线程处理所述报文缓冲池推送的报文;如果不存在可使用的线程,则建立新的线程或建立新的线程池队列。
在一个实施例中,在使用所述通讯连接池中的通讯连接收发所述报文之后,将使用的通讯连接归还到所述通讯连接池中;在使用所述报文缓冲池缓存所述报文之后,将所述报文推送给所述处理线程池进行报文处理,删除所述缓冲池队列中已被推送的报文;在使用所述处理线程池中的线程处理所述报文之后,将使用的线程归还到所述处理线程池中,释放所述线程占用的资源。
根据本发明的另一个方面,提供了一种报文流量控制系统,包括:建立单元,用于建立通讯连接池、报文缓冲池和处理线程池,其中,所述通讯连接池用于存储与外部系统进行报文交互的通讯连接;所述报文缓冲池用于存储所述通讯连接收发的报文;所述处理线程池用于存储处理所述报文的线程;检测单元,用于实时检测所述通讯连接池、所述报文缓冲池和所述处理线程池的当前使用情况;调整单元,用于根据所述通讯连接池的当前使用情况调整所述通讯连接池的大小,根据所述报文缓冲池的当前使用情况调整所述报文缓冲池的大小以及根据所述处理线程池的当前使用情况调整所述处理线程池的大小;控制单元,用于使用所述通讯连接池中的通讯连接收发所述报文,使用所述报文缓冲池缓存所述报文以及使用所述处理线程池中的线程处理所述报文。
在一个实施例中,所述建立单元包括:第一读取模块,用于在系统初始化时读取所述通讯连接池的配置参数,其中,所述通讯连接池的配置参数包括:连接类型、所述通讯连接池的初始最大值和所述通讯连接池的初始最小值,所述连接类型包括:MQ、TCP/IP、HTTP/HTTPS和FTP/SFTP;第一建立模块,用于根据所述通讯连接池的配置参数建立对应于不同连接类型的通讯连接池,其中,所述通讯连接池的深度为所述通讯连接池的初始最小值。
在一个实施例中,所述建立单元包括:第二读取模块,用于在系统初始化时读取所述报文缓冲池的配置参数,其中,所述报文缓冲池的配置参数包括:所述报文缓冲池的初始最大值、所述报文缓冲池的初始最小值和所述报文缓冲池的清理时间;第二建立模块,用于根据所述报文缓冲池的配置参数建立缓冲池队列,构成所述报文缓冲池,其中,所述缓冲池队列的深度为所述报文缓冲池的初始最小值。
在一个实施例中,所述建立单元包括:第三读取模块,用于在系统初始化时读取所述处理线程池的配置参数,其中,所述处理线程池的配置参数包括:所述处理线程池的初始最大值、所述处理线程池的初始最小值和所述处理线程池的清理时间;第三建立模块,用于根据所述处理线程池的配置参数建立线程池队列,构成所述处理线程池,其中,所述线程池队列的深度为所述处理线程池的初始最小值。
在一个实施例中,所述检测单元包括:第一获取模块,用于获取所述通讯连接池的调节参数和所述通讯连接池中通讯连接的当前使用情况,其中,所述通讯连接池的调节参数包括:连接类型、所述通讯连接池调节的第一上限阈值和第一下限阈值,所述通讯连接的当前使用情况包括:所述通讯连接池的深度、已使用的通讯连接数和未使用的通讯连接数;第一比较模块,用于比较所述已使用的通讯连接数以及所述第一上限阈值和所述第一下限阈值;所述调整单元包括:第一调整模块,用于在所述已使用的通讯连接数大于等于所述第一上限阈值的情况下,对所述通讯连接池进行扩充;在所述已使用的通讯连接数小于所述第一下限阈值的情况下,对所述通讯连接池中未使用的通讯连接进行回收,直到所述通讯连接池中的通讯连接数等于所述第一下限阈值;第一分配模块,用于在所述已使用的通讯连接数大于等于所述第一下限阈值且小于所述第一上限阈值的情况下,直接从所述通讯连接池中分配通讯连接进行报文的收发。
在一个实施例中,所述检测单元包括:第二获取模块,用于获取所述报文缓冲池的调节参数和所述报文缓冲池中缓冲池队列的当前使用情况,其中,所述报文缓冲池的调节参数包括:所述报文缓冲池调节的第二上限阈值和第二下限阈值,所述缓冲池队列的当前使用情况包括:所述缓冲池队列的深度、已使用的队列空间数和未使用的队列空间数;第二比较模块,用于比较所述已使用的队列空间数以及所述第二上限阈值和所述第二下限阈值;所述调整单元包括:第二调整模块,用于在所述已使用的队列空间数大于等于所述第二上限阈值的情况下,对所述报文缓冲池进行扩充;在所述已使用的队列空间数小于所述第二下限阈值的情况下,对所述报文缓冲池中未使用的队列空间进行回收,直到所述报文缓冲池中的队列空间数等于所述第二下限阈值;第二分配模块,用于在所述已使用的队列空间数大于等于所述第二下限阈值且小于所述第二上限阈值的情况下,直接从所述报文缓冲池中分配队列空间进行报文的缓存。
在一个实施例中,所述检测单元包括:第三获取模块,用于获取所述处理线程池的调节参数和所述处理线程池中线程池队列的当前使用情况,其中,所述处理线程池的调节参数包括:所述处理线程池调节的第三上限阈值和第三下限阈值,所述线程池队列的当前使用情况包括:所述线程池队列的深度、已使用的线程数和未使用的线程数;第三比较模块,用于比较所述已使用的线程数以及所述第三上限阈值和所述第三下限阈值;所述调整单元包括:第三调整模块,用于在所述已使用的线程数大于等于所述第三上限阈值的情况下,对所述处理线程池进行扩充;在所述已使用的线程数小于所述第三下限阈值的情况下,对所述处理线程池中未使用的线程进行回收,直到所述处理线程池中的线程数等于所述第三下限阈值;第三分配模块,用于在所述已使用的线程数大于等于所述第三下限阈值且小于所述第三上限阈值的情况下,直接从所述处理线程池中分配线程进行报文的处理。
在一个实施例中,所述调整单元还包括:更新模块,用于更新所述通讯连接的状态、所述缓冲池队列中队列空间的状态和所述线程池队列中线程的状态,以及更新所述通讯连接池的计数器、所述报文缓冲池的计数器和所述处理线程池的计数器。
在一个实施例中,所述控制单元包括:第一控制模块,用于接收到所述外部系统的连接后,判断所述通讯连接池中是否存在可使用的通讯连接;如果存在可使用的通讯连接,则分配通讯连接执行与所述外部系统之间的报文收发;如果不存在可使用的通讯连接,则建立新的通讯连接;第二控制模块,用于判断所述报文缓冲池中是否存在可使用的队列空间;如果存在可使用的队列空间,则分配所述可使用的队列空间存储所述通讯连接收发的报文;如果不存在可使用的队列空间,则对所述报文缓冲池中的缓冲池队列的深度进行扩充或建立新的缓冲池队列;第三控制模块,用于在所述报文缓冲池向所述处理线程池推送报文之后,判断所述处理线程池的线程池队列中是否存在可使用的线程;如果存在可使用的线程,则分配所述可使用的线程处理所述报文缓冲池推送的报文;如果不存在可使用的线程,则建立新的线程或建立新的线程池队列。
在一个实施例中,所述控制单元还包括:通讯连接归还模块,用于在使用所述通讯连接池中的通讯连接收发所述报文之后,将使用的通讯连接归还到所述通讯连接池中;报文缓冲池清理模块,用于在使用所述报文缓冲池缓存所述报文,并将所述报文推送给所述处理线程池进行报文处理之后,删除所述缓冲池队列中已被推送的报文;线程归还模块,用于在使用所述处理线程池中的线程处理所述报文之后,将使用的线程归还到所述处理线程池中,释放所述线程占用的资源。
通过本发明的报文流量控制方法及系统,建立通讯连接池、报文缓冲池和处理线程池,并分别对通讯连接池、报文缓冲池和处理线程池的当前使用情况进行实时监控,可以判断出系统间报文流量的增减,根据报文流量自适应地调整通讯连接池、报文缓冲池和处理线程池的大小,通过动态调整上述参数,实现系统对数据通讯流量的自适应控制,避免系统间报文收发高峰时的通讯堵塞、丢包、处理缓慢甚至系统宕机等问题,保证了系统数据通讯的安全、稳定。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的限定。在附图中:
图1是本发明一实施例的报文流量控制方法的流程图;
图2是本发明一实施例的实时检测与调整通讯连接池的详细步骤流程图;
图3是本发明一实施例的实时检测与调整报文缓冲池的详细步骤流程图;
图4是本发明一实施例的实时检测与调整处理线程池的详细步骤流程图;
图5是本发明一实施例的报文流量控制系统的结构框图;
图6是本发明一实施例的建立单元的具体结构框图;
图7是本发明另一实施例的报文流量控制系统的结构框图;
图8是本发明又一实施例的报文流量控制系统的结构框图;
图9是本发明优选实施例一的报文流量控制系统的结构框图;
图10是本发明优选实施例一的调节单元的具体结构框图;
图11是本发明优选实施例二的通讯连接池单元的具体结构框图;
图12是本发明优选实施例二的报文缓冲池单元的具体结构框图;
图13是本发明优选实施例二的处理线程池单元的具体结构框图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
本发明实施例提供了一种报文流量控制方法,图1是本发明一实施例的报文流量控制方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,建立通讯连接池、报文缓冲池和处理线程池,其中,通讯连接池存储与外部系统进行报文交互的通讯连接,报文缓冲池存储利用通讯连接收发的报文,处理线程池存储用于处理报文的线程;
步骤S102,实时检测通讯连接池、报文缓冲池和处理线程池的当前使用情况;
步骤S103,根据通讯连接池的当前使用情况调整通讯连接池的大小,根据报文缓冲池的当前使用情况调整报文缓冲池的大小以及根据处理线程池的当前使用情况调整处理线程池的大小;
步骤S104,使用通讯连接池中的通讯连接收发报文,使用报文缓冲池缓存报文以及使用处理线程池中的线程处理报文。
在本实施例中,无论系统是否正在收发报文,系统一直在执行步骤S102对各个池当前使用情况的实时检测以及步骤S103根据当前使用情况调整池的大小,以实现实时检测与动态调整。具体的报文的数据加工处理过程与现有技术相同,此处不再赘述。
通过上述实施例,建立通讯连接池、报文缓冲池和处理线程池,并分别对通讯连接池、报文缓冲池和处理线程池的当前使用情况进行实时监控,可以判断出系统间报文流量的增减,根据报文流量自适应地调整通讯连接池、报文缓冲池和处理线程池的大小,通过动态调整上述参数,实现系统对数据通讯流量的自适应控制,避免系统间报文收发高峰时的通讯堵塞、丢包、处理缓慢甚至系统宕机等问题,保证了系统数据通讯的安全、稳定。
以下对步骤S101中建立通讯连接池、报文缓冲池和处理线程池进行说明。各个池的配置参数可以是根据需求预先设置的。
在一个实施例中,可以通过以下方法建立通讯连接池:在系统初始化时,读取通讯连接池的配置参数,其中,通讯连接池的配置参数包括:连接类型、通讯连接池的初始最大值和通讯连接池的初始最小值,连接类型包括:MQ、TCP/IP、HTTP/HTTPS和FTP/SFTP;根据通讯连接池的配置参数建立对应于不同连接类型的通讯连接池,其中,通讯连接池的深度为通讯连接池的初始最小值。本实施例中,通讯连接池的初始最小值指的是初始建立的通讯连接池中存储的通讯连接的个数,也可称为通讯连接池的初始深度;通讯连接池的初始最大值指的是通讯连接池可以存储的最大通讯连接个数,也可称为通讯连接池的最大深度。对通讯连接池进行扩充时,不会超过通讯连接池的初始最大值。需要说明的是,可以分别建立收报通讯连接池和发报通讯连接池。
在一个实施例中,可以通过以下方法建立报文缓冲池:在系统初始化时,读取报文缓冲池的配置参数,其中,报文缓冲池的配置参数包括:报文缓冲池的初始最大值、报文缓冲池的初始最小值和报文缓冲池的清理时间;根据报文缓冲池的配置参数建立缓冲池队列,构成报文缓冲池,其中,缓冲池队列的深度为报文缓冲池的初始最小值。本实施例中,报文缓冲池的初始最小值指的是初始建立的报文缓冲池中的缓冲池队列的深度,即缓冲池队列中存储空间(以下称为队列空间)的个数;报文缓冲池的初始最大值指的是报文缓冲池中的缓冲池队列的最大深度,即缓冲池队列所能包括的最大队列空间数。对报文缓冲池进行扩充时,不会超过报文缓冲池的初始最大值。具体的,可以建立一个或多个缓冲池队列构成报文缓冲池,在建立多个缓冲池队列的情况下,报文缓冲池的初始值可以包括:队列的最少个数和最多个数以及队列的最小深度和最大深度,当然,在条件允许的情况下,可以区分每个队列的最小深度和最大深度。报文缓冲池的清理时间指的是在该时间段对缓冲池队列中的空间进行清理,例如,清理时间设为深夜或凌晨等报文收发量较少的时间段,清理缓冲池队列中无效的报文等,这种闲时清理的方式不会影响系统间的报文交互。
在一个实施例中,可以通过以下方法建立处理线程池:在系统初始化时,读取处理线程池的配置参数,其中,处理线程池的配置参数包括:处理线程池的初始最大值、处理线程池的初始最小值和处理线程池的清理时间;根据处理线程池的配置参数建立线程池队列,构成处理线程池,其中,线程池队列的深度为处理线程池的初始最小值。本实施例中,处理线程池的初始最小值指的是初始建立的处理线程池中的线程池队列的深度;处理线程池的初始最大值指的是处理线程池中的线程池队列的最大深度。对处理线程池进行扩充时,不会超过处理线程池的初始最大值。具体的,可以建立一个或多个线程池队列构成处理线程池,在建立一个线程池队列的情况下,初始最小值可以解为初始建立的处理线程池中线程的个数,初始最大值可理解为处理线程池可容纳的线程的最多个数;在建立多个线程池队列的情况下,处理线程池的初始值可以包括:队列的最少个数和最多个数以及队列的最小深度和最大深度,当然,在条件允许的情况下,可以区分每个队列的最小深度和最大深度。处理线程池的清理时间指的是在该时间段对线程池队列中的线程进行清理,例如,清理时间设为深夜或凌晨等报文较少的时间段,清理处理线程池中有问题的线程(如不能再次使用的线程),保证处理线程池中的线程可以正常使用,且这种闲时清理的方式不会影响系统间的报文交互。
上述建立通讯连接池、报文缓冲池和处理线程池的方法比较简单且易实现。
以下对步骤S102中实时检测各个池的当前使用情况以及步骤S103中根据当前使用情况调整池的大小进行说明。需要说明的是,对池的大小进行调整(扩充或回收)或对池中的元素(例如通讯连接、缓冲池队列中的队列空间或线程)进行分配之后,实时更新池中元素的状态以及更新对应池的计数器(每个池的计数器均可以包括元素总数计数器、已使用元素的计数器和未使用元素的计数器),以方便对各个池的当前使用情况进行实时检测。以下实施例中的上限阈值均不会超过建立各个池时的配置参数中的初始最大值。
在一个实施例中,实时检测通讯连接池的当前使用情况,并根据通讯连接池的当前使用情况调整通讯连接池的大小可以通过如图2所示的步骤实现:
步骤S201,获取通讯连接池的调节参数和通讯连接池中通讯连接的当前使用情况。其中,通讯连接池的调节参数可以是根据需求预先设置的,通讯连接池的调节参数包括:连接类型、通讯连接池调节的第一上限阈值和第一下限阈值。通讯连接的当前使用情况包括:通讯连接池的深度、已使用的通讯连接数和未使用的通讯连接数,通讯连接的当前使用情况可以根据通讯连接池的计数器(例如,通讯连接总数计数器、已使用通讯连接的计数器和未使用通讯连接的计数器)得到。
步骤S202,比较已使用的通讯连接数以及第一上限阈值和第一下限阈值。
步骤S203,如果已使用的通讯连接数大于等于第一上限阈值,则对通讯连接池进行扩充。具体的,可以根据通讯连接池的调节参数中的连接类型,建立新的通讯连接,并将该新的通讯连接的状态设置为未使用,更新通讯连接池的计数器(例如,建立一个新的通讯连接,则通讯连接总数计数器加1,未使用通讯连接的计数器加1)。已使用的通讯连接数大于等于第一上限阈值,说明与外部系统交互的待处理报文较多,实时调节通讯连接池的大小,增加通讯连接参与外部系统的交互,保证报文能够得到及时处理,避免出现堵报现象。
步骤S204,如果已使用的通讯连接数小于第一下限阈值,则对通讯连接池中未使用的通讯连接进行回收,直到通讯连接池中的通讯连接数等于第一下限阈值。具体的,可以对未使用的通讯连接进行逐个回收,并更新通讯连接池的计数器(例如,共回收3个通讯连接,则每回收1个通讯连接,通讯连接总数计数器减1,未使用通讯连接的计数器减1)。已使用的通讯连接数小于第一下限阈值,说明当前报文流量较少,对未使用的通信连接进行回收,可以避免内存的浪费。
步骤S205,如果已使用的通讯连接数大于等于第一下限阈值且小于第一上限阈值,则直接从通讯连接池中分配通讯连接进行报文的收发。具体的,从未使用的通讯连接中分配通讯连接进行报文的收发,将分配的通讯连接的状态更新为已使用,更新通讯连接池的计数器(例如,分配1个通讯连接,则已使用通讯连接的计数器加1,未使用通讯连接的计数器减1)。
本实施例中,通讯连接池中的通讯连接发生变化时(例如,增加通讯连接、回收通讯连接或者分配通讯连接进行报文的收发),需要对通讯连接的状态以及通讯连接池的计数器进行实时更新,以方便后续对通讯连接池的当前使用情况进行实时检测。在使用通讯连接池中的通讯连接收发报文之后,将使用的通讯连接归还到通讯连接池中,将该归还的通讯连接的状态更新为未使用,并更新通讯连接池的计数器(例如,归还一个通讯连接,则已使用通讯连接的计数器减1,未使用通讯连接的计数器加1),以便下次通讯交互时使用。
在一个实施例中,实时检测报文缓冲池的当前使用情况,并根据报文缓冲池的当前使用情况调整报文缓冲池的大小可以通过如图3所示的步骤实现:
步骤S301,获取报文缓冲池的调节参数和报文缓冲池中缓冲池队列的当前使用情况。其中,报文缓冲池的调节参数可以是根据需求预先设置的,报文缓冲池的调节参数包括:报文缓冲池调节的第二上限阈值和第二下限阈值。缓冲池队列的当前使用情况包括:缓冲池队列的深度、已使用的队列空间数和未使用的队列空间数,缓冲池队列的当前使用情况可以根据报文缓冲池的计数器(例如,队列空间总数计数器、已使用队列空间的计数器和未使用队列空间的计数器)得到。
步骤S302,比较已使用的队列空间数以及第二上限阈值和第二下限阈值。
步骤S303,如果已使用的队列空间数大于等于第二上限阈值,则对报文缓冲池进行扩充。具体的,可以增加原有的缓冲池队列的深度,即在原有缓冲池队列的基础上增加队列空间,将该新增队列空间的状态设置为未使用,并更新报文缓冲池的计数器(例如,新增一个队列空间,则队列空间总数计数器加1,未使用队列空间的计数器加1);或者可以按照初始最小值建立新的缓冲池队列,将该新的缓冲池队列中每个队列空间的状态均设置为未使用,并更新报文缓冲池的计数器(例如,新增一个缓冲池队列(包括15个队列空间),则队列空间总数计数器和未使用队列空间的计数器均加15,当然,还可以设置相关的队列计数器)。已使用的队列空间数大于等于第二上限阈值,说明报文缓冲池中已排队待处理的报文较多时,实时调节报文缓冲池的大小,避免排队队列的溢出。
步骤S304,如果已使用的队列空间数小于第二下限阈值,则对报文缓冲池中未使用的队列空间进行回收,直到报文缓冲池中的空间数等于第二下限阈值。具体的,可以对缓冲池队列中未使用的队列空间进行逐个回收,并更新报文缓冲池的计数器(例如,共回收3个队列空间,则每回收一个队列空间,队列空间总数计数器减1,未使用队列空间的计数器减1)。已使用的队列空间数小于第二下限阈值,说明报文缓冲池中待处理的报文较少,对未使用的队列空间进行回收,可以避免内存的浪费。
步骤S305,如果已使用的队列空间数大于等于第二下限阈值且小于第二上限阈值,则直接从报文缓冲池中分配队列空间进行报文的缓存。具体的,从未使用的队列空间中分配队列空间存储报文,将分配的队列空间的状态更新为已使用,更新报文缓冲池的计数器(例如,分配1个队列空间,则已使用队列空间的计数器加1,未使用队列空间的计数器减1)。
本实施例中,报文缓冲池中的缓冲池队列发生变化时(例如,增加队列空间或缓冲池队列、回收队列空间或缓冲池队列、分配队列空间或缓冲池队列进行报文的缓存),需要对缓冲池队列中队列空间的状态以及报文缓冲池的计数器进行实时更新,以方便后续对报文缓冲池的当前使用情况进行实时检测。在使用报文缓冲池缓存报文之后,按照先进先出的原则将缓冲池队列中的报文推送给处理线程池进行报文处理,删除缓冲池队列中已被推送的报文,将存储该已被推送的报文的队列空间的状态更新为未使用,并更新报文缓冲池的计数器(例如,删除一个报文,则已使用队列空间的计数器减1,未使用队列空间的计数器加1),以便下次使用。
在一个实施例中,实时检测处理线程池的当前使用情况,并根据处理线程池的当前使用情况调整处理线程池的大小可以通过如图4所示的步骤实现:
步骤S401,获取处理线程池的调节参数和处理线程池中线程池队列的当前使用情况。其中,处理线程池的调节参数可以是根据需求预先设置的,处理线程池的调节参数包括:处理线程池调节的第三上限阈值和第三下限阈值。线程池队列的当前使用情况包括:线程池队列的深度、已使用的线程数和未使用的线程数,线程池队列中存储线程,线程池队列的当前使用情况可以根据处理线程池的计数器(例如,线程总数计数器、已使用线程的计数器和未使用线程的计数器)得到。
步骤S402,比较已使用的线程数以及第三上限阈值和第三下限阈值。
步骤S403,如果已使用的线程数大于等于第三上限阈值,则对处理线程池进行扩充。具体的,可以建立新的线程,将该新的线程的状态设置为未使用,并更新处理线程池的计数器(例如,新增一个线程,则线程总数计数器加1,未使用线程的计数器加1);或者可以按照初始最小值建立新的线程池队列,将该新的线程池队列中每个线程的状态均设置为未使用,并更新处理线程池的计数器(例如,新增一个线程池队列(包括5个线程),则线程总数计数器和未使用线程的计数器均加5,当然,还可以设置相关的队列计数器)。已使用的线程数大于等于第三上限阈值,说明处理线程池中线程较繁忙,实时调节处理线程池的大小,避免报文大量排队导致不能及时处理业务。
步骤S404,如果已使用的线程数小于第三下限阈值,则对处理线程池中未使用的线程进行回收,直到处理线程池中的线程数等于第三下限阈值。具体的,可以对线程池队列中未使用的线程进行逐个回收,并更新处理线程池的计数器(例如,共回收3个线程,则每回收一个线程,线程总数计数器减1,未使用线程的计数器减1)。已使用的线程数小于第三下限阈值,说明处理线程池中的空闲线程较多,对未使用的线程进行回收,可以避免内存的浪费。
步骤S405,如果已使用的线程数大于等于第三下限阈值且小于第三上限阈值,则直接从处理线程池中分配线程进行报文的处理。具体的,将分配的线程的状态更新为已使用,更新处理线程池的计数器(例如,分配一个线程,则已使用线程的计数器加1,未使用线程的计数器减1)。
本实施例中,处理线程池中的线程发生变化时(例如,增加线程、回收线程、分配线程进行报文的处理),需要对线程的状态以及处理线程池的计数器进行实时更新,以方便后续对处理线程池的当前使用情况进行实时检测。按照业务逻辑对报文进行报文核心业务的处理,并结束整个报文的处理流程。在使用处理线程池中的线程处理报文之后,将使用的线程归还到处理线程池中,释放线程占用的资源,并将归还的线程的状态更新为未使用,更新处理线程池的计数器(例如,归还一个线程,已使用线程的计数器减1,未使用线程的计数器加1),以便下次使用。
在一个实施例中,除了从宏观上对通讯连接池、报文缓冲池和处理线程池进行实时检测和调整之外,也可以在具体使用过程中,分别对各个池内部进行调整,例如,收发报文时对可用的通讯连接进行判断,以新增或分配通讯连接;在缓存报文时对可用的缓冲池队列空间进行判断,以新增或分配缓冲池队列空间;在处理报文时对可用的线程进行判断,以新增或分配线程。由此,通过宏观上对三个池之间的实时检测与调整以及在具体使用过程中的调整,进一步保证了不会出现报文堵塞的情况。
具体的,步骤S104包括:
接收到外部系统的连接后,判断通讯连接池中是否存在可使用的通讯连接;如果存在可使用的通讯连接,则分配通讯连接执行与外部系统之间的报文收发;如果不存在可使用的通讯连接,则建立新的通讯连接;
判断报文缓冲池中是否存在可使用的队列空间;如果存在可使用的队列空间,则分配可使用的队列空间存储通讯连接收发的报文;如果不存在可使用的队列空间,则对报文缓冲池中的缓冲池队列的深度进行扩充或建立新的缓冲池队列;
在报文缓冲池向处理线程池推送报文之后,判断处理线程池的线程池队列中是否存在可使用的线程;如果存在可使用的线程,则分配可使用的线程处理报文缓冲池推送的报文;如果不存在可使用的线程,则建立新的线程或建立新的线程池队列。
在本实施例中,新增或分配池中的元素(例如通讯连接、缓冲池队列空间或线程)之后,可以更新池中元素的状态以及更新对应池的计数器,以方便对各个池的当前使用情况进行实时检测。通讯连接和线程使用完毕之后,归还到对应的池中;报文缓冲池中的报文推送给处理线程池后,删除缓冲池队列中已被推送的报文,以便下次使用。
本发明实施例还提供了一种报文流量控制系统,可以用于实现上述实施例所描述的报文流量控制方法。由于报文流量控制系统解决问题的原理与报文流量控制方法相似,因此报文流量控制系统的实施可以参见报文流量控制方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是本发明一实施例的报文流量控制系统的结构框图,如图5所示,该系统包括:建立单元51、通讯连接池52、报文缓冲池53、处理线程池54、检测单元55、调整单元56和控制单元57。其中:
建立单元51,用于建立通讯连接池、报文缓冲池和处理线程池;
通讯连接池52,用于存储与外部系统进行报文交互的通讯连接;
报文缓冲池53,连接至通讯连接池52,用于存储通讯连接收发的报文;
处理线程池54,连接至报文缓冲池53,用于存储处理报文的线程;
检测单元55,分别连接至通讯连接池52、报文缓冲池53和处理线程池54,用于实时检测通讯连接池、报文缓冲池和处理线程池的当前使用情况;
调整单元56,连接至检测单元55,用于根据通讯连接池的当前使用情况调整通讯连接池的大小,根据报文缓冲池的当前使用情况调整报文缓冲池的大小以及根据处理线程池的当前使用情况调整处理线程池的大小;
控制单元57,分别连接至通讯连接池52、报文缓冲池53和处理线程池54,用于使用通讯连接池中的通讯连接收发报文,使用报文缓冲池缓存报文以及使用处理线程池中的线程处理报文。
通过上述实施例,建立通讯连接池、报文缓冲池和处理线程池,并分别对通讯连接池、报文缓冲池和处理线程池的当前使用情况进行实时监控,可以判断出系统间报文流量的增减,根据报文流量自适应地调整通讯连接池、报文缓冲池和处理线程池的大小,通过动态调整上述参数,实现系统对数据通讯流量的自适应控制,避免系统间报文收发高峰时的通讯堵塞、丢包、处理缓慢甚至系统宕机等问题,保证了系统数据通讯的安全、稳定。
在一个实施例中,如图6所示,建立单元51可以包括:第一读取模块511和第一建立模块512。其中,第一读取模块511,用于在系统初始化时读取通讯连接池的配置参数,其中,通讯连接池的配置参数包括:连接类型、通讯连接池的初始最大值和通讯连接池的初始最小值,连接类型包括:MQ、TCP/IP、HTTP/HTTPS和FTP/SFTP;第一建立模块512,连接至第一读取模块511,用于根据通讯连接池的配置参数建立对应于不同连接类型的通讯连接池,其中,通讯连接池的深度为通讯连接池的初始最小值。
如图6所示,建立单元51还可以包括:第二读取模块513和第二建立模块514。其中,第二读取模块513,用于在系统初始化时读取报文缓冲池的配置参数,其中,报文缓冲池的配置参数包括:报文缓冲池的初始最大值、报文缓冲池的初始最小值和报文缓冲池的清理时间;第二建立模块514,连接至第二读取模块513,用于根据报文缓冲池的配置参数建立缓冲池队列,构成报文缓冲池,其中,缓冲池队列的深度为报文缓冲池的初始最小值。
如图6所示,建立单元51还可以包括:第三读取模块515和第三建立模块516。其中,第三读取模块515,用于在系统初始化时读取处理线程池的配置参数,其中,处理线程池的配置参数包括:处理线程池的初始最大值、处理线程池的初始最小值和处理线程池的清理时间;第三建立模块516,连接至第三读取模块515,用于根据处理线程池的配置参数建立线程池队列,构成处理线程池,其中,线程池队列的深度为处理线程池的初始最小值。
以下对检测单元55和调整单元56对各个池的实时检测和调整分别进行说明。
在一个实施例中,如图7所示,检测单元55可以包括:第一获取模块551和第一比较模块552。其中,第一获取模块551,连接至通讯连接池52,用于获取通讯连接池的调节参数和通讯连接池中通讯连接的当前使用情况,其中,通讯连接池的调节参数包括:连接类型、通讯连接池调节的第一上限阈值和第一下限阈值,通讯连接的当前使用情况包括:通讯连接池的深度、已使用的通讯连接数和未使用的通讯连接数;第一比较模块552,连接至第一获取模块551,用于比较已使用的通讯连接数以及第一上限阈值和第一下限阈值。
调整单元56可以包括:第一调整模块561和第一分配模块562。其中,第一调整模块561,连接至第一比较模块552,用于在已使用的通讯连接数大于等于第一上限阈值的情况下,对通讯连接池进行扩充;在已使用的通讯连接数小于第一下限阈值的情况下,对通讯连接池中未使用的通讯连接进行回收,直到通讯连接池中的通讯连接数等于第一下限阈值;第一分配模块562,连接至第一比较模块552,用于在已使用的通讯连接数大于等于第一下限阈值且小于第一上限阈值的情况下,直接从通讯连接池中分配通讯连接进行报文的收发。
如图7所示,检测单元55还可以包括:第二获取模块553和第二比较模块554。其中,第二获取模块553,连接至报文缓冲池53,用于获取报文缓冲池的调节参数和报文缓冲池中缓冲池队列的当前使用情况,其中,报文缓冲池的调节参数包括:报文缓冲池调节的第二上限阈值和第二下限阈值,缓冲池队列的当前使用情况包括:缓冲池队列的深度、已使用的队列空间数和未使用的队列空间数;第二比较模块554,连接至第二获取模块553,用于比较已使用的队列空间数以及第二上限阈值和第二下限阈值。
调整单元56还可以包括:第二调整模块563和第二分配模块564。其中,第二调整模块563,连接至第二比较模块554,用于在已使用的队列空间数大于等于第二上限阈值的情况下,对报文缓冲池进行扩充;在已使用的队列空间数小于第二下限阈值的情况下,对报文缓冲池中未使用的队列空间进行回收,直到报文缓冲池中的队列空间数等于第二下限阈值;第二分配模块564,连接至第二比较模块554,用于在已使用的队列空间数大于等于第二下限阈值且小于第二上限阈值的情况下,直接从报文缓冲池中分配队列空间进行报文的缓存。
如图7所示,检测单元55还可以包括:第三获取模块555和第三比较模块556。其中,第三获取模块555,连接至处理线程池54,用于获取处理线程池的调节参数和处理线程池中线程池队列的当前使用情况,其中,处理线程池的调节参数包括:处理线程池调节的第三上限阈值和第三下限阈值,线程池队列的当前使用情况包括:线程池队列的深度、已使用的线程数和未使用的线程数;第三比较模块556,连接至第三获取模块555,用于比较已使用的线程数以及第三上限阈值和第三下限阈值。
调整单元56还可以包括:第三调整模块565和第三分配模块566。其中,第三调整模块565,连接至第三比较模块556,用于在已使用的线程数大于等于第三上限阈值的情况下,对处理线程池进行扩充;在已使用的线程数小于第三下限阈值的情况下,对处理线程池中未使用的线程进行回收,直到处理线程池中的线程数等于第三下限阈值;第三分配模块566,连接至第三比较模块556,用于在已使用的线程数大于等于第三下限阈值且小于第三上限阈值的情况下,直接从处理线程池中分配线程进行报文的处理。
在一个实施例中,调整单元56还可以包括:更新模块,分别连接至第一调整模块561、第一分配模块562、第二调整模块563、第二分配模块564、第三调整模块565和第三分配模块566,用于更新通讯连接的状态、缓冲池队列中队列空间的状态和线程池队列中线程的状态,以及更新通讯连接池的计数器、报文缓冲池的计数器和处理线程池的计数器。
在一个实施例中,如图8所示,控制单元57可以包括:第一控制模块571,连接至通讯连接池52,用于接收到外部系统的连接后,判断通讯连接池中是否存在可使用的通讯连接;如果存在可使用的通讯连接,则分配通讯连接执行与外部系统之间的报文收发;如果不存在可使用的通讯连接,则建立新的通讯连接;第二控制模块572,连接至报文缓冲池53,用于判断报文缓冲池中是否存在可使用的队列空间;如果存在可使用的队列空间,则分配可使用的队列空间存储通讯连接收发的报文;如果不存在可使用的队列空间,则对报文缓冲池中的缓冲池队列的深度进行扩充或建立新的缓冲池队列;第三控制模块573,连接至处理线程池54,用于在报文缓冲池向处理线程池推送报文之后,判断处理线程池的线程池队列中是否存在可使用的线程;如果存在可使用的线程,则分配可使用的线程处理报文缓冲池推送的报文;如果不存在可使用的线程,则建立新的线程或建立新的线程池队列。
如图8所示,控制单元57还可以包括:通讯连接归还模块574,连接至第一控制模块571,用于在使用通讯连接池中的通讯连接收发报文之后,将使用的通讯连接归还到通讯连接池中;报文缓冲池清理模块575,连接至第二控制模块572,用于在使用报文缓冲池缓存报文,并将报文推送给处理线程池进行报文处理之后,删除缓冲池队列中已被推送的报文;线程归还模块576,连接至第三控制模块573,用于在使用处理线程池中的线程处理报文之后,将使用的线程归还到处理线程池中,释放线程占用的资源。
需要说明的是,控制单元57对各个池中的元素进行新增、分配或归还之后,也需要使用更新模块更新对应元素的状态以及对应池的计数器,因此,更新模块也与控制单元57连接。
当然,上述单元及模块的划分只是一种示意划分,本发明并不局限于此。该系统可以仅包括:通讯连接池单元、报文缓冲池单元、处理线程池单元以及调节单元,通讯连接池单元执行通讯连接池的建立、网络层的安全校验以及收发报文时对通讯连接池的调整分配等功能,报文缓冲池单元执行报文缓冲池的建立以及报文的缓存等功能,处理线程池单元执行处理线程池的建立以及调配线程等功能,调节单元执行与实时检测各个池的当前使用情况及调整各个池的大小相关的功能。只要能实现本发明的目的的模块划分,均应属于本发明的保护范围。
为了对上述报文流量控制方法及系统进行更为清楚的解释,下面结合具体的实施例对报文流量控制系统进行说明,然而值得注意的是该实施例仅是为了更好地说明本发明,并不构成对本发明不当的限定。
优选实施例一
在本优选实施例中,报文流量控制系统的结构图如图9所示,包括通讯连接池单元91、报文缓冲池单元92、处理线程池单元93、调节单元94和报文处理流程单元95。其中:
通讯连接池单元91,用于在系统初始化时,建立与外部系统进行报文交互的通讯连接,构成通讯连接池,包括建立收报通讯连接池和发报通讯连接池,连接类型包括:MQ、TCP/IP(Socket)、HTTP/HTTPS和FTP/SFTP,还用于与外部系统通讯安全的校验,即网络层的通讯安全校验。通讯连接建立好以后,纳入通讯连接池进行统一管理和调配。
报文缓冲池单元92,连接至通讯连接池单元91,用于系统初始化时在内存中建立收发报的缓冲池队列,待通讯连接池接收到报文后,将报文放入报文缓冲池中,等待处理线程池中的线程进行处理。
处理线程池单元93,连接至报文缓冲池单元92,用于在系统初始化时建立收发报的处理线程池,根据报文缓冲池中报文的数量情况,调配线程个数进行报文处理。
调节单元94,连接至通讯连接池单元91、报文缓冲池单元92和处理线程池单元93,用于对通讯连接池负荷情况、报文缓冲池负荷情况以及处理线程池的负荷情况进行检测,并根据检测结果对各个池的大小进行调节。具体的,当发现与外部系统交互的待处理报文较多时,实时调节通讯连接池的大小,增加通讯连接参与外部系统的交互,保证报文能够得到及时处理,避免出现堵报现象;当发现报文缓冲池中已排队待处理的报文较多时,实时调节报文缓冲池的大小,避免排队队列的溢出;当发现处理线程池中线程较繁忙时,实时调节处理线程池的大小,避免报文大量排队导致不能及时处理业务。
报文处理流程单元95,连接至处理线程池单元93,用于对报文进行数据处理,例如,报文解析、转换、数据加工等,相当于现有技术中普通的数据通讯系统中的报文数据加工处理过程。
调节单元94的结构图如图10所示,包括以下单元:
参数初始化单元9400,用于读取调节单元配置参数文件中的参数,包括:连接类型(MQ、TCP/IP(Socket)、HTTP/HTTPS、FTP/SFTP等)、通讯连接池调节的上下限阈值、报文缓冲池调节的上下限阈值、处理线程池调节的上下限阈值。
通讯连接池当前使用情况获取单元9401,连接至参数初始化单元9400,用于读取内存中通讯连接池的当前使用情况,包括:通讯连接池的深度、通讯连接池中已使用的连接数、通讯连接池中未使用的连接数等。
通讯连接池阈值判断单元9402,连接至通讯连接池当前使用情况获取单元9401,用于将参数初始化单元9400读取的通讯连接池调节的上下限阈值与通讯连接池当前使用情况获取单元9401获取的已使用的连接数(以下简称为当前值)进行比较。
通讯连接新增单元9403,连接至通讯连接池阈值判断单元9402,用于当通讯连接池阈值判断单元9402判断出当前值大于等于上限阈值时,对通讯连接池进行扩充,即进行通讯连接的新增,根据参数初始化单元9400中读取的连接类型,建立一个新的通讯连接。
通讯连接分配单元9404,连接至通讯连接池阈值判断单元9402,用于当通讯连接池阈值判断单元9402判断出当前值大于等于下限阈值且小于上限阈值时,直接从通讯连接池中分配一个通讯连接进行报文的收发处理。
通讯连接回收单元9405,连接至通讯连接池阈值判断单元9402,用于当通讯连接池阈值判断单元9402判断出当前值小于下限阈值时,将通讯连接池中未使用的通讯连接逐个进行回收,直到通讯连接池中的通讯连接总数等于下限阈值。
通讯连接状态更新单元9406,连接至通讯连接新增单元9403、通讯连接分配单元9404和通讯连接回收单元9405,用于将通讯连接新增单元9403新增的通讯连接的状态设为未使用,并更新通讯连接池的计数器,具体的,新增一个通讯连接,通讯连接总数计数器加1,未使用通讯连接的计数器加1;还用于将通讯连接分配单元9404中分配的通讯连接的状态更新为已使用,并更新通讯连接池的计数器,具体的,分配一个通讯连接,已使用通讯连接的计数器加1,未使用通讯连接的计数器减1;还用于在通讯连接回收单元9405回收通讯连接后,更新通讯连接池计数器,具体的,每回收1个通讯连接,通讯连接总数计数器减1,未使用通讯连接的计数器减1。
通讯交互单元9407,连接至通讯连接状态更新单元9406,用于调度通讯连接与外部系统通过MQ、TCP/IP(Socket)、HTTP/HTTPS或FTP/SFTP等连接方式进行报文的收发处理。
例如,初始建立时通讯连接池的深度为90,可以承受的最大深度为170。检测到的当前使用情况为:深度为90,已使用通讯连接个数为60,未使用通讯连接个数为30。调节的上限阈值为80,下限阈值为50。根据上述实施例的描述可知,已使用通讯连接个数60介于上下限阈值之间,因此,可以直接分配通讯连接进行报文的收发。如果已使用通讯连接个数为40,即小于下限阈值,则回收未使用的50个通讯连接中的40个通讯连接,使得通讯连接总数等于下限阈值,避免内存空间的浪费。如果已使用通讯连接个数为85个,即大于上限阈值,则新建通信连接,保证报文的收发不会出现堵塞。
报文缓冲池当前使用情况获取单元9408,连接至通讯交互单元9407,用于读取内存中报文缓冲池的当前使用情况,包括:报文缓冲池的深度、缓冲池队列中已使用的队列空间数、缓冲池队列中未使用的队列空间数等。
报文缓冲池阈值判断单元9409,连接至报文缓冲池当前使用情况获取单元9408,用于将参数初始化单元9400读取的报文缓冲池调节的上下限阈值与报文缓冲池当前使用情况获取单元9408获取的当前已使用的队列空间数(以下简称为当前值)进行比较。
缓冲池队列新增单元9410,连接至报文缓冲池阈值判断单元9409,用于当报文缓冲池阈值判断单元9409判断出当前值大于等于上限阈值时,对报文缓冲池进行扩充,即进行缓冲池队列或队列空间的新增。
缓冲池队列分配单元9411,连接至报文缓冲池阈值判断单元9409,用于当报文缓冲池阈值判断单元9409判断出当前值大于等于下限阈值且小于上限阈值时,直接从报文缓冲池中分配队列空间进行报文的存储。
缓冲池队列回收单元9412,连接至报文缓冲池阈值判断单元9409,用于当报文缓冲池阈值判断单元9409判断出当前值小于下限阈值时,将报文缓冲池中未使用的队列空间进行回收,直到报文缓冲池中的队列空间数等于下限阈值。
缓冲池队列状态更新单元9413,连接至缓冲池队列新增单元9410、缓冲池队列分配单元9411和缓冲池队列回收单元9412,用于将缓冲池队列新增单元9410新增的队列空间的状态设为未使用,并更新报文缓冲池的计数器,具体的,新增一个队列空间,队列空间总数计数器加1,未使用队列空间的计数器加1;还用于将缓冲队列分配单元9411分配的队列空间的状态为已使用,并更新报文缓冲池计数器,具体的,分配一个队列空间,已使用队列空间的计数器加1,未使用队列空间的计数器减1;还用于在缓冲池队列回收单元9412回收队列空间之后,更新报文缓冲池计数器,具体的,每回收一个队列空间,队列空间总数计数器减1,未使用队列空间的计数器减1。
报文置入单元9414,连接至缓冲池队列状态更新单元9413,用于将报文存储入缓冲池队列,等待线程的处理。
处理线程池触发单元9415,连接至报文置入单元9414,用于给置入缓冲池队列的报文调用一个空闲的线程进行处理。
处理线程池当前使用情况获取单元9416,连接至处理线程池触发单元9415,用于读取内存中处理线程池的当前使用情况,包括:处理线程池的深度、处理线程池中已使用的线程数、处理线程池中未使用的线程数等。
处理线程池阈值判断单元9417,连接至处理线程池当前使用情况获取单元9416,用于将参数初始化单元9400读取的处理线程池调节的上下限阈值与处理线程池当前使用情况获取单元9416获取的当前已使用的线程数(以下简称为当前值)进行比较。
线程新增单元9418,连接至处理线程池阈值判断单元9417,用于当处理线程池阈值判断单元9417判断出当前值大于等于上限阈值时,对处理线程池进行扩充,即进行线程的新增。
线程分配单元9419,连接至处理线程池阈值判断单元9417,用于当处理线程池阈值判断单元9417判断出当前值大于等于下限阈值且小于上限阈值时,直接从处理线程池中分配一个线程进行报文的处理。
线程回收单元9420,连接至处理线程池阈值判断单元9417,用于当处理线程池阈值判断单元9417判断出当前值小于下限阈值时,将处理线程池中未使用的线程逐个进行回收,直到处理线程池中的线程数等于下限阈值。
线程状态更新单元9421,连接至线程新增单元9418、线程分配单元9419和线程回收单元9420,用于将线程新增单元9418新增的线程的状态设为未使用,并更新处理线程池的计数器,具体的,新增一个线程,线程总数计数器加1,未使用线程的计数器加1;还用于将线程分配单元9419分配的线程的状态更新为已使用,并更新处理线程池计数器,具体的,分配一个线程,已使用线程的计数器加1,未使用线程的计数器减1;还用于在线程回收单元9420回收线程之后,更新处理线程池计数器,具体的,每回收一个线程,线程总数计数器减1,未使用线程的计数器减1。
报文业务逻辑处理单元9422,连接至线程状态更新单元9421,用于将报文按照业务逻辑进行报文核心业务的处理,并结束整个报文的处理流程。
本优选实施例以报文缓冲池包含一个缓冲池队列,线程处理池包含一个线程池队列为例进行说明。当然,报文缓冲池中可以建立多个队列,线程处理池中也可以建立多个队列,原理与一个队列相同,此处不再赘述。
优选实施例二
本优选实施例在优选实施例一的基础上,增加了具体使用过程中通讯连接池单元91、报文缓冲池单元92和处理线程池单元93分别对自身情况的判断与调整。例如,通讯连接池收发报文时对可用的通讯连接进行判断,以新增或分配通讯连接;报文缓冲池在缓存报文时对可用的缓冲池队列空间进行判断,以新增或分配缓冲池队列空间;处理线程池在处理报文时对可用的线程进行判断,以新增或分配线程。由此,通过宏观上对三个池之间的实时检测与调整以及在具体使用过程中的调整,进一步保证了不会出现报文堵塞的情况。
通讯连接池单元91的结构如图11所示,包括:参数初始化单元911、通讯连接池建立单元912、通讯阻塞(待外部连接)单元913、分配通讯连接单元914和通讯连接归还单元915。其中:
参数初始化单元911,用于读取通讯连接池参数配置文件中的参数,包括连接类型(MQ、TCP/IP(Socket)、HTTP/HTTPS、FTP/SFTP)、通讯连接池的初始最大值与初始最小值等。
通讯连接池建立单元912,连接至参数初始化单元911,用于根据读取的通讯连接池配置参数,按照初始最小值建立对应连接类型的通讯连接池。
通讯阻塞(待外部连接)单元913,连接至通讯连接池建立单元912,用于在通讯连接池建立好之后,通过阻塞的方式等待与外部系统通讯连接进行连接,待外部系统连接过来以后,交给通讯连接池分配通讯连接。
分配通讯连接单元914,连接至通讯阻塞(待外部连接)单元913,用于接收到外部系统的连接后,判断通讯连接池中是否存在可以使用的通讯连接,如果存在可以使用的通讯连接,则直接分配通讯连接进行报文收发处理,如果不存在可以使用的通讯连接,则需要新增通讯连接,再分配该通讯连接与外部系统通过某种连接类型进行报文收发处理。
通讯连接归还单元915,连接至分配通讯连接单元914,用于在使用通讯连接对报文收发处理完毕后,将使用的通讯连接归还到通讯连接池中,以便下一次通讯交互使用。
报文缓冲池单元92的结构图如图12所示,包括:参数初始化单元921、报文缓冲池建立单元922、报文缓冲池分配单元923、报文推送单元924和报文缓冲池清理单元925。其中:
参数初始化单元921,用于读取报文缓冲池参数配置文件中的参数,包括系统初始化时建立的报文缓冲池的最大值和最小值(即报文缓冲池初始最小值和初始最大值)、报文缓冲池清理时间等。
报文缓冲池建立单元922,连接至参数初始化单元921,用于根据参数初始化单元921获取的参数在内存中建立缓冲池队列,队列的深度为报文缓冲池初始最小值。
报文缓冲池分配单元923,连接至报文缓冲池建立单元922,用于将通讯连接池中的通讯连接接收的报文存入报文缓冲池的队列中。如果缓冲池队列存在可用的空闲空间,则分配一个空间存储报文,否则扩充缓冲池队列的深度后,再将报文存入队列,等待调用线程处理该报文。
报文推送单元924,连接至报文缓冲池分配单元923,用于将缓冲池队列中的报文推送给处理线程池,以分配线程处理该报文,推送机制采用先进先出(First In FirstOut,FIFO)原则。
报文缓冲池清理单元925,连接至报文推送单元924,用于将报文推送单元924推送的报文进行清理。
处理线程池单元93的结构图如图13所示,包括:参数初始化单元931、处理线程池建立单元932、线程分配单元933、线程业务逻辑处理单元934和线程归还单元935。其中:
参数初始化单元931,用于读取处理线程池参数配置文件中的参数,包括系统初始化时建立的处理线程池的最大值和最小值(即处理线程池初始最小值和初始最大值)、处理线程池清理时间等。
处理线程池建立单元932,连接至参数初始化单元931,用于根据参数初始化单元931获取的参数在内存中建立线程池队列,队列的深度为处理线程池初始最小值。
分配线程单元933,连接至处理线程池建立单元932,用于给报文缓冲池的报文推送单元924推送的报文分配线程。如果线程池队列存在可用的空闲的线程,则分配一个线程处理报文,否则扩充线程池的线程后,再给该报文分配线程。
线程业务逻辑处理单元934,连接至分配线程单元933,用于对报文按照业务逻辑进行报文核心业务的处理,并将处理后的报文推送给报文处理流程单元95进行数据加工处理,如果是交易报文,还负责与账务核心系统进行交付。
线程归还单元935,连接至线程业务逻辑处理单元934,负责将线程业务逻辑处理单元934处理结束后的线程进行归还,将线程占用的内存等资源进行释放。
本优选实施例中,对各个池中的元素进行新增、分配或归还之后,也需要更新对应元素的状态以及对应池的计数器。
优选实施例三
本优选实施例与优选实施例一及优选实施例二相比,不同之处在于,调节单元94不包括通讯交互单元9407、报文置入缓冲池队列单元9414、处理线程池触发单元9415和报文业务逻辑处理单元9422,即调节单元94仅执行实时检测与调节的操作。通讯交互单元9407的功能可以由通讯连接池单元91实现,报文置入缓冲池队列单元9414和处理线程池触发单元9415的功能可以由报文缓冲池单元92实现,报文业务逻辑处理单元9422的功能可以由处理线程池单元93实现。在优选实施例一中,三个池的当前使用情况的实时检测与调整是依次进行,本优选实施例中,三个池的当前使用情况的实时检测与调整是同时进行,参见图7,对各个池的当前使用情况进行实时检测的模块之间无连接关系。
举例而言,对于交易系统,当大量交易并发时,会导致不可预知的交易堵塞、交易缓慢甚至系统宕机,采用本发明的技术方案,自适应地对通讯连接池中的通讯连接个数、报文缓冲池中缓冲池队列的深度或缓冲池队列的个数以及处理线程池中的线程个数进行动态增加,可以避免交易堵塞等问题。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种报文流量控制方法,其特征在于,包括:
建立通讯连接池、报文缓冲池和处理线程池,其中,所述通讯连接池存储与外部系统进行报文交互的通讯连接,所述报文缓冲池存储利用所述通讯连接收发的报文,所述处理线程池存储用于处理所述报文的线程;
实时检测所述通讯连接池、所述报文缓冲池和所述处理线程池的当前使用情况;
根据所述通讯连接池的当前使用情况调整所述通讯连接池的大小,根据所述报文缓冲池的当前使用情况调整所述报文缓冲池的大小以及根据所述处理线程池的当前使用情况调整所述处理线程池的大小;
使用所述通讯连接池中的通讯连接收发所述报文,使用所述报文缓冲池缓存所述报文以及使用所述处理线程池中的线程处理所述报文。
2.根据权利要求1所述的方法,其特征在于,建立通讯连接池包括:
在系统初始化时,读取所述通讯连接池的配置参数,其中,所述通讯连接池的配置参数包括:连接类型、所述通讯连接池的初始最大值和所述通讯连接池的初始最小值,所述连接类型包括:消息队列MQ、传输控制协议/因特网互联协议TCP/IP、超文本传输协议/安全超文本传输协议HTTP/HTTPS和文件传输协议/安全文件传输协议FTP/SFTP;
根据所述通讯连接池的配置参数建立对应于不同连接类型的通讯连接池,其中,所述通讯连接池的深度为所述通讯连接池的初始最小值。
3.根据权利要求1所述的方法,其特征在于,建立报文缓冲池包括:
在系统初始化时,读取所述报文缓冲池的配置参数,其中,所述报文缓冲池的配置参数包括:所述报文缓冲池的初始最大值、所述报文缓冲池的初始最小值和所述报文缓冲池的清理时间;
根据所述报文缓冲池的配置参数建立缓冲池队列,构成所述报文缓冲池,其中,所述缓冲池队列的深度为所述报文缓冲池的初始最小值。
4.根据权利要求1所述的方法,其特征在于,建立处理线程池包括:
在系统初始化时,读取所述处理线程池的配置参数,其中,所述处理线程池的配置参数包括:所述处理线程池的初始最大值、所述处理线程池的初始最小值和所述处理线程池的清理时间;
根据所述处理线程池的配置参数建立线程池队列,构成所述处理线程池,其中,所述线程池队列的深度为所述处理线程池的初始最小值。
5.根据权利要求1所述的方法,其特征在于,实时检测所述通讯连接池的当前使用情况,并根据所述通讯连接池的当前使用情况调整所述通讯连接池的大小包括:
获取所述通讯连接池的调节参数和所述通讯连接池中通讯连接的当前使用情况,其中,所述通讯连接池的调节参数包括:连接类型、所述通讯连接池调节的第一上限阈值和第一下限阈值,所述通讯连接的当前使用情况包括:所述通讯连接池的深度、已使用的通讯连接数和未使用的通讯连接数;
比较所述已使用的通讯连接数以及所述第一上限阈值和所述第一下限阈值;
如果所述已使用的通讯连接数大于等于所述第一上限阈值,则对所述通讯连接池进行扩充;
如果所述已使用的通讯连接数小于所述第一下限阈值,则对所述通讯连接池中未使用的通讯连接进行回收,直到所述通讯连接池中的通讯连接数等于所述第一下限阈值;
如果所述已使用的通讯连接数大于等于所述第一下限阈值且小于所述第一上限阈值,则直接从所述通讯连接池中分配通讯连接进行报文的收发。
6.根据权利要求1所述的方法,其特征在于,实时检测所述报文缓冲池的当前使用情况,并根据所述报文缓冲池的当前使用情况调整所述报文缓冲池的大小包括:
获取所述报文缓冲池的调节参数和所述报文缓冲池中缓冲池队列的当前使用情况,其中,所述报文缓冲池的调节参数包括:所述报文缓冲池调节的第二上限阈值和第二下限阈值,所述缓冲池队列的当前使用情况包括:所述缓冲池队列的深度、已使用的队列空间数和未使用的队列空间数;
比较所述已使用的队列空间数以及所述第二上限阈值和所述第二下限阈值;
如果所述已使用的队列空间数大于等于所述第二上限阈值,则对所述报文缓冲池进行扩充;
如果所述已使用的队列空间数小于所述第二下限阈值,则对所述报文缓冲池中未使用的队列空间进行回收,直到所述报文缓冲池中的队列空间数等于所述第二下限阈值;
如果所述已使用的队列空间数大于等于所述第二下限阈值且小于所述第二上限阈值,则直接从所述报文缓冲池中分配队列空间进行报文的缓存。
7.根据权利要求1所述的方法,其特征在于,实时检测所述处理线程池的当前使用情况,并根据所述处理线程池的当前使用情况调整所述处理线程池的大小包括:
获取所述处理线程池的调节参数和所述处理线程池中线程池队列的当前使用情况,其中,所述处理线程池的调节参数包括:所述处理线程池调节的第三上限阈值和第三下限阈值,所述线程池队列的当前使用情况包括:所述线程池队列的深度、已使用的线程数和未使用的线程数;
比较所述已使用的线程数以及所述第三上限阈值和所述第三下限阈值;
如果所述已使用的线程数大于等于所述第三上限阈值,则对所述处理线程池进行扩充;
如果所述已使用的线程数小于所述第三下限阈值,则对所述处理线程池中未使用的线程进行回收,直到所述处理线程池中的线程数等于所述第三下限阈值;
如果所述已使用的线程数大于等于所述第三下限阈值且小于所述第三上限阈值,则直接从所述处理线程池中分配线程进行报文的处理。
8.根据权利要求1至7中任一项所述的方法,其特征在于,在调整所述通讯连接池的大小,调整所述报文缓冲池的大小以及调整所述处理线程池的大小之后,所述方法还包括:
更新所述通讯连接的状态、所述缓冲池队列中队列空间的状态和所述线程池队列中线程的状态,以及更新所述通讯连接池的计数器、所述报文缓冲池的计数器和所述处理线程池的计数器。
9.根据权利要求1至7中任一项所述的方法,其特征在于,使用所述通讯连接池中的通讯连接收发所述报文,使用所述报文缓冲池缓存所述报文以及使用所述处理线程池中的线程处理所述报文包括:
接收到所述外部系统的连接后,判断所述通讯连接池中是否存在可使用的通讯连接;如果存在可使用的通讯连接,则分配通讯连接执行与所述外部系统之间的报文收发;如果不存在可使用的通讯连接,则建立新的通讯连接;
判断所述报文缓冲池中是否存在可使用的队列空间;如果存在可使用的队列空间,则分配所述可使用的队列空间存储所述通讯连接收发的报文;如果不存在可使用的队列空间,则对所述报文缓冲池中的缓冲池队列的深度进行扩充或建立新的缓冲池队列;
在所述报文缓冲池向所述处理线程池推送报文之后,判断所述处理线程池的线程池队列中是否存在可使用的线程;如果存在可使用的线程,则分配所述可使用的线程处理所述报文缓冲池推送的报文;如果不存在可使用的线程,则建立新的线程或建立新的线程池队列。
10.根据权利要求9所述的方法,其特征在于,
在使用所述通讯连接池中的通讯连接收发所述报文之后,将使用的通讯连接归还到所述通讯连接池中;
在使用所述报文缓冲池缓存所述报文之后,将所述报文推送给所述处理线程池进行报文处理,删除所述缓冲池队列中已被推送的报文;
在使用所述处理线程池中的线程处理所述报文之后,将使用的线程归还到所述处理线程池中,释放所述线程占用的资源。
11.一种报文流量控制系统,其特征在于,包括:
建立单元,用于建立通讯连接池、报文缓冲池和处理线程池,其中,所述通讯连接池用于存储与外部系统进行报文交互的通讯连接;所述报文缓冲池用于存储所述通讯连接收发的报文;所述处理线程池用于存储处理所述报文的线程;
检测单元,用于实时检测所述通讯连接池、所述报文缓冲池和所述处理线程池的当前使用情况;
调整单元,用于根据所述通讯连接池的当前使用情况调整所述通讯连接池的大小,根据所述报文缓冲池的当前使用情况调整所述报文缓冲池的大小以及根据所述处理线程池的当前使用情况调整所述处理线程池的大小;
控制单元,用于使用所述通讯连接池中的通讯连接收发所述报文,使用所述报文缓冲池缓存所述报文以及使用所述处理线程池中的线程处理所述报文。
12.根据权利要求11所述的系统,其特征在于,所述建立单元包括:
第一读取模块,用于在系统初始化时读取所述通讯连接池的配置参数,其中,所述通讯连接池的配置参数包括:连接类型、所述通讯连接池的初始最大值和所述通讯连接池的初始最小值,所述连接类型包括:消息队列MQ、传输控制协议/因特网互联协议TCP/IP、超文本传输协议/安全超文本传输协议HTTP/HTTPS和文件传输协议/安全文件传输协议FTP/SFTP;
第一建立模块,用于根据所述通讯连接池的配置参数建立对应于不同连接类型的通讯连接池,其中,所述通讯连接池的深度为所述通讯连接池的初始最小值。
13.根据权利要求11所述的系统,其特征在于,所述建立单元包括:
第二读取模块,用于在系统初始化时读取所述报文缓冲池的配置参数,其中,所述报文缓冲池的配置参数包括:所述报文缓冲池的初始最大值、所述报文缓冲池的初始最小值和所述报文缓冲池的清理时间;
第二建立模块,用于根据所述报文缓冲池的配置参数建立缓冲池队列,构成所述报文缓冲池,其中,所述缓冲池队列的深度为所述报文缓冲池的初始最小值。
14.根据权利要求11所述的系统,其特征在于,所述建立单元包括:
第三读取模块,用于在系统初始化时读取所述处理线程池的配置参数,其中,所述处理线程池的配置参数包括:所述处理线程池的初始最大值、所述处理线程池的初始最小值和所述处理线程池的清理时间;
第三建立模块,用于根据所述处理线程池的配置参数建立线程池队列,构成所述处理线程池,其中,所述线程池队列的深度为所述处理线程池的初始最小值。
15.根据权利要求11所述的系统,其特征在于,
所述检测单元包括:
第一获取模块,用于获取所述通讯连接池的调节参数和所述通讯连接池中通讯连接的当前使用情况,其中,所述通讯连接池的调节参数包括:连接类型、所述通讯连接池调节的第一上限阈值和第一下限阈值,所述通讯连接的当前使用情况包括:所述通讯连接池的深度、已使用的通讯连接数和未使用的通讯连接数;
第一比较模块,用于比较所述已使用的通讯连接数以及所述第一上限阈值和所述第一下限阈值;
所述调整单元包括:
第一调整模块,用于在所述已使用的通讯连接数大于等于所述第一上限阈值的情况下,对所述通讯连接池进行扩充;在所述已使用的通讯连接数小于所述第一下限阈值的情况下,对所述通讯连接池中未使用的通讯连接进行回收,直到所述通讯连接池中的通讯连接数等于所述第一下限阈值;
第一分配模块,用于在所述已使用的通讯连接数大于等于所述第一下限阈值且小于所述第一上限阈值的情况下,直接从所述通讯连接池中分配通讯连接进行报文的收发。
16.根据权利要求11所述的系统,其特征在于,
所述检测单元包括:
第二获取模块,用于获取所述报文缓冲池的调节参数和所述报文缓冲池中缓冲池队列的当前使用情况,其中,所述报文缓冲池的调节参数包括:所述报文缓冲池调节的第二上限阈值和第二下限阈值,所述缓冲池队列的当前使用情况包括:所述缓冲池队列的深度、已使用的队列空间数和未使用的队列空间数;
第二比较模块,用于比较所述已使用的队列空间数以及所述第二上限阈值和所述第二下限阈值;
所述调整单元包括:
第二调整模块,用于在所述已使用的队列空间数大于等于所述第二上限阈值的情况下,对所述报文缓冲池进行扩充;在所述已使用的队列空间数小于所述第二下限阈值的情况下,对所述报文缓冲池中未使用的队列空间进行回收,直到所述报文缓冲池中的队列空间数等于所述第二下限阈值;
第二分配模块,用于在所述已使用的队列空间数大于等于所述第二下限阈值且小于所述第二上限阈值的情况下,直接从所述报文缓冲池中分配队列空间进行报文的缓存。
17.根据权利要求11所述的系统,其特征在于,
所述检测单元包括:
第三获取模块,用于获取所述处理线程池的调节参数和所述处理线程池中线程池队列的当前使用情况,其中,所述处理线程池的调节参数包括:所述处理线程池调节的第三上限阈值和第三下限阈值,所述线程池队列的当前使用情况包括:所述线程池队列的深度、已使用的线程数和未使用的线程数;
第三比较模块,用于比较所述已使用的线程数以及所述第三上限阈值和所述第三下限阈值;
所述调整单元包括:
第三调整模块,用于在所述已使用的线程数大于等于所述第三上限阈值的情况下,对所述处理线程池进行扩充;在所述已使用的线程数小于所述第三下限阈值的情况下,对所述处理线程池中未使用的线程进行回收,直到所述处理线程池中的线程数等于所述第三下限阈值;
第三分配模块,用于在所述已使用的线程数大于等于所述第三下限阈值且小于所述第三上限阈值的情况下,直接从所述处理线程池中分配线程进行报文的处理。
18.根据权利要求11至17中任一项所述的系统,其特征在于,所述调整单元还包括:
更新模块,用于更新所述通讯连接的状态、所述缓冲池队列中队列空间的状态和所述线程池队列中线程的状态,以及更新所述通讯连接池的计数器、所述报文缓冲池的计数器和所述处理线程池的计数器。
19.根据权利要求11至17中任一项所述的系统,其特征在于,所述控制单元包括:
第一控制模块,用于接收到所述外部系统的连接后,判断所述通讯连接池中是否存在可使用的通讯连接;如果存在可使用的通讯连接,则分配通讯连接执行与所述外部系统之间的报文收发;如果不存在可使用的通讯连接,则建立新的通讯连接;
第二控制模块,用于判断所述报文缓冲池中是否存在可使用的队列空间;如果存在可使用的队列空间,则分配所述可使用的队列空间存储所述通讯连接收发的报文;如果不存在可使用的队列空间,则对所述报文缓冲池中的缓冲池队列的深度进行扩充或建立新的缓冲池队列;
第三控制模块,用于在所述报文缓冲池向所述处理线程池推送报文之后,判断所述处理线程池的线程池队列中是否存在可使用的线程;如果存在可使用的线程,则分配所述可使用的线程处理所述报文缓冲池推送的报文;如果不存在可使用的线程,则建立新的线程或建立新的线程池队列。
20.根据权利要求19所述的系统,其特征在于,所述控制单元还包括:
通讯连接归还模块,用于在使用所述通讯连接池中的通讯连接收发所述报文之后,将使用的通讯连接归还到所述通讯连接池中;
报文缓冲池清理模块,用于在使用所述报文缓冲池缓存所述报文,并将所述报文推送给所述处理线程池进行报文处理之后,删除所述缓冲池队列中已被推送的报文;
线程归还模块,用于在使用所述处理线程池中的线程处理所述报文之后,将使用的线程归还到所述处理线程池中,释放所述线程占用的资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410273258.9A CN104038439B (zh) | 2014-06-18 | 2014-06-18 | 报文流量控制方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410273258.9A CN104038439B (zh) | 2014-06-18 | 2014-06-18 | 报文流量控制方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104038439A true CN104038439A (zh) | 2014-09-10 |
CN104038439B CN104038439B (zh) | 2017-05-24 |
Family
ID=51469031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410273258.9A Active CN104038439B (zh) | 2014-06-18 | 2014-06-18 | 报文流量控制方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104038439B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105427057A (zh) * | 2015-12-22 | 2016-03-23 | 黑龙江盛世达仁科技开发有限责任公司 | 一种用于辅助节水增粮的系统及方法 |
CN106101018A (zh) * | 2016-06-07 | 2016-11-09 | 北京赛思信安技术股份有限公司 | 一种面向分布式海量数据加载系统的可靠数据发送方法 |
CN106775984A (zh) * | 2016-12-26 | 2017-05-31 | 锐捷网络股份有限公司 | 一种管理线程池的方法和装置 |
CN110401635A (zh) * | 2019-06-28 | 2019-11-01 | 国网安徽省电力有限公司电力科学研究院 | 一种内外网隔离穿透设计方法 |
US10560396B2 (en) | 2017-10-04 | 2020-02-11 | International Business Machines Corporation | Dynamic buffer allocation in similar infrastructures |
CN111324644A (zh) * | 2018-11-28 | 2020-06-23 | 中国移动通信集团浙江有限公司 | 大型微服务架构下的数据库连接风暴的监控方法及装置 |
CN112540852A (zh) * | 2020-12-21 | 2021-03-23 | 武汉光庭信息技术股份有限公司 | 一种地图数据下载方法、系统、终端设备及存储介质 |
CN113722117A (zh) * | 2020-11-10 | 2021-11-30 | 北京沃东天骏信息技术有限公司 | 消息队列处理方法、线程池参数调整方法、装置和设备 |
WO2021258696A1 (zh) * | 2020-06-24 | 2021-12-30 | 珠海格力电器股份有限公司 | 通信数据处理方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040088413A1 (en) * | 2002-11-04 | 2004-05-06 | Bhogi Sankara R. | Dynamically configurable resource pool |
CN101477568A (zh) * | 2009-02-12 | 2009-07-08 | 清华大学 | 一种结构化数据和非结构化数据综合检索的方法 |
CN101799751A (zh) * | 2009-12-02 | 2010-08-11 | 山东浪潮齐鲁软件产业股份有限公司 | 一种构建主机监控代理软件的方法 |
CN103237059A (zh) * | 2013-04-02 | 2013-08-07 | 西安翔迅科技有限责任公司 | 交通信息数据与命令交互方法 |
-
2014
- 2014-06-18 CN CN201410273258.9A patent/CN104038439B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040088413A1 (en) * | 2002-11-04 | 2004-05-06 | Bhogi Sankara R. | Dynamically configurable resource pool |
CN101477568A (zh) * | 2009-02-12 | 2009-07-08 | 清华大学 | 一种结构化数据和非结构化数据综合检索的方法 |
CN101799751A (zh) * | 2009-12-02 | 2010-08-11 | 山东浪潮齐鲁软件产业股份有限公司 | 一种构建主机监控代理软件的方法 |
CN103237059A (zh) * | 2013-04-02 | 2013-08-07 | 西安翔迅科技有限责任公司 | 交通信息数据与命令交互方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105427057A (zh) * | 2015-12-22 | 2016-03-23 | 黑龙江盛世达仁科技开发有限责任公司 | 一种用于辅助节水增粮的系统及方法 |
CN106101018A (zh) * | 2016-06-07 | 2016-11-09 | 北京赛思信安技术股份有限公司 | 一种面向分布式海量数据加载系统的可靠数据发送方法 |
CN106775984B (zh) * | 2016-12-26 | 2020-01-21 | 锐捷网络股份有限公司 | 一种管理线程池的方法和装置 |
CN106775984A (zh) * | 2016-12-26 | 2017-05-31 | 锐捷网络股份有限公司 | 一种管理线程池的方法和装置 |
US10735343B2 (en) | 2017-10-04 | 2020-08-04 | International Business Machines Corporation | Dynamic buffer allocation in similar infrastructures |
US10560396B2 (en) | 2017-10-04 | 2020-02-11 | International Business Machines Corporation | Dynamic buffer allocation in similar infrastructures |
US10567305B2 (en) | 2017-10-04 | 2020-02-18 | International Business Machines Corporation | Dynamic buffer allocation in similar infrastructures |
US10735342B2 (en) | 2017-10-04 | 2020-08-04 | International Business Machines Corporation | Dynamic buffer allocation in similar infrastructures |
CN111324644A (zh) * | 2018-11-28 | 2020-06-23 | 中国移动通信集团浙江有限公司 | 大型微服务架构下的数据库连接风暴的监控方法及装置 |
CN111324644B (zh) * | 2018-11-28 | 2023-10-27 | 中国移动通信集团浙江有限公司 | 大型微服务架构下的数据库连接风暴的监控方法及装置 |
CN110401635A (zh) * | 2019-06-28 | 2019-11-01 | 国网安徽省电力有限公司电力科学研究院 | 一种内外网隔离穿透设计方法 |
WO2021258696A1 (zh) * | 2020-06-24 | 2021-12-30 | 珠海格力电器股份有限公司 | 通信数据处理方法、装置、计算机设备和存储介质 |
CN113722117A (zh) * | 2020-11-10 | 2021-11-30 | 北京沃东天骏信息技术有限公司 | 消息队列处理方法、线程池参数调整方法、装置和设备 |
CN112540852A (zh) * | 2020-12-21 | 2021-03-23 | 武汉光庭信息技术股份有限公司 | 一种地图数据下载方法、系统、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104038439B (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104038439A (zh) | 报文流量控制方法及系统 | |
CN111127293B (zh) | 用于处理数据的方法、设备和计算机程序产品 | |
US10091215B1 (en) | Client isolation in a distributed queue | |
CN111258737B (zh) | 一种资源调度的方法、装置和过滤式调度器 | |
CN103166933B (zh) | 一种数据安全交换系统及方法 | |
JP2020525895A (ja) | ブロックチェーンネットワークにおける効率的な伝播のための確率的リレー | |
CN104079630A (zh) | 一种业务服务端负载均衡方法、客户端、服务端以及系统 | |
CN108306717B (zh) | 数据传输方法、服务器及存储介质 | |
CN105190558A (zh) | 云资源的加速实例化 | |
CN104468407A (zh) | 实现业务平台资源弹性分配的方法与装置 | |
CN102301664B (zh) | 多核处理器的流分发方法及装置 | |
CN103069406A (zh) | 对于多个客户机管理流媒体带宽 | |
CN102714610A (zh) | 非阻塞准入控制 | |
CN102447610A (zh) | 实现报文缓存资源共享的方法和装置 | |
Tran et al. | Optimal mapping of virtual networks considering reactive reconfiguration | |
CN104182282A (zh) | 一种服务器过载保护系统及方法 | |
CN110011843A (zh) | 告警信息处理方法、电子设备和存储介质 | |
CN110858986A (zh) | 带宽调整方法、装置、通信设备及计算机可读存储介质 | |
CN112398945A (zh) | 一种基于背压的业务处理方法及装置 | |
CN104298565A (zh) | 一种初始化端口的方法及装置 | |
CN104780118B (zh) | 一种基于令牌的流控方法及装置 | |
US10044632B2 (en) | Systems and methods for adaptive credit-based flow | |
CN102611630A (zh) | 一种报文接收控制方法及系统 | |
CN102143053B (zh) | 传输数据的方法、装置和系统 | |
CN112769639B (zh) | 一种并行下发配置信息的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |