CN115016952B - 一种基于服务调用端的动态扩缩容方法及系统 - Google Patents
一种基于服务调用端的动态扩缩容方法及系统 Download PDFInfo
- Publication number
- CN115016952B CN115016952B CN202210952934.XA CN202210952934A CN115016952B CN 115016952 B CN115016952 B CN 115016952B CN 202210952934 A CN202210952934 A CN 202210952934A CN 115016952 B CN115016952 B CN 115016952B
- Authority
- CN
- China
- Prior art keywords
- thread pool
- java
- transaction
- thread
- monitoring rule
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/504—Resource capping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Abstract
本发明涉及一种基于服务调用端的动态扩缩容方法,包括如下步骤:S1:进行监控规则参数的配置并保存至数据库中;S2:通过Redis统计采集交易结果,采用监控线程对交易结果进行异步分析,并将分析结果与监控规则参数进行比对;S3:调用端根据比对结果进行扩容或缩容处理。本发明提供的基于服务调用端的动态扩缩容方法,通过监控线程分析各项采集指标,根据分析结果与系统设置的预设监控规则参数比对,当符合条件时调用端自动进行扩容或缩容处理,不需要额外的人工干预。系统的各项预设监控规则参数统一管理,修改监控规则参数后实时生效,保证请求能够正常及时处理,同时又能充分利用服务端的系统资源。
Description
技术领域
本发明涉及服务调用端的扩缩容技术领域,具体涉及一种基于服务调用端的动态扩缩容方法及系统。
背景技术
应用部署一般根据请求流量、单台服务器承压流量、关键接口响应时间和压力测试等指标评估出需要部署的服务器数量、需要设置的数据库连接池大小以及需要初始化的核心线程数和最大线程数,通常这些参数设定后系统处理能力如果在期望的范围内一般不会对应用部署和参数设置做太大的调整。
如果服务端繁忙时有可能造成调用方的请求超时、处理异常或者请求被拒绝等现象出现,当服务端空闲时如果没有太多的调用请求进来也会造成服务端的资源利用率不高,产生这两种情况的原因是调用端没有根据服务端的处理情况对发往服务端的请求做合理的流量控制,缺少基于服务调用端的动态扩容和缩容机制。
发明内容
针对现有技术的不足,本发明提供了一种基于服务调用端的动态扩缩容方法,通过监控线程分析各项采集指标,根据分析结果与系统设置的预设监控规则参数比对,当符合条件时调用端自动进行扩容或缩容处理,不需要额外的人工干预。系统的各项预设监控规则参数统一管理,修改监控规则参数后实时生效,保证请求能够正常及时处理,同时又能充分利用服务端的系统资源。
为了实现本发明的目的,本发明提供一种基于服务调用端的动态扩缩容方法,包括如下步骤:
S1:进行监控规则参数的配置并保存至数据库中;
S2:通过Redis统计采集交易结果,采用监控线程对交易结果进行异步分析,并将分析结果与监控规则参数进行比对;
S3:调用端根据比对结果进行扩容或缩容处理。
优选地,所述监控规则参数包括:
业务类型、统计时间、最小统计数、失败率、异常率、消息堆积数和响应时间。
优选地,所述步骤S2中对交易结果进行异步分析具体包括:
采用监控线程对Redis采集的交易结果进行异步分析,通过Kafka消息队列异步处理被JAVA线程池所拒绝的交易请求。
优选地,所述步骤S2中通过Kafka消息队列异步处理被JAVA线程池所拒绝的交易请求的具体步骤为:
对进入JAVA线程池中的交易请求进行判定,当JAVA线程池中的核心线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建核心线程进行交易请求的执行;
当JAVA线程池中的线程池队列已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池将该交易请求放入线程池队列中进行执行;
当JAVA线程池中的最大线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建非核心线程来对交易请求进行执行;
将核心线程、线程池队列以及最大线程所拒绝的交易请求放入Kafka消息队列中,并通过Kafka消息列队进行异步处理。
优选地,所述步骤S3具体包括:
调用端根据交易结果和监控规则参数的比对结果,调节JAVA线程池的参数来控制调用端发往服务端的请求并发量来进行扩容或缩容处理。
优选地,所述步骤S3中调节JAVA线程池的参数来进行扩容或缩容处理具体包括:
当采集的交易结果的数值大于监控规则参数的第一预设值时,减少JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行缩容处理;
当采集的交易结果的数值小于监控规则参数的第一预设值时,增加JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行扩容处理。
优选地,本发明还提供了一种基于服务调用端的动态扩缩容方法系统,包括:
监控管理模块:进行监控规则参数的配置以及通过Redis统计采集交易结果;
监控执行模块:对交易结果进行异步分析,并将分析后的结果与配置的监控规则参数进行比对;
调用模块:根据分析后的结果与配置的监控规则参数比对的结果进行扩容或缩容处理。
优选地,所述监控管理模块包括:
参数配置模块:对监控规则参数进行配置并保存在数据库中;
其中监控规则参数包括:业务类型、统计时间、最小统计数、失败率、异常率、消息堆积数和响应时间;
数据管理模块:统计采集交易结果并对采集交易结果进行读取。
优选地,述监控执行模块包括:
分析模块:对Redis采集的交易结果进行分析并将分析结果进行汇总,根据汇总结果与所配置的监控规则参数进行数据比对;
处理模块:通过Kafka消息队列异步处理被JAVA线程池所拒绝的交易请求,对进入JAVA线程池中的交易请求进行判定,当JAVA线程池中的核心线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建核心线程进行交易请求的执行;
当JAVA线程池中的线程池队列已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池将该交易请求放入线程池队列中进行执行;
当JAVA线程池中的最大线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建非核心线程来对交易请求进行执行;
将核心线程、线程池队列以及最大线程所拒绝的交易请求翻入Kafka消息队列中,并通过Kafka消息列队进行异步处理。
优选地,所述调用模块进行扩容或缩容处理的步骤具体包括:
当采集的交易结果的数值大于监控规则参数的第一预设值时,减少JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行缩容处理;
当采集的交易结果的数值小于监控规则参数的第一预设值时,增加JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行扩容处理。
本发明的有益效果为:本发明提供的基于服务调用端的动态扩缩容方法,通过监控线程分析各项采集指标,根据分析结果与系统设置的预设监控规则参数比对,当符合条件时调用端自动进行扩容或缩容处理,不需要额外的人工干预。系统的各项预设监控规则参数统一管理,修改监控规则参数后实时生效,保证请求能够正常及时处理,同时又能充分利用服务端的系统资源。
附图说明
通过附图中所示的本发明优选实施例更具体说明,本发明上述及其它目的、特征和优势将变得更加清晰。在全部附图中相同的附图标记指示相同的部分,且并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本的主旨。
图1为本发明实施例提供的基于服务调用端的动态扩缩容方法的具体流程图;
图2为本发明实施例提供的监控规则参数的示意图;
图3为本发明实施例提供的交易请求数据采集和处理的示意图;
图4为本发明实施例提供的基于服务调用端的动态扩缩容系统中各个模块之间的具体流程图。
具体实施方式
下面结合附图和具体实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
请参考图1-4,本发明实施例提供一种基于服务调用端的动态扩缩容方法,包括如下步骤:
S1:进行监控规则参数的配置并保存至数据库中;
S2:通过Redis统计采集交易结果,采用监控线程对交易结果进行异步分析,并将分析结果与监控规则参数进行比对;
S3:调用端根据比对结果进行扩容或缩容处理。
本发明是基于JAVA线程池、Redis和Kafka消息中间件实现,先对监控规则参数进行配置,然后采用Redis Incr指令统计采集交易结果,如成功数量、失败数量、超时数量、平均响应时间和其他异常情况数据记录等,然后启动监控线程根据采集结果准实时异步分析交易情况,如交易失败率、超时率、响应时间和Kafka消息队列堆积数等指标,利用分析的结果与系统预设的监控规则参数进行比对,然后调用端根据所比对的结果自动进行扩容或缩容处理,使调用端的请求流量和服务端的负载充分匹配。
本发明主要通过修改调用端调用服务端线程池的线程数大小进行动态扩容或者缩容,以支付系统对发往第三方支付通道的代收和代付请求进行动态扩缩容为例进行说明,当第三方支付通道服务压力过大造成调用端超时或者异常时,支付系统可根据情况进行缩容处理,反之进行扩容处理。
本发明的有益效果为:根据异步分析的采集交易结果和配置好的监控规则参数之间的比对结果,调用端根据比对结果的数据自动进行扩容后缩容处理,不需要额外的人工干预,当服务端应用繁忙时调用端根据采集数据分析结果降低客户端的请求量减轻服务端的处理压力,避免服务端压力过大甚至造成宕机的情况出现,当服务端应用空闲时调用端根据采集数据分析结果增加调户端的请求量,使服务端的应用资源能够得到充分利用,同时服务调用端能够得到更快的响应速度以及更高的处理能力。
请参考图2,在优选实施例中,监控规则参数包括:
业务类型、统计时间、最小统计数、失败率、异常率、消息堆积数和响应时间。参数还包括业务类型和支付通道等信息,监控规则参数主要根据支付通道的接口维度进行配置。统计时间可配置统计多长时间范围内的交易数据,最小统计数配置统计时间内需要达到的交易数据量,如果统计时间范围内交易数据量达不到最小统计数则不做处理。失败率是根据统计时间范围内失败交易笔数除以交易总笔数计算出来的百分比,如果计算出的失败率大于配置的失败率阀值时可根据情况降低调用端的请求量。异常率是根据统计时间范围内异常交易笔数除以交易总笔数计算出来的百分比,如果计算出的异常率大于配置的异常率阀值时可根据情况降低调用端的请求量。消息堆积数配置Kafka消息队列中未被及时消费的交易数据量,如果消息堆积过多表明服务端的处理能力下降,当消息堆积数大于配置的消息堆积数阀值时需要降低调用端的请求量进行缩容处理。响应时间配置采集交易数据所需要的平均耗时,当平均耗时大于配置的响应时间时可根据情况降低调用端的请求量,反之可适当增加调用端的请求量。
管理员可根据业务需求是极其情况来实时修改监控规则参数,修改参数后监控规则实时生效,管理员可通过Redis统计的采集交易情况进行各项指标从而了解系统的运行情况,从而供运维管理人员做出合理化决策。
以支付系统请求邮储银行支付通道举例说明,采集“业务类型、交易状态、响应时间、系统时间”等指标信息。定义业务类型:0-代付、1-代收、2-签约,定义交易状态:SUCCESS、FAIL、EXCEPTION,其中邮储银行通道编码为PSBC。如记录邮储银行代付成功笔数,可以按照以分钟为维度进行统计,可定义Redis的Key为“PAY_PSBC_0_SUCCESS_202203181740”,Key对应的value值记录具体笔数,例100。若Redis不存在这个Key,则新增Key并将值保存为1,若Redis中已存在Key,则将value值加1;
Kafka消息队列:按照交易为维度定义Topic名字,如定义代付消息队列名为:PAY.PAY-PSBC-REJECT,启动Kafka监听消息队列数据,异步重发代付请求数据至邮储银行通道线程池。
请参考图3-4,在优选实施例中,步骤S2中对交易结果进行异步分析具体包括:
采用监控线程对Redis采集的交易结果进行异步分析,通过Kafka消息队列异步处理被JAVA线程池所拒绝的交易请求。利用Kafka消息队列异步处理交易高峰时被JAVA线程池拒绝的交易请求,保证拒绝的交易能够及时被处理。
请参考图3-4,在优选实施例中,步骤S2中通过Kafka消息队列异步处理被JAVA线程池所拒绝的交易请求的具体步骤为:
对进入JAVA线程池中的交易请求进行判定,当JAVA线程池中的核心线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建核心线程进行交易请求的执行;
当JAVA线程池中的线程池队列已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池将该交易请求放入线程池队列中进行执行;
当JAVA线程池中的最大线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建非核心线程来对交易请求进行执行;
将核心线程、线程池队列以及最大线程所拒绝的交易请求放入Kafka消息队列中,并通过Kafka消息列队进行异步处理。Kafka消息队列用来临时存放因线程池集合和线程池队列都满时被拒绝处理的请求数据,通过启动Kafka监听消息队列数据,异步重新发送请求数据至线程池;在交易请求进入线程池中时,依次按照顺序判断核心线程、线程池队列和最大线程,如果核心线程、线程池队列和最大线程都已满则执行线程池的拒绝策略,被拒绝的请求放入Kafka消息队列,通过Kafka消息监听再异步重新放入线程池等待被执行。
请参考图3-4,在优选实施例中,步骤S3具体包括:
调用端根据交易结果和监控规则参数的比对结果,调节JAVA线程池的参数来控制调用端发往服务端的请求并发量来进行扩容或缩容处理。
请参考图3-4,调用端通过线程池向服务端发送请求,所有发往服务端的请求总数量、成功数量、失败数量、异常数量和每笔交易响应耗时等指标都汇总写入Redis缓存,其中交易总数量、成功数量、失败数量和异常数量等指标可用Redis计数器汇总,每笔交易平均响应耗时可由交易总耗时除以交易总数量计算获得。
调用端调用服务端时需通过线程池实现,调用端发往服务端的所有请求执行情况需记录写入Redis,比如请求总数量、成功数量、失败数量、异常数量和每笔交易响应耗时等指标。Redis计数可利用spring-data-redis开源包封装的increment方法实现。
请参考图3-4,在优选实施例中,步骤S3中调节JAVA线程池的参数来进行扩容或缩容处理具体包括:
当采集的交易结果的数值大于监控规则参数的第一预设值时,减少JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行缩容处理;
当采集的交易结果的数值小于监控规则参数的第一预设值时,增加JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行扩容处理。线程池中的参数包括线程池核心线程数、最大线程数。
通过分析模块分析Redis中的采集数据和查询Kafka消息堆积数,根据汇总分析结果与配置的监控规则参数比对,具体为:
如果异常率、响应时间、消息堆积数等指标大于第一预设值时,通过减小线程池核心线程数或最大线程数达到缩容的目的,如果相应分析指标小于第一预设值时,则通过增加线程池核心线程数或最大线程数达到扩容的目的。
主要通过合理动态调整调用端线程池的核心线程数、最大线程数以及线程池队列大小,控制调用端请求服务端的流量大小,来达到对服务调用端动态扩缩容效果,从而使调用端的请求流量和服务端的负载充分匹配。当失败率、超时率、异常率、平均响应时间或者Kafka消息队列堆积数大于设置第一预设值时调用端进行缩容处理,反之进行扩容处理。如果缩容时线程数达到设定的最小值或者扩容时线程数达到设定的最大值则不再进行缩容或扩容处理(最小值和最大值只是一个相对的数值定义,并不代表具体数值,具体数值可根据需求进行实施修改)。
请参考图3-4,在优选实施例中,本发明还提供了一种基于服务调用端的动态扩缩容方法系统,包括:
监控管理模块:进行监控规则参数的配置以及通过Redis统计采集交易结果;
监控执行模块:对交易结果进行异步分析,并将分析后的结果与配置的监控规则参数进行比对;
调用模块:根据分析后的结果与配置的监控规则参数比对的结果进行扩容或缩容处理。
请参考图3-4,在优选实施例中,监控管理模块包括:
参数配置模块:对监控规则参数进行配置并保存在数据库中;
其中监控规则参数包括:业务类型、统计时间、最小统计数、失败率、异常率、消息堆积数和响应时间;
数据管理模块:统计采集交易结果并对采集交易结果进行读取。
请参考图3-4,在优选实施例中,监控执行模块包括:
分析模块:对Redis采集的交易结果进行分析并将分析结果进行汇总,根据汇总结果与所配置的监控规则参数进行数据比对;
处理模块:通过Kafka消息队列异步处理被JAVA线程池所拒绝的交易请求,对进入JAVA线程池中的交易请求进行判定,当JAVA线程池中的核心线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建核心线程进行交易请求的执行;
当JAVA线程池中的线程池队列已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池将该交易请求放入线程池队列中进行执行;
当JAVA线程池中的最大线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建非核心线程来对交易请求进行执行;
将核心线程、线程池队列以及最大线程所拒绝的交易请求翻入Kafka消息队列中,并通过Kafka消息列队进行异步处理。
请参考图3-4,在优选实施例中,调用模块进行扩容或缩容处理的步骤具体包括:
当采集的交易结果的数值大于监控规则参数的第一预设值时,减少JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行缩容处理;
当采集的交易结果的数值小于监控规则参数的第一预设值时,增加JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行扩容处理。
在优选实施例中,通过分析汇总Redis采集的各项指标数据,计算异常率=异常数量/总数量、失败率=失败数量/总数量、平均响应时间=单位时间内交易总耗时/单位时间内总数量,通过Kafka消息队列Topic名查询对应队列消息堆积量,按照实际需求比较汇总指标数据与监控规则数据比较动态调整线程池大小,当线程池大小达到设置的上限或者下限时不再进行调整。
本发明提供的基于服务调用端的动态扩缩容方法,通过监控线程分析各项采集指标,根据分析结果与系统设置的预设监控规则参数比对,当符合条件时调用端自动进行扩容或缩容处理,不需要额外的人工干预。系统的各项预设监控规则参数统一管理,修改监控规则参数后实时生效,保证请求能够正常及时处理,同时又能充分利用服务端的系统资源。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (2)
1.一种基于服务调用端的动态扩缩容方法,其特征在于,包括如下步骤:
S1:进行监控规则参数的配置;
其中,所述监控规则参数包括:业务类型、统计时间、最小统计数、失败率、异常率、消息堆积数和响应时间;
S2:通过Redis统计采集交易结果,采用监控线程对Redis采集的交易结果进行异步分析,通过Kafka消息队列异步处理被JAVA线程池所拒绝的交易请求,并将分析结果与监控规则参数进行比对;
其中,通过Kafka消息队列异步处理被JAVA线程池所拒绝的交易请求具体包括:
对进入JAVA线程池中的交易请求进行判定,当JAVA线程池中的核心线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建核心线程进行交易请求的执行;
当JAVA线程池中的线程池队列已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池将该交易请求放入线程池队列中进行执行;
当JAVA线程池中的最大线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建非核心线程来对交易请求进行执行;
将核心线程、线程池队列以及最大线程所拒绝的交易请求放入Kafka消息队列中,并通过Kafka消息列队进行异步处理;
S3:调用端根据交易结果和监控规则参数的比对结果,调节JAVA线程池的参数来控制调用端发往服务端的请求并发量来进行扩容或缩容处理;
其中,当采集的交易结果的数值大于监控规则参数的第一预设值时,减少JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行缩容处理;
当采集的交易结果的数值小于监控规则参数的第一预设值时,增加JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行扩容处理。
2.一种基于服务调用端的动态扩缩容方法系统,其特征在于,包括:
监控管理模块:包括参数配置模块和数据管理模块;
参数配置模块:对监控规则参数进行配置并保存在数据库中;
其中监控规则参数包括:业务类型、统计时间、最小统计数、失败率、异常率、消息堆积数和响应时间;
数据管理模块:统计采集交易结果并对采集交易结果进行读取;
监控执行模块:对交易结果进行异步分析,并将分析后的结果与配置的监控规则参数进行比对;
调用模块:根据分析后的结果与配置的监控规则参数比对的结果进行扩容或缩容处理;
其中,当采集的交易结果的数值大于监控规则参数的第一预设值时,减少JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行缩容处理;
当采集的交易结果的数值小于监控规则参数的第一预设值时,增加JAVA线程池中的参数数值以及调用端发往服务端的请求并发量来进行扩容处理;
分析模块:对Redis采集的交易结果进行分析并将分析结果进行汇总,根据汇总结果与所配置的监控规则参数进行数据比对;
处理模块:通过Kafka消息队列异步处理被JAVA线程池所拒绝的交易请求,对进入JAVA线程池中的交易请求进行判定,当JAVA线程池中的核心线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建核心线程进行交易请求的执行;
当JAVA线程池中的线程池队列已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池将该交易请求放入线程池队列中进行执行;
当JAVA线程池中的最大线程已满时,则JAVA线程池执行拒绝策略,若未满,则JAVA线程池新建非核心线程来对交易请求进行执行;
将核心线程、线程池队列以及最大线程所拒绝的交易请求放 入Kafka消息队列中,并通过Kafka消息列队进行异步处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210952934.XA CN115016952B (zh) | 2022-08-10 | 2022-08-10 | 一种基于服务调用端的动态扩缩容方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210952934.XA CN115016952B (zh) | 2022-08-10 | 2022-08-10 | 一种基于服务调用端的动态扩缩容方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115016952A CN115016952A (zh) | 2022-09-06 |
CN115016952B true CN115016952B (zh) | 2022-10-28 |
Family
ID=83065604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210952934.XA Active CN115016952B (zh) | 2022-08-10 | 2022-08-10 | 一种基于服务调用端的动态扩缩容方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115016952B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117294347B (zh) * | 2023-11-24 | 2024-01-30 | 成都本原星通科技有限公司 | 一种卫星信号接收处理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309409A (zh) * | 2020-02-26 | 2020-06-19 | 山东爱城市网信息技术有限公司 | 一种api服务调用实时统计方法 |
CN111435320A (zh) * | 2019-01-14 | 2020-07-21 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其装置 |
CN112199150A (zh) * | 2020-08-13 | 2021-01-08 | 北京航空航天大学 | 一种基于微服务调用依赖感知的在线应用动态扩缩容方法 |
CN112398945A (zh) * | 2020-11-16 | 2021-02-23 | 中国工商银行股份有限公司 | 一种基于背压的业务处理方法及装置 |
CN113487307A (zh) * | 2021-07-27 | 2021-10-08 | 中国银行股份有限公司 | 分布式系统的外部文本数据处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657892B2 (en) * | 2004-05-20 | 2010-02-02 | Bea Systems, Inc. | System and method for application server with self-tuned threading model |
-
2022
- 2022-08-10 CN CN202210952934.XA patent/CN115016952B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111435320A (zh) * | 2019-01-14 | 2020-07-21 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其装置 |
CN111309409A (zh) * | 2020-02-26 | 2020-06-19 | 山东爱城市网信息技术有限公司 | 一种api服务调用实时统计方法 |
CN112199150A (zh) * | 2020-08-13 | 2021-01-08 | 北京航空航天大学 | 一种基于微服务调用依赖感知的在线应用动态扩缩容方法 |
CN112398945A (zh) * | 2020-11-16 | 2021-02-23 | 中国工商银行股份有限公司 | 一种基于背压的业务处理方法及装置 |
CN113487307A (zh) * | 2021-07-27 | 2021-10-08 | 中国银行股份有限公司 | 分布式系统的外部文本数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115016952A (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110502494B (zh) | 日志处理方法、装置、计算机设备及存储介质 | |
CN109672627A (zh) | 基于集群服务器的业务处理方法、平台、设备及存储介质 | |
US7958159B1 (en) | Performing actions based on monitoring execution of a query | |
CN115016952B (zh) | 一种基于服务调用端的动态扩缩容方法及系统 | |
EP2253102A1 (en) | Integration platform for collecting security audit trail | |
CN105119752A (zh) | 一种分布式日志采集方法、装置及系统 | |
CN108770017B (zh) | 一种无线资源动态均衡方法及系统 | |
CN113422842B (zh) | 一种考虑网络负载的分布式电力用电信息数据采集系统 | |
CN112866132B (zh) | 面向海量标识的动态负载均衡器及方法 | |
CN107463612A (zh) | 高并发redis数据库操作方法及系统 | |
WO2023125053A1 (zh) | 数据采集方法、装置、电子设备及存储介质 | |
CN115934774A (zh) | 一种高并发多维度分布式交易系统流控方法、引擎及介质 | |
CN114896121A (zh) | 分布式处理系统的监控方法及装置 | |
CN110333916A (zh) | 请求消息处理方法、装置、计算机系统及可读存储介质 | |
CN111309442B (zh) | 微服务容器数量的调整方法、装置、系统、介质及设备 | |
CN113726856A (zh) | 基于微服务的调控画面综合数据轻量化交互方法及系统 | |
CN111600738B (zh) | 优化超时处理的方法、存储介质 | |
CN116842090A (zh) | 一种对账系统、方法、设备及存储介质 | |
CN116719623A (zh) | 作业调度方法、作业结果处理方法及其装置 | |
CN113472881B (zh) | 在线终端设备的统计方法和装置 | |
CN112631771B (zh) | 一种大数据系统的并行处理方法 | |
CN114443732A (zh) | 一种动态接口调用方法及存储介质 | |
CN111338788B (zh) | 资源配额审批方法、存储介质 | |
CN112579391A (zh) | 一种基于人工智能的分布式数据库自动运维方法及系统 | |
CN101964922B (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 |