CN115421920A - 金融产品的任务管理方法及装置、电子设备、存储介质 - Google Patents
金融产品的任务管理方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN115421920A CN115421920A CN202211145099.5A CN202211145099A CN115421920A CN 115421920 A CN115421920 A CN 115421920A CN 202211145099 A CN202211145099 A CN 202211145099A CN 115421920 A CN115421920 A CN 115421920A
- Authority
- CN
- China
- Prior art keywords
- task
- thread pool
- cluster
- thread
- subprocess
- 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.)
- Pending
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/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/5038—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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种金融产品的任务管理方法及装置、电子设备、存储介质,涉及大数据领域,其中,该方法包括:获取工作队列中各个消息任务的任务参数和任务优先级,其中,消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个集群节点中对应配置一个线程池子进程,每个线程池子进程分配至少一个工作队列,任务参数和任务优先级用于评估每个消息任务的执行顺序,控制工作线程按照执行顺序执行工作队列中的消息任务。本发明解决了相关技术中采用单一进程的线程池模型,任务计算效率低的技术问题。
Description
技术领域
本发明涉及大数据领域,具体而言,涉及一种金融产品的任务管理方法及装置、电子设备、存储介质。
背景技术
当前,在金融机构的风险计量场景中,需要对金融产品进行估值计算,当金融机构对金融产品进行估值时,一方面由于金融机构交易数据量比较大;另一方面为了及时发现交易中的风险,对估值有效性有比较高的要求,单个金融产品价值估算的用时较短,但需要处理的价值估算任务数量较大,出现海量的产品评估任务和消息任务,为提高金融产品价值估算的执行效率,此时需要使用线程池技术来处理这些产品评估任务和消息任务。
线程池技术广泛应用于web服务器、文件服务器等应用程序当中,在面临突发性的、数量巨大的瞬时访问请求时,线程池技术具有降低资源消耗,提高响应速度以及提高线程的可管理性等优势。
相关技术中,线程池技术都是单一进程的线程池模型,使用同一个工作队列和一个线程池来利用底层的硬件提高***的并发性,从而对计算任务进行处理,这种单一进程的线程池模型存在显著的弊端:任务计算效率低。并且,相关技术中的线程池的工作线程是从共同的工作队列中检索任务并执行任务,将线程池的工作环境局限在单机高性能服务器,在计算资源上存在一定的局限性,横向扩展难度较大。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种金融产品的任务管理方法及装置、电子设备、存储介质,以至少解决相关技术中采用单一进程的线程池模型,任务计算效率低的技术问题。
根据本发明实施例的一个方面,提供了一种金融产品的任务管理方法,包括:获取工作队列中各个消息任务的任务参数和任务优先级,其中,所述消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个所述集群节点中对应配置一个线程池子进程,每个所述线程池子进程分配至少一个所述工作队列,所述任务参数和所述任务优先级用于评估每个所述消息任务的执行顺序;控制工作线程按照所述执行顺序执行所述工作队列中的所述消息任务。
可选地,每个所述集群节点对应一个服务器,所述预设分布式服务集群负责管理所有的服务器对应的集群节点,所述预设分布式服务集群在管理时,包括:接收所述集群节点的注册请求;响应所述注册请求,对所述集群节点按照预设命名要求进行命名,每个所述集群节点的名称前缀相同;为所述集群节点分配所述线程池子进程;将所述集群节点的节点名称、网络地址和分配的所述线程池子进程的类型、线程池的运行状态录入至集群数据库。
可选地,所述线程池内设置一个管理进程,所述管理进程用于管理所属的所述线程池内其他的线程池子进程的启动操作和停止操作。
可选地,所述线程池子进程的设置数量是基于所述工作队列中的任务数量确定。
可选地,所述工作线程的类型包括:核心工作线程和非核心工作线程,所述核心工作线程与所述线程池同步存在,所述非核心工作线程在空闲时长超出预设时长阈值后自动释放。
可选地,所述管理进程接收集群节点信息和线程池类型,其中,所述集群节点信息是指与所述线程池子进程对应的集群节点的信息,所述集群节点信息至少包括:所述集群节点的节点标识和进程标识;所述管理进程根据所述集群节点信息和所述线程池类型,为所述进程标识对应的目标线程池子进程分配工作队列。
可选地,所述金融产品的任务管理方法还包括:获取每个所述线程池子进程的任务负载参数;在所述线程池子进程的任务负载参数大于预设参数阈值,或者,所述线程池子进程出现异常状态的情况下,将所述线程池子进程当前待处理的工作队列中的剩余消息任务迁移至其他线程池子进程的工作队列中。
可选地,通过线程池监控器监测每个所述线程池子进程的第一运行状态以及所述线程池的第二运行状态,并将所述第一运行状态和所述第二运行状态上报至所述预设分布式服务集群。
可选地,通过所述消息任务的抽象类包装所述任务参数,所述任务参数包括下述至少之一:任务类型、产品类型、请求交易数据和当前时间段的产品市场数据。
根据本发明实施例的另一个方面,提供了一种金融产品的任务管理装置,包括:分配单元,用于获取工作队列中各个消息任务的任务参数和任务优先级,其中,所述消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个所述集群节点中对应配置一个线程池子进程,每个所述线程池子进程分配至少一个所述工作队列,所述任务参数和所述任务优先级用于评估每个所述消息任务的执行顺序;控制单元,用于控制工作线程按照所述执行顺序执行所述工作队列中的所述消息任务。
可选地,分配单元包括:第一接收模块,用于接收所述集群节点的注册请求;命名模块,用于响应所述注册请求,对所述集群节点按照预设命名要求进行命名,每个所述集群节点的名称前缀相同;第一分配模块,用于为所述集群节点分配所述线程池子进程;录入模块,用于将所述集群节点的节点名称、网络地址和分配的所述线程池子进程的类型、线程池的运行状态录入至集群数据库。
可选地,所述线程池内设置一个管理进程,所述管理进程用于管理所属的所述线程池内其他的线程池子进程的启动操作和停止操作。
可选地,所述线程池子进程的设置数量是基于所述工作队列中的任务数量确定。
可选地,所述工作线程的类型包括:核心工作线程和非核心工作线程,所述核心工作线程与所述线程池同步存在,所述非核心工作线程在空闲时长超出预设时长阈值后自动释放。
可选地,金融产品的任务管理装置还包括:第二接收模块,用于所述管理进程接收集群节点信息和线程池类型,其中,所述集群节点信息是指与所述线程池子进程对应的集群节点的信息,所述集群节点信息至少包括:所述集群节点的节点标识和进程标识;第二分配模块,用于所述管理进程根据所述集群节点信息和所述线程池类型,为所述进程标识对应的目标线程池子进程分配工作队列。
可选地,金融产品的任务管理装置还包括:获取模块,用于获取每个所述线程池子进程的任务负载参数;迁移模块,用于在所述线程池子进程的任务负载参数大于预设参数阈值,或者,所述线程池子进程出现异常状态的情况下,将所述线程池子进程当前待处理的工作队列中的剩余消息任务迁移至其他线程池子进程的工作队列中。
可选地,金融产品的任务管理装置还包括:监控上报模块,用于通过线程池监控器监测每个所述线程池子进程的第一运行状态以及所述线程池的第二运行状态,并将所述第一运行状态和所述第二运行状态上报至所述预设分布式服务集群。
可选地,金融产品的任务管理装置还包括:包装模块,用于通过所述消息任务的抽象类包装所述任务参数,所述任务参数包括下述至少之一:任务类型、产品类型、请求交易数据和当前时间段的产品市场数据。
根据本发明实施例的另一个方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任意一项所述的金融产品的任务管理方法。
根据本发明实施例的另一个方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述任意一项所述的金融产品的任务管理方法。
本公开中,采用以下步骤,首先获取工作队列中各个消息任务的任务参数和任务优先级,其中,消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个集群节点中对应配置一个线程池子进程,每个线程池子进程分配至少一个工作队列,任务参数和任务优先级用于评估每个消息任务的执行顺序,然后控制工作线程按照执行顺序执行工作队列中的消息任务。
本公开中,采用分布式服务集群管理框架,统一管理集群节点,在进行任务计算时,为每个线程池子进程分配一到多个工作队列,并引入任务优先级评估任务重要程度,存在多个工作队列时,线程池优先获取并处理级别较高的队列中的消息任务,通过应用分布式线程池技术,提高***的任务计算速度和任务计算效率,进而解决了相关技术中采用单一进程的线程池模型,任务计算效率低的技术问题。
本公开中,每个集群节点对应一个服务器,线程池节点进行动态伸缩,线程池的数量可以根据算力需求情况随着服务器的数量变化进行动态调整,以满足不同情景的需要。
本公开中,当单个线程池负载过重或不能及时处理时可将相应的工作队列接收的消息任务转发至其他线程池执行。分布式线程池的动态分发和转移机制保证了***在单节点故障下的平稳运行,显著提高了***的可用性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的金融产品的任务管理方法的流程图;
图2是根据本发明实施例的一种可选的预设分布式服务集群在管理时的实施流程图;
图3是根据本发明实施例的一种可选的金融产品的任务管理***的示意图;
图4是根据本发明实施例的一种可选的金融产品的任务管理装置的示意图;
图5是根据本发明实施例的一种金融产品的任务管理方法的电子设备(或移动设备)的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于本领域技术人员理解本发明,下面对本发明各实施例中涉及的部分术语或者名词做出解释:
redis,远程字典服务,是一种存储***,支持存储的类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set--有序集合)和hash(哈希类型)。
需要说明的是,本公开中的金融产品的任务管理方法及装置可用于大数据领域在为线程池分配工作队列的情况下,也可用于除大数据领域之外的任意领域在为线程池分配工作队列的情况下,本公开中金融产品的任务管理方法及装置的应用领域不做限定。
需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本***和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
本发明可以应用于金融产品(包括但不限于:基金产品、外汇产品、存款产品等)的任务管理设备/装置/产品中(例如,各种服务器、PC端中),采用分布式服务集群管理框架,统一管理集群节点,在进行任务计算时,为每个线程池子进程分配一到多个工作队列,并引入任务优先级评估任务重要程度,存在多个工作队列时,线程池优先获取并处理级别较高的队列中的消息任务,通过应用分布式线程池技术,提高***的任务计算速度。
下面结合各个实施例对本发明进行详细说明。
实施例一
根据本发明实施例,提供了一种金融产品的任务管理的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
需要说明的是,本公开中分布式线程池方案可以支持多个服务器(每个服务器对应一个集群节点)上的多个线程池进程,其中一个进程为管理进程,其他进程为线程池子进程,并为每个线程池分配一个工作队列。
本公开中的整个工作流程可以划分为4个阶段:
线程池选择阶段,本阶段主要是管理进程通过对任务优先级和所有工作队列容量情况的判断,获取要使用的线程池子进程标识;
任务入队阶段,本阶段主要是管理进程根据上一阶段选定的线程池标识将消息任务压入相应的工作队列;
任务执行阶段,本阶段主要是线程池子进程从工作队列中检索任务消息,并进行相应计算;
结果入队阶段,本阶段主要是线程池子进程将计算结果压入结果消息队列。
图1是根据本发明实施例的一种可选的金融产品的任务管理方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,获取工作队列中各个消息任务的任务参数和任务优先级,其中,消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个集群节点中对应配置一个线程池子进程,每个线程池子进程分配至少一个工作队列,任务参数和任务优先级用于评估每个消息任务的执行顺序;
步骤S102,控制工作线程按照执行顺序执行工作队列中的消息任务。
通过上述步骤,首先获取工作队列中各个消息任务的任务参数和任务优先级,其中,消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个集群节点中对应配置一个线程池子进程,每个线程池子进程分配至少一个工作队列,任务参数和任务优先级用于评估每个消息任务的执行顺序,然后控制工作线程按照执行顺序执行工作队列中的消息任务。
在本实施例中,采用分布式服务集群管理框架,统一管理集群节点,在进行任务计算时,为每个线程池子进程分配一到多个工作队列,并引入任务优先级评估任务重要程度,存在多个工作队列时,线程池优先获取并处理级别较高的队列中的消息任务,通过应用分布式线程池技术,提高***的任务计算速度,进而解决了相关技术中采用单一进程的线程池模型,任务计算效率低的技术问题。
下面结合上述各实施步骤来详细说明。
步骤S101,获取工作队列中各个消息任务的任务参数和任务优先级。
需要说明的是,本实施例中采用分布式服务集群管理框架对集群节点进行管理,每个集群节点对应一个服务器。
其中,金融产品的产品类型包括但不限于:银行类金融产品、保险类金融产品、信托类金融产品、证券类金融产品;产品消费请求包括:贷款、投资理财、风险估算。任务参数包括但不限于:产品交易数据、产品市场数据。
当工作队列中存在多个消息任务时,需要对每个消息任务进行重要度评估,通过任务优先级来表征任务重要度,线程池子进程优先获取并处理重要度较高的消息任务。
本发明实施例中,每个集群节点对应一个服务器,预设分布式服务集群负责管理所有的服务器对应的集群节点,图2是根据本发明实施例的一种可选的预设分布式服务集群在管理时的实施流程图,包括:
步骤S201,接收集群节点的注册请求;
步骤S202,响应注册请求,对集群节点按照预设命名要求进行命名,每个集群节点的名称前缀相同;
步骤S203,为集群节点分配线程池子进程;
步骤S204,将集群节点的节点名称、网络地址和分配的线程池子进程的类型、线程池的运行状态录入至集群数据库。
在预设分布式服务集群中部署的集群节点的数量可以根据任务数量和工作队列的完成进度进行调整,集群节点可以根据算力需求情况进行动态伸缩,满足不同情景的需要。
其中,预设分布式服务集群的集群类型可以采用Zookeeper集群。通过该分布式服务集群可以对各个集群节点进行统一命名服务和节点上下线服务,其中统一命名服务在分布式环境,需要对集群节点进行统一命名,并存储集群节点名称、网络地址、线程池类型(是否支持优先级)、线程池状态等基础信息,便于节点识别和链路跟踪;节点上下线服务是当线程池子进程启动时需要通知预设分布式服务集群,以便管理进程可以实时掌握线程池子进程的在线列表。
本实施例中,分布式线程池的方案支持多个服务器上的多个进程,其中一个进程为管理进程,其他进程均为线程池子进程,每个线程池子进程可以分配一个或多个工作队列。需要说明的是,线程池内设置的管理进程用于管理所属的线程池内其他的线程池子进程的启动操作和停止操作;线程池子进程的设置数量是基于工作队列中的任务数量确定的。
步骤S102,控制工作线程按照执行顺序执行工作队列中的消息任务。
需要说明的是,工作线程的类型包括:核心工作线程和非核心工作线程,核心工作线程与线程池同步存在,非核心工作线程在空闲时长超出预设时长阈值后自动释放。
工作线程是循环执行任务的重复使用线程,线程池子进程启动时默认没有工作线程,当任务来临时才创建工作线程去执行消息任务,线程池常驻的工作线程是核心线程,可以通过参数配置模块对核心线程数进行配置,当没有任务执行时,工作线程处于等待状态;而对于非核心线程,其并不是长期存在的,当非核心线程的空域时间超过一定时间(即上述的预设时长阈值)时就会被自动终止回收掉/自动释放。
本发明实施例中,由管理进程为线程池子进程分配工作队列,目标管理进程接收集群节点信息和线程池类型(该线程池类型可以与各个工作队列中的任务类型对应,也可以与是否支持优先级对应),其中,集群节点信息是指与线程池子进程对应的集群节点的信息,集群节点信息至少包括:集群节点的节点标识和进程标识;管理进程根据集群节点信息和线程池类型,为进程标识对应的目标线程池子进程分配工作队列。
需要说明的是,管理进程根据线程池子进程所对应的集群节点的节点名称和线程池类型,为线程池子进程分配工作队列,工作队列为redis的list(清单),list命名方式为节点名称+消息任务优先级,当提交多个消息任务时,管理进程根据消息任务的优先级将消息任务提交到相应的list中。
本发明实施例中,管理进程还提供任务消息转移功能,当某一线程池子进程负载过重或处于异常状态时可将其相应的工作队列接收的消息任务读取并追加其他线程池子进程的工作队列中。具体实施方式,首先获取每个线程池子进程的任务负载参数,然后在线程池子进程的任务负载参数大于预设参数阈值,或者,线程池子进程出现异常状态的情况下,将线程池子进程当前待处理的工作队列中的剩余消息任务迁移至其他线程池子进程的工作队列中。
通过分布式线程池的任务转移机制,保证了***在单集群节点故障下的平稳运行,显著提高了***的可用性。
需要说明的是,本实施例中的分布式线程池通过线程池监控器监测每个线程池子进程的第一运行状态以及线程池的第二运行状态,并将第一运行状态和第二运行状态上报至预设分布式服务集群。
其中,每个线程池子进程都有一个独立保护线程,通过线程池监控器监控并记录线程池的运行状态,并更新分布式服务集群中线程池状态信息。
需要说明的是,在分布式线程池环境中,必须要对线程池运行逻辑进行抽象,本发明实施例中,通过消息任务的抽象类包装任务参数,任务参数包括下述至少之一:任务类型、产品类型、请求交易数据和当前时间段的产品市场数据。即本实施例通过一个消息任务的抽象类来包装用户提交的任务或金融产品估值所需的交易数据以及市场数据等,抽象类包装为所有的消息任务提供了统一的接口,其中规定了任务的入口、任务执行结果和任务执行状态等信息。
通过上述实施例,采用分布式服务集群管理框架,统一管理集群节点,在进行任务计算时,为每个线程池分配一到多个工作队列,并引入任务优先级评估任务重要程度,存在多个工作队列时,线程池优先获取并处理级别较高的队列中的消息任务,通过应用分布式线程池技术,提高***的任务计算速度,进而解决了相关技术中采用单一进程的线程池模型,任务计算效率低的技术问题。
通过应用分布式线程池技术,***的响应速度和性能与原有***有了较大提高;同时,分布式线程池的动态分发和转移机制保证了***在单节点故障下的平稳运行,显著提高了***的可用性。
下面结合另一种可选的实施例来说明本发明。
实施例二
本实施例提供了一种金融产品的任务管理***,图3是根据本发明实施例的一种可选的金融产品的任务管理***的示意图,如图3所示,该金融产品的任务管理***包含Zookeeper集群、管理进程、线程池子进程三个主体。
本发明实施例的分布式线程池可以支持多个服务器上的多个进程,其中一个进程为管理进程,其他进程均为线程池子进程,并为每个线程池分配一个工作队列。整个工作流程划分为4个阶段:线程池选择阶段,本阶段主要是管理进程通过对任务优先级和所有工作队列容量情况的判断,获取要使用的线程池子进程标识;任务入队阶段,本阶段主要是管理进程根据上一阶段选定的线程池标识将消息任务压入相应的工作队列;任务执行阶段,本阶段主要是线程池子进程从工作队列中检索消息任务,并进行相应计算;结果消息入队阶段,本阶段主要是线程池子进程将计算结果压入结果消息队列。
下面结合具体实施方案进行说明:
一、配置Zookeeper集群(分布式服务集群,本实施例中以Zookeeper集群示意)
Zookeeper主要提供以下两种服务:一是统一命名服务,在分布式环境需要对服务节点进行统一命名,并存储服务节点名称、网络地址、线程池类型(是否支持优先级)、线程池状态等基础信息,便于节点识别和链路跟踪;二是节点上下线服务,当线程池子进程启动时需要通知Zookeeper,以便管理进程可以实时掌握线程池子进程在线列表。
二、管理进程
管理进程包含逻辑抽象对话框、队列管理器及线程池管理器三部分。
逻辑抽象对话框,在分布式线程池环境中,必须要对线程池运行逻辑进行抽象,通过一个消息任务的抽象类来包装用户提交的任务或金融产品估值所需的交易数据以及市场数据等。逻辑抽象对话框为所有的线程任务提供了统一的接口,其中规定了任务的入口、任务执行结果和任务执行状态等信息。
队列管理器,管理进程根据线程子进程集群节点名称和线程池类型,为线程子进程分配工作队列。工作队列为redis的list,list命名方式为集群节点名称+消息优先级。当提交多个任务时,管理进程根据任务的优先级将消息任务对象提交到相应的list中。
队列管理器还提供消息任务转移功能,当某个线程池负载过重或异常下线时可将其相应的工作队列接收的消息任务读取并追加其他线程池的消息队列中。
线程池管理器,用于管理线程池,创建、管理和销毁工作队列,同时对外提供任务接收接口,为新任务分配合适的线程池。根据配置线程池管理器可主动查询zookeeper中各个线程池子进行的状态信息和redis中各工作队列的容量情况,然后根据线程池状态以及工作队列拥堵情况,调整新任务分发策略或者转移工作队列中的消息任务。
三、线程池子进程
线程池子进程包含工作线程和线程池监控器两部分。
线程池作为工作线程的管理容器,支持FixedTheadPool、ScheduleThreadPool、CachedThreadPool等常见线程池。线程池子进程从redis中读取自身对应的工作队列中的消息任务,然后调用工作线程进行处理。在处理工作队列中消息任务时,先处理优先级高的工作队列,当高优先级的工作队列中没有消息任务/数据时才开始处理低优先级的工作队列中的消息任务。当全部工作队列均没有待处理消息任务/数据时,线程池子进程将根据设置的timeout超时时间(如2s)进行等待,等待结束后再次对工作队列进行读取操作。
工作线程是一个可以循环执行任务的重复使用线程。线程池子进程启动时默认是没有线程的,当任务来临时才创建工作线程去执行消息任务。线程池常驻的线程是核心线程,可以通过参数核心线程数进行配置。没有任务执行时,工作线程处于等待状态,当非核心线程的空域时间超过keepAliveTime(对应于上述预设时间阈值)时就会被自动终止回收掉。
线程池监控器,每个线程池子进程都有一个独立保护线程,监控和记录线程池的运行状态,并更新Zookeeper中线程池状态信息。
上述实施例,应用分布式线程池技术,提升了***的响应速度和性能,线程池节点可以根据算力需求情况进行动态伸缩,满足不同情景的需要,同时,分布式线程池的动态分发和转移机制保证了***在单节点故障下的平稳运行,显著提高了***的可用性。
下面结合另一种可选的实施例来说明本发明。
实施例三
本实施例提供了一种金融产品的任务管理装置,该金融产品的任务管理装置所包含的各个实施模块对应于实施例一中的各个实施步骤。
图4是根据本发明实施例的一种可选的金融产品的任务管理装置的示意图,如图4所示,金融产品的任务管理装置包括:分配单元41、控制单元42,其中,
分配单元41,用于获取工作队列中各个消息任务的任务参数和任务优先级,其中,消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个集群节点中对应配置一个线程池子进程,每个线程池子进程分配至少一个工作队列,任务参数和任务优先级用于评估每个消息任务的执行顺序;
控制单元42,用于控制工作线程按照执行顺序执行工作队列中的消息任务。
上述金融产品的任务管理装置,通过分配单元41获取工作队列中各个消息任务的任务参数和任务优先级,其中,消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个集群节点中对应配置一个线程池子进程,每个线程池子进程分配至少一个工作队列,任务参数和任务优先级用于评估每个消息任务的执行顺序;通过控制单元42控制工作线程按照执行顺序执行工作队列中的消息任务。
在本实施例中,采用分布式服务集群管理框架,统一管理集群节点,在进行任务计算时,为每个线程池子进程分配一到多个工作队列,并引入任务优先级评估任务重要程度,存在多个工作队列时,线程池优先获取并处理级别较高的队列中的消息任务,通过应用分布式线程池技术,提高***的任务计算速度,进而解决了相关技术中采用单一进程的线程池模型,任务计算效率低的技术问题。
可选地,分配单元41包括:第一接收模块,用于接收集群节点的注册请求;命名模块,用于响应注册请求,对集群节点按照预设命名要求进行命名,每个集群节点的名称前缀相同;第一分配模块,用于为集群节点分配线程池子进程;录入模块,用于将集群节点的节点名称、网络地址和分配的线程池子进程的类型、线程池的运行状态录入至集群数据库。
可选地,线程池内设置一个管理进程,管理进程用于管理所属的线程池内其他的线程池子进程的启动操作和停止操作。
可选地,线程池子进程的设置数量是基于工作队列中的任务数量确定。
可选地,工作线程的类型包括:核心工作线程和非核心工作线程,核心工作线程与线程池同步存在,非核心工作线程在空闲时长超出预设时长阈值后自动释放。
可选地,金融产品的任务管理装置还包括:第二接收模块,用于管理进程接收集群节点信息和线程池类型,其中,集群节点信息是指与线程池子进程对应的集群节点的信息,集群节点信息至少包括:集群节点的节点标识和进程标识;第二分配模块,用于管理进程根据集群节点信息和线程池类型,为进程标识对应的目标线程池子进程分配工作队列。
可选地,金融产品的任务管理装置还包括:获取模块,用于获取每个线程池子进程的任务负载参数;迁移模块,用于在线程池子进程的任务负载参数大于预设参数阈值,或者,线程池子进程出现异常状态的情况下,将线程池子进程当前待处理的工作队列中的剩余消息任务迁移至其他线程池子进程的工作队列中。
可选地,金融产品的任务管理装置还包括:监控上报模块,用于通过线程池监控器监测每个线程池子进程的第一运行状态以及线程池的第二运行状态,并将第一运行状态和第二运行状态上报至预设分布式服务集群。
可选地,金融产品的任务管理装置还包括:包装模块,用于通过消息任务的抽象类包装任务参数,任务参数包括下述至少之一:任务类型、产品类型、请求交易数据和当前时间段的产品市场数据。
上述的金融产品的任务管理装置还可以包括处理器和存储器,上述分配单元41、控制单元42等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数控制工作线程按照执行顺序执行工作队列中的消息任务,采用分布式服务集群管理框架统一管理集群节点,通过应用分布式线程池技术,提高***的任务计算速度。
上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
根据本发明实施例的另一个方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述任意一项的金融产品的任务管理方法。
根据本发明实施例的另一个方面,还提供了一种电子设备,包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述任意一项的金融产品的任务管理方法。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取工作队列中各个消息任务的任务参数和任务优先级,其中,消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个集群节点中对应配置一个线程池子进程,每个线程池子进程分配至少一个工作队列,任务参数和任务优先级用于评估每个消息任务的执行顺序,控制工作线程按照执行顺序执行工作队列中的消息任务。
图5是根据本发明实施例的一种金融产品的任务管理方法的电子设备(或移动设备)的硬件结构框图。如图5所示,电子设备可以包括一个或多个(图中采用502a、502b,……,502n来示出)处理器502(处理器502可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器504。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、键盘、电源和/或相机。本领域普通技术人员可以理解,图5所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种金融产品的任务管理方法,其特征在于,包括:
获取工作队列中各个消息任务的任务参数和任务优先级,其中,所述消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个所述集群节点中对应配置一个线程池子进程,每个所述线程池子进程分配至少一个所述工作队列,所述任务参数和所述任务优先级用于评估每个所述消息任务的执行顺序;
控制工作线程按照所述执行顺序执行所述工作队列中的所述消息任务。
2.根据权利要求1所述的任务管理方法,其特征在于,每个所述集群节点对应一个服务器,所述预设分布式服务集群负责管理所有的服务器对应的集群节点,所述预设分布式服务集群在管理时,包括:
接收所述集群节点的注册请求;
响应所述注册请求,对所述集群节点按照预设命名要求进行命名,每个所述集群节点的名称前缀相同;
为所述集群节点分配所述线程池子进程;
将所述集群节点的节点名称、网络地址和分配的所述线程池子进程的类型、线程池的运行状态录入至集群数据库。
3.根据权利要求2所述的任务管理方法,其特征在于,所述线程池内设置一个管理进程,所述管理进程用于管理所属的所述线程池内其他的线程池子进程的启动操作和停止操作。
4.根据权利要求2所述的任务管理方法,其特征在于,所述线程池子进程的设置数量是基于所述工作队列中的任务数量确定。
5.根据权利要求1至4中任意一项所述的任务管理方法,其特征在于,所述工作线程的类型包括:核心工作线程和非核心工作线程,所述核心工作线程与所述线程池同步存在,所述非核心工作线程在空闲时长超出预设时长阈值后自动释放。
6.根据权利要求3所述的任务管理方法,其特征在于,还包括:
所述管理进程接收集群节点信息和线程池类型,其中,所述集群节点信息是指与所述线程池子进程对应的集群节点的信息,所述集群节点信息至少包括:所述集群节点的节点标识和进程标识;
所述管理进程根据所述集群节点信息和所述线程池类型,为所述进程标识对应的目标线程池子进程分配工作队列。
7.根据权利要求3所述的任务管理方法,其特征在于,还包括:
获取每个所述线程池子进程的任务负载参数;
在所述线程池子进程的任务负载参数大于预设参数阈值,或者,所述线程池子进程出现异常状态的情况下,将所述线程池子进程当前待处理的工作队列中的剩余消息任务迁移至其他线程池子进程的工作队列中。
8.根据权利要求1所述的任务管理方法,其特征在于,通过线程池监控器监测每个所述线程池子进程的第一运行状态以及所述线程池的第二运行状态,并将所述第一运行状态和所述第二运行状态上报至所述预设分布式服务集群。
9.根据权利要求1所述的任务管理方法,其特征在于,通过所述消息任务的抽象类包装所述任务参数,所述任务参数包括下述至少之一:任务类型、产品类型、请求交易数据和当前时间段的产品市场数据。
10.一种金融产品的任务管理装置,其特征在于,包括:
分配单元,用于获取工作队列中各个消息任务的任务参数和任务优先级,其中,所述消息任务是基于目标金融产品的产品类型和产品消费请求生成的,通过预设分布式服务集群管理所有的集群节点,每个所述集群节点中对应配置一个线程池子进程,每个所述线程池子进程分配至少一个所述工作队列,所述任务参数和所述任务优先级用于评估每个所述消息任务的执行顺序;
控制单元,用于控制工作线程按照所述执行顺序执行所述工作队列中的所述消息任务。
11.一种计算机可读存储介质,其特征在于,计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至9中任意一项所述的金融产品的任务管理方法。
12.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至9中任意一项所述的金融产品的任务管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211145099.5A CN115421920A (zh) | 2022-09-20 | 2022-09-20 | 金融产品的任务管理方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211145099.5A CN115421920A (zh) | 2022-09-20 | 2022-09-20 | 金融产品的任务管理方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115421920A true CN115421920A (zh) | 2022-12-02 |
Family
ID=84204863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211145099.5A Pending CN115421920A (zh) | 2022-09-20 | 2022-09-20 | 金融产品的任务管理方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115421920A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501510A (zh) * | 2023-06-29 | 2023-07-28 | 恒生电子股份有限公司 | 数据处理方法、业务处理方法及*** |
-
2022
- 2022-09-20 CN CN202211145099.5A patent/CN115421920A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501510A (zh) * | 2023-06-29 | 2023-07-28 | 恒生电子股份有限公司 | 数据处理方法、业务处理方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220083395A1 (en) | Scheduling system for computational work on heterogeneous hardware | |
CN115328663B (zh) | 基于PaaS平台进行资源调度的方法、装置、设备和存储介质 | |
TWI244030B (en) | Information processing system, information processing device, distributed information processing method and computer readable recording medium | |
US20080030764A1 (en) | Server parallel aggregation | |
US10884801B2 (en) | Server resource orchestration based on application priority | |
US10884800B2 (en) | Server resource balancing using a suspend-resume strategy | |
CN108337109A (zh) | 一种资源分配方法及装置和资源分配*** | |
US11126466B2 (en) | Server resource balancing using a fixed-sharing strategy | |
WO2006123177A1 (en) | Data processing network | |
US11307898B2 (en) | Server resource balancing using a dynamic-sharing strategy | |
CN112579304A (zh) | 基于分布式平台的资源调度方法、装置、设备及介质 | |
US11042402B2 (en) | Intelligent server task balancing based on server capacity | |
US11593177B2 (en) | Cost-savings using ephemeral hosts in infrastructure as a service environments based on health score | |
CN112162852A (zh) | 一种多架构cpu节点的管理方法、装置及相关组件 | |
CN114661462A (zh) | 资源分配方法、***、计算机可读存储介质及电子设备 | |
CN115421920A (zh) | 金融产品的任务管理方法及装置、电子设备、存储介质 | |
US8001341B2 (en) | Managing dynamically allocated memory in a computer system | |
CN111858014A (zh) | 资源分配方法及装置 | |
CN116048825A (zh) | 容器集群构建方法及*** | |
US10007559B1 (en) | Virtual tiering | |
CN115952054A (zh) | 一种仿真任务资源管理方法、装置、设备及介质 | |
CN113742059B (zh) | 任务分配方法、装置、计算机设备和存储介质 | |
CN116257333A (zh) | 分布式任务调度方法、装置和分布式任务调度*** | |
CN109189581A (zh) | 一种作业调度方法和装置 | |
CN113515355A (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 |