CN116089036A - 多线程多模块的业务流编排处理方法、设备及存储介质 - Google Patents
多线程多模块的业务流编排处理方法、设备及存储介质 Download PDFInfo
- Publication number
- CN116089036A CN116089036A CN202211730196.0A CN202211730196A CN116089036A CN 116089036 A CN116089036 A CN 116089036A CN 202211730196 A CN202211730196 A CN 202211730196A CN 116089036 A CN116089036 A CN 116089036A
- Authority
- CN
- China
- Prior art keywords
- module
- service
- thread
- plug
- processing
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000012545 processing Methods 0.000 claims abstract description 36
- 230000005540 biological transmission Effects 0.000 claims abstract description 17
- 238000012546 transfer Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 78
- 238000013507 mapping Methods 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 4
- 238000013479 data entry Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 238000011144 upstream manufacturing Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 18
- 230000008878 coupling Effects 0.000 abstract description 2
- 238000010168 coupling process Methods 0.000 abstract description 2
- 238000005859 coupling reaction Methods 0.000 abstract description 2
- 238000007726 management method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013523 data management Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001808 coupling effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 239000000178 monomer Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001376 precipitating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种多线程多模块的业务流编排处理方法,包括以下步骤:S1,通过统一的模块注册方法,将业务模块中插件注册到主程序;S2,当请求方业务模块发起跨模块调用请求时,主程序中的主线程根据插件的线程池配置,对插件的线程池进行编排,并创建用于线程间或线程池间数据传递的事件队列,应答方业务模块监听事件队列,并响应调用请求,执行业务处理。通过将标准化的模块注册方法、标准化的线程池编排方法、通用化的业务数据传输方法和业务流编排处理***,实现了基础架构与业务的松耦合架构,将框架复用转变为业务模块复用,实现单体应用和微服务应用的快速切换,提高了技术架构的灵活性,降低了***的开发复杂度。
Description
技术领域
本发明属于服务器技术领域,特别涉及一种多线程多模块的业务流编排处理方法。
背景技术
在互联网业务发展过程中,业务处理***逐步由单体应用向互联网应用过渡,***架构由传统架构向微服务架构过渡,单体应用被分解为微小且相互联系的微服务。微服务遵循以业务为中心,在业务处理的角度来思考微服务的设计,充分考虑业务处理的各种场景,通过合理的设计提高微服务之间的隔离性、扩展性。
现有的微服务架构主要基于java实现,采用容器做为微服务的载体,每个服务提供独立的业务处理,服务间通过通用的api进行通信。传统的交易业务***主要基于C++实现,采用多线程多模块的方式构建单体应用,通过消息队列进行业务分解,在微服务方面的成熟架构相对较少。随着业务的不断发展,业务***越来越复杂,微服务的数量不断上升,微服务的划分随着业务的变化需要不断进行调整,因些微服务需要具有业务的水平拆分及垂直拆分的能力。水平拆分一般采用api网关的形式进行业务分发,不同的微服务相对独立,可以快速的进行水平分解和扩容,技术方案相对成熟。垂直拆分跟业务和性能密切相关,在项目启动阶段需要进行充分的架构评估,并确定微服务架构方案。当***发展遇到瓶颈时,需要对现有的微服务粒度重新进行划分,无法快速解决业务单元的拆分与合并,需要大量的开发与测试工作,***重新部署效率较低下,存在巨大风险,模块重用性不高,技术难度较高,部署复杂。
在高并发低时延的高性能交易业务场景下,一般采用基于C++的多模块的单体应用,微服务应用场景少,无法进行水平业务拆分,跨节点跨异构***访问难度较大,缺乏可靠的垂直业务扩展方案。而基于java实现的微服务技术性能相对较低,无法满足高性能交易业务场景。在简单的业务场景下,单体应用和微服务应用的差异并不明显,如何提高框架或模块的复用性并沉淀技术能力是需要亟待解决的问题。
发明内容
本发明实施例提供了一种多线程多模块的业务流编排处理方法,包括模块注册方法、线程池编排方法、业务数据传输方法、业务流编排处理***,以解决现有模块耦合性高、线程编排困难、业务重构复杂、架构灵活性不高、开发技术要求高的问题。
本发明提供了一种多线程多模块的业务流编排处理方法,包括以下步骤,
S1,通过统一的模块注册方法,将业务模块中插件注册到主程序,所述业务模块为若干个;
S2,当请求方业务模块发起跨模块调用请求时,所述主程序中的主线程根据所述插件的线程池配置,对所述插件的线程池进行编排,并创建事件队列,所述事件队列用于线程间或线程池间数据传递,应答方业务模块监听所述事件队列,并响应调用请求,执行业务处理,进而实现多线程并行处理。
进一步地,步骤S1中的模块注册方法具体包括以下步骤:
S101,所述主程序中的主线程加载业务模块,并由模块通过全局变量的构造函数注册插件列表;
S102,主线程获取所述插件列表,通过所述插件列表加载插件,并对插件进行初始化,以资源名进行命名;
S103,所述业务模块执行插件的构造函数,并将业务函数注册到函数表,并在线程池中创建映射关系表。
进一步地,所述步骤S2通过线程池编排方法实现多线程并行处理,所述线程池编排方法具体包括以下步骤:
S201,所述请求方业务模块发起跨模块调用请求,查找应答方业务模块的目标函数,执行所述目标函数调用;
S202,所述主线程根据请求参数创建事件函数,建立事件队列;
S203,所述应答方业务模块所在线程监听事件队列,执行事件函数调用;
S204,所述应答方业务模块的插件通过其函数表响应调用请求,执行业务处理函数;
S205,所述主线程通过事件调度将结果采用异步或同步方式返回所述请求方业务模块,所述请求方业务模块继续执行函数应答处理。
进一步地,所述线程池编排方法根据所述映射关系表进行业务功能跨线程池的请求分发,所述映射关系表包括函数和资源的映射关系,通过资源名、函数名访问查找应答方业务模块及其目标函数,线程池包括若干个线程,所述线程与函数和资源的映射关系对应。
进一步地,所述事件队列存储有供线程池调度的事件函数表,所述事件函数表包括函数名、请求参数和事件函数。
进一步地,所述步骤S2通过业务数据传输方法进行数据传递,所述业务数据传输方法具体包括以下步骤:
S401,请求方业务模块将可变类型参数赋值给请求方数据对象,所述请求方数据对象以对象、数组或智能指针的形式存储可变类型参数;
S402,业务处理函数以请求方数据对象作为数据入参,执行业务;
S403,执行结束后,将结果存储在应答方数据对象中返回请求方业务模块,所述应答方数据对象可通过序列化方法向请求方业务模块输出个性化的协议格式。
进一步地,所述请求方数据对象和应答方数据对象均采用相同的业务数据结构,所述业务数据结构类型包括结构化数据类型xvalue、内存数据类型xpointer。
一种多线程多模块的业务流编排处理方法的***,包括第一微服务模块和至少一个第二微服务模块,
所述第一微服务模块包括第一业务模块、通信及协议模块和转发模块,所述第二微服务模块至少包括第二业务模块、通信及协议模块;
所述通信及协议模块位于业务模块上游,用于规定业务模块或插件之间数据传输遵循的规则,所述转发模块位于所述第一业务模块下游,用于跨线程池或跨服务的事件调度。
一种计算机设备,所述计算机设备包括:存储器和至少一个处理区,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述计算机设备执行如权利要求1-7中任一项所述的一种多线程多模块的业务流编排处理方法的各个步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的一种多线程多模块的业务流编排处理方法的各个步骤。
相比现有技术,本发明的有益效果在于:
本发明实施例中,基于微服务架构,采用C++技术栈实现了一种多线程多模块的业务流编排处理方法,通过标准化的模块注册方法、标准化的线程池编排方法、通用化的业务数据传输方法和业务流编排处理***,实现了基础架构与业务的松耦合架构,将开发难度较高的部分在基础架构中实现,以配置化方式实现微服务架构的水平和垂直方向的拆分与合并,将架构设计由开发下沉到部署阶段,由框架复用转变为业务模块复用,实现单体应用和微服务应用的快速切换,提高了技术架构的灵活性,降低了***的开发复杂度,提高了开发人员实现业务逻辑的开发效率,也提升了微服务业务模块编排和线程编排的灵活性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例中一种多线程多模块的业务流编排方法的流程图;
图2示出了本发明实施例中模块注册方法的流程图;
图3示出了本发明实施例中线程池编排方法的流程图;
图4示出了本发明实施例中线程池映射关系的示意图;
图5示出了本发明实施例中业务数据结构的示意图;
图6示出了本发明实施例中业务数据传输方法的流程图;
图7示出了本发明实施例中一种多线程多模块的业务流编排方法的***的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请中术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而包括一系列要素的过程、方法、物品或***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或***中还存在另外的相同要素。在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”。
如图1所示,本发明提供了一种多线程多模块的业务流编排处理方法,具体包括以下步骤:
S1,通过统一的模块注册方法,将业务模块中插件注册到主程序,其中业务模块可以为若干个。
S2,当请求方业务模块发起跨模块调用请求时,所述主程序中的主线程根据所述插件的线程池配置,对所述插件的线程池进行编排,并创建事件队列,所述事件队列用于线程间或线程池间数据传递,应答方业务模块监听所述事件队列,并响应调用请求,执行业务处理,进而实现多线程并行处理。
随着技术的不断更新和业务的快速发展,传统的模块化开发方法越来越难以适应现今互联网复杂的业务变化,架构重构成为制约业务发展的瓶颈,新老架构的兼容性将带来无法预估的***性风险。而软件架构重构的关键点一般集中在模块或插件管理、线程池管理、数据管理等方面。
基于C/C++等技术栈研发的软件***,模块或插件一般通过动态库的方式进行加载,业务函数通过标准接口进行导出,业务实现方式决定了接口参数的定义。在业务发生变化时,需要重新定义接口参数,甚至需要对整个软件***进行调整;模块间关系独立,代码重用难度较大。在传统的开发方法中,通过对技术框架进行沉淀,形成动态库或jar包,业务模块引用动态库或jar包,进行框架复用。但对于新建***,即使进行了框架复用,也需要从头进行开发,构建线程池,加载模块和插件,业务变化时,需要对整个应用进行重构。
本发明结合模块注册方法和线程池编排方法,将框架复用转变为业务模块复用,无需从头开发,通过业务编排挂载不同的业务插件即可实现新的业务。
如图2所示,本发明步骤S1中提供了一种模块注册方法,具体包括以下步骤:
S101,主程序中的主线程加载业务模块,业务模块加载到内存后,自动初始化全局变量,然后通过全局变量的构造函数注册插件列表。
S102,主线程获取插件列表,通过该插件列表加载插件,通过插件列表中的注册函数,对插件进行初始化,以资源名进行命名,插件注册函数实现了一个回调函数,线程池可通过该函数创建插件对象。
S103,业务模块执行插件的构造函数,并将业务函数注册到函数表,并在线程池中创建映射关系表,具体地,该映射关系表为资源和函数映射关系。
本发明中模块注册方法提供了一种将模块注册到主程序的标准化方法,模块接口仅提供注册接口,将业务接口下沉到插件中。一个模块可以包括多个插件,插件间关系保持独立,通过业务函数注册与资源映射的方式建立插件间的关系,由线程池统一调度,通过统一所有模块或插件的注册方法,将业务与模块的管理解耦合;同时开发人员按模板实现业务函数,无需关心如何创建线程池,线程池由配置文件指定,并且在线程与非线程两种状态下自由切换;被依赖的业务插件中的业务函数,通过宏将业务函数注入到当前模块,将被调用的函数进行缓存,提供与传统的调用速度无差异的调用方式,被依赖的业务插件由配置文件指定,并且具有可替换性。
如图3所示,本发明步骤S2通过线程池编排方法实现多线程并行处理,其中线程池编排方法具体包括以下步骤:
S201,请求方业务模块中发起跨模块调用请求,查找应答方业务模块的目标函数,执行目标函数调用;
具体地,当某个业务功能发起跨模块调用时,由请求方业务模块中的业务逻辑实现,执行跨模块业务请求,并通过资源名和函数列表查找应答方业务模块的目标函数,进而执行目标函数调用。
S202,主线程根据请求参数创建事件函数,建立事件队列;
具体地,主程序的线程池管理模块(即主线程)将请求参数建立拷贝,创建事件函数,并将函数名、请求参数、事件函数写入事件队列,事件队列是存储的是一个供线程池调度的事件函数表。
S203,应答方业务模块所在线程池监听事件队列,执行事件函数调用;
S204,应答方业务模块的插件通过初始化时注册的函数表响应调用请求,执行业务处理函数,并返回结果;
S205,主线程通过事件调度,根据业务需要将结果采用异步或同步方式返回请求方业务模块,请求方业务模块继续执行函数应答处理。
本发明中的线程池编排方法提供了一种对线程池进行编排与管理的标准化方法,线程池一般在主程序实现,模块或插件中可无需实现。线程池编排与管理在设计上具有业务无关性,具体业务由业务模块或插件实现,一个进程可包含多个线程池,多个模块或插件可独占线程池,也可共享线程池。在共享线程池的情况下,线程池内只能含一个主插件,可以包含多个子插件,当主插件调用子插件时,通过子插件业务函数的函数地址直接调用,性能与传统的函数调方式无差异。此外,将线程池与依赖插件的配置管理,从开发阶段转移到实施阶段,使开发与实施解耦合,由线上的业务场景决定实施方案,提供可动态调整的技术架构。
如图4所示,进一步地,每个线程均保存一份映射关系表,保证多线程间的资源隔离,同时线程池中将创建一份新的映射关系,通过该映射关系,进行跨线程池的请求分发,并通过线程池事件队列,实现多线程的并行处理。
如图5-6所示,本发明步骤S2通过业务数据传输方法进行数据传递,其中业务数据传输方法具体包括以下步骤:
S401,请求方业务模块将可变类型参数赋值给请求方数据对象,请求方数据对象以对象、数组或智能指针的形式存储多个可变类型参数;
S402,业务处理函数以请求方数据对象作为数据入参,执行业务;
S403,执行结束后,将结果存储在应答方数据对象中返回请求方业务模块,应答方数据对象可通过序列化方法向请求方业务模块输出个性化的协议格式。
具体地,请求方数据对象和应答方数据对象均采用相同的业务数据结构,业务数据结构可变类型的数据结构,通过数据对象提供一种多层次的数据结构支持,涵盖数组、对象、字符串、数字等数据类型;数据对象接口是面向业务功能的标准接口,使业务功能与原始数据隔离,无需关心数据对象支持的原始数据格式;数据格式提供多种协议格式支持,具有业务无关性。
业务数据结构类型包括结构化数据类型xvalue和内存数据类型xpointer,其中xvalue提供包括但不限于json、protobuf、yaml、二进制等格式的解析及序列化;内存数据类型xpointer支持自定义的数据格式,根据谁申请谁释放的原则,通过智能指针实现数据管理,避免内存泄露,实现业务数据的安全可控。
插件中业务函数采用数据类型xvalue和xpointer作为函数入参与返回值,通过通用的函数调用方式,实现原子化的业务解耦及跨线程的业务数据传输,支持通用化可扩展的业务流编排。
如图7所示,本发明实施例提供了一种多线程多模块的业务流编排处理方法的***,包括第一微服务模块和至少一个第二微服务模块,第一微服务模块包括第一业务模块、通信及协议模块和转发模块,第二微服务模块至少包括第二业务模块、通信及协议模块;
通信及协议模块位于业务模块上游,用于规定业务模块或插件之间数据传输遵循的规则,转发模块位于所述第一业务模块下游,用于跨线程池或跨服务的事件调度。
通过对模块进行不同的组合,在无需改动代码的情况下,可实现单体应用架构与微服务架构间的快速拆分与合并。以图7中的单体应用为例,实现了第一业务模块和第二业务模块,第二业务模块为第一业务模块的下游模块,两者存在依赖关系。随着业务的发展,更多新业务需要迭代,出现了多个新业务服务对第二业务模块的依赖。为了提高第二业务模块通用性,需要进行微服务拆分。在传统的方式下,由于新业务需求的出现,需要对原有的单体应用进行重构,整个***可能重新开发。而通过本发明中的多线程多模块的业务流编排处理方法的***,在原有单体应用中配置转发模块做为第一业务模块的下游模块形成第一微服务模块,第二业务模块剥离并重新部署为第二微服务模块,而转发模块的下游模块即为第二微服务模块,以最小代价实现了服务的拆分。反之亦然,当业务场景收缩时,可通过服务合并降低IT成本。
该***通过对模块解耦合,实现通讯与协议层、业务层、转发层的分离;通过对转发层进行扩展,实现单体应用向微服务应用的垂直拆分;通过对接入层进行扩展,通过配置文件对业务功能进行分解,实现单体应用向微服务应用的水平拆分。
本发明还提供了一种计算机设备,该计算机设备包括存储器和至少一个处理器,存储器中存储有指令,存储器和处理器通过线路互连;至少一个处理器调用存储器中的指令,以使得计算机设备执行如图1-6所示的一种多线程多模块的业务流编排处理方法的各个步骤。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如图1-6所示的一种多线程多模块的业务流编排处理方法的各个步骤。
本发明上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(AN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所发明的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (10)
1.一种多线程多模块的业务流编排处理方法,其特征在于,包括以下步骤,
S1,通过统一的模块注册方法,将业务模块中插件注册到主程序,所述业务模块为若干个;
S2,当请求方业务模块发起跨模块调用请求时,所述主程序中的主线程根据所述插件的线程池配置,对所述插件的线程池进行编排,并创建事件队列,所述事件队列用于线程间或线程池间数据传递,应答方业务模块监听所述事件队列,并响应调用请求,执行业务处理,进而实现多线程并行处理。
2.根据权利要求1所述的一种多线程多模块的业务流编排处理方法,其特征在于,步骤S1中的模块注册方法具体包括以下步骤:
S101,所述主程序中的主线程加载业务模块,并由业务模块通过全局变量的构造函数注册插件列表;
S102,主线程获取所述插件列表,通过所述插件列表加载插件,并对插件进行初始化,以资源名进行命名;
S103,所述业务模块执行插件的构造函数,并将业务函数注册到函数表,并在线程池中创建映射关系表。
3.根据权利要求2所述的一种多线程多模块的业务流编排处理方法,其特征在于,所述步骤S2通过线程池编排方法实现多线程并行处理,所述线程池编排方法具体包括以下步骤:
S201,所述请求方业务模块发起跨模块调用请求,查找应答方业务模块的目标函数,执行所述目标函数调用;
S202,所述主线程根据请求参数创建事件函数,建立事件队列;
S203,所述应答方业务模块所在线程监听事件队列,执行事件函数调用;
S204,所述应答方业务模块的插件通过其函数表响应调用请求,执行业务处理函数;
S205,所述主线程通过事件调度将结果采用异步或同步方式返回所述请求方业务模块,所述请求方业务模块继续执行函数应答处理。
4.根据权利要求3所述的一种多线程多模块的业务流编排处理方法,其特征在于,所述线程池编排方法根据所述映射关系表进行业务功能跨线程池的请求分发,所述映射关系表包括函数和资源的映射关系,通过资源名、函数名访问查找应答方业务模块及其目标函数,线程池包括若干个线程,所述线程与函数和资源的映射关系对应。
5.根据权利要求3所述的一种多线程多模块的业务流编排处理方法,其特征在于,所述事件队列存储有供线程池调度的事件函数表,所述事件函数表包括函数名、请求参数和事件函数。
6.根据权利要求1所述的一种多线程多模块的业务流编排处理方法,其特征在于,所述步骤S2通过业务数据传输方法进行数据传递,所述业务数据传输方法具体包括以下步骤:
S401,请求方业务模块将可变类型参数赋值给请求方数据对象,所述请求方数据对象以对象、数组或智能指针的形式存储可变类型参数;
S402,业务处理函数以请求方数据对象作为数据入参,执行业务;
S403,执行结束后,将结果存储在应答方数据对象中返回请求方业务模块,所述应答方数据对象可通过序列化方法向请求方业务模块输出个性化的协议格式。
7.根据权利要求6所述的一种多线程多模块的业务流编排处理方法,其特征在于,所述请求方数据对象和应答方数据对象均采用相同的业务数据结构,所述业务数据结构类型包括结构化数据类型xvalue、内存数据类型xpointer。
8.根据权利要求1所述的一种多线程多模块的业务流编排处理方法的***,其特征在于,
包括第一微服务模块和至少一个第二微服务模块,所述第一微服务模块包括第一业务模块、通信及协议模块和转发模块,所述第二微服务模块至少包括第二业务模块、通信及协议模块;
所述通信及协议模块位于业务模块上游,用于规定业务模块或插件之间数据传输遵循的规则,所述转发模块位于所述第一业务模块下游,用于执行跨线程池或跨服务的事件调度。
9.一种计算机设备,其特征在于,所述计算机设备包括:存储器和至少一个处理区,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述计算机设备执行如权利要求1-7中任一项所述的一种多线程多模块的业务流编排处理方法的各个步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的一种多线程多模块的业务流编排处理方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211730196.0A CN116089036B (zh) | 2022-12-30 | 2022-12-30 | 多线程多模块的业务流编排处理方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211730196.0A CN116089036B (zh) | 2022-12-30 | 2022-12-30 | 多线程多模块的业务流编排处理方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116089036A true CN116089036A (zh) | 2023-05-09 |
CN116089036B CN116089036B (zh) | 2023-12-15 |
Family
ID=86213167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211730196.0A Active CN116089036B (zh) | 2022-12-30 | 2022-12-30 | 多线程多模块的业务流编排处理方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116089036B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116775171A (zh) * | 2023-08-25 | 2023-09-19 | 太平金融科技服务(上海)有限公司深圳分公司 | 一种架构切换方法、装置、电子设备及存储介质 |
CN116909547A (zh) * | 2023-09-13 | 2023-10-20 | 长城证券股份有限公司 | 基于axi框架的业务功能在线开发方法、实现方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932932A (zh) * | 2014-03-20 | 2015-09-23 | 腾讯科技(深圳)有限公司 | 一种业务异步处理方法、装置和*** |
CN110688280A (zh) * | 2019-09-25 | 2020-01-14 | 中国建设银行股份有限公司 | 一种告警事件的管理***、方法、设备和存储介质 |
CN113762718A (zh) * | 2021-08-03 | 2021-12-07 | 陕西星邑空间技术有限公司 | 低轨互联网星座在轨运行自动化管理*** |
CN114363378A (zh) * | 2022-01-14 | 2022-04-15 | 上海交通大学 | 一种面向工业异构网络管理的微服务***架构和管理方法 |
-
2022
- 2022-12-30 CN CN202211730196.0A patent/CN116089036B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932932A (zh) * | 2014-03-20 | 2015-09-23 | 腾讯科技(深圳)有限公司 | 一种业务异步处理方法、装置和*** |
CN110688280A (zh) * | 2019-09-25 | 2020-01-14 | 中国建设银行股份有限公司 | 一种告警事件的管理***、方法、设备和存储介质 |
CN113762718A (zh) * | 2021-08-03 | 2021-12-07 | 陕西星邑空间技术有限公司 | 低轨互联网星座在轨运行自动化管理*** |
CN114363378A (zh) * | 2022-01-14 | 2022-04-15 | 上海交通大学 | 一种面向工业异构网络管理的微服务***架构和管理方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116775171A (zh) * | 2023-08-25 | 2023-09-19 | 太平金融科技服务(上海)有限公司深圳分公司 | 一种架构切换方法、装置、电子设备及存储介质 |
CN116775171B (zh) * | 2023-08-25 | 2023-12-05 | 太平金融科技服务(上海)有限公司深圳分公司 | 一种架构切换方法、装置、电子设备及存储介质 |
CN116909547A (zh) * | 2023-09-13 | 2023-10-20 | 长城证券股份有限公司 | 基于axi框架的业务功能在线开发方法、实现方法及设备 |
CN116909547B (zh) * | 2023-09-13 | 2023-12-15 | 长城证券股份有限公司 | 基于axi框架的业务功能在线开发方法、实现方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116089036B (zh) | 2023-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116089036B (zh) | 多线程多模块的业务流编排处理方法、设备及存储介质 | |
CN109002362B (zh) | 一种服务方法、装置、***以及电子设备 | |
CN109284197B (zh) | 基于智能合约的分布式应用平台及实现方法 | |
CN111767143B (zh) | 交易数据处理方法、装置、设备及*** | |
US11210131B2 (en) | Method and apparatus for assigning computing task | |
CN110413822B (zh) | 离线图像结构化分析方法、装置、***和存储介质 | |
CN116011562A (zh) | 算子处理方法及算子处理装置、电子设备和可读存储介质 | |
US9229980B2 (en) | Composition model for cloud-hosted serving applications | |
CN103324479A (zh) | 松散环境下分布式大数据计算的中间件体系框架 | |
CN113448655B (zh) | C标准动态库的调用方法与装置 | |
CN105100180A (zh) | 集群节点动态加载的方法、装置及*** | |
Grasic et al. | Automating ontology based information integration using service orientation | |
Park et al. | A flexible and scalable agent platform for multi-agent systems | |
CN110764769B (zh) | 处理用户请求的方法和装置 | |
CN114840319A (zh) | 一种业务需求的处理方法和装置 | |
CN112905273A (zh) | 一种服务调用方法和装置 | |
CN116909547B (zh) | 基于axi框架的业务功能在线开发方法、实现方法及设备 | |
Cheng et al. | HSOP: A Hybrid Service Orchestration Platform for Internet-Telephony Networks | |
CN107463438B (zh) | 用于多Openstack环境的信息处理方法、装置和*** | |
CN115421890A (zh) | 业务处理方法、装置、介质及电子设备 | |
CN117033033B (zh) | 服务总线中公共服务高效配置和交互的方法 | |
CN108989586B (zh) | Ivr实现的方法、***、设备及存储介质 | |
Cost et al. | Agent development with jackal | |
CN116679918A (zh) | 业务处理方法、装置、设备、***及可读存储介质 | |
CN118170520A (zh) | 基于嵌入式多核实时操作***的dag任务调度方法、计算机程序产品、存储介质及终端 |
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 |