基于AXI框架的业务功能在线开发方法、实现方法及设备技术

技术编号:39132454 阅读:12 留言:0更新日期:2023-10-23 14:51
本发明专利技术涉及业务开发技术领域,公开了一种基于AXI框架的业务功能在线开发方法、实现方法、设备及存储介质。业务功能在线开发方法包括:主程序获取编写好的若干新的业务功能插件,并对业务功能插件中的若干业务函数进行初始化;主程序将各业务功能插件附加到AXI框架的模块工程中进行编译,得到新的业务模块;主程序中的主线程根据插件配置文件,加载业务模块,并将业务模块中的各业务功能插件中的业务函数注册到主线程的线程池中。本发明专利技术实现了基础架构与业务的松耦合架构,将框架复用转变为业务功能插件的复用,提高了技术架构的灵活性,降低了业务开发复杂度,提高了业务功能的开发及重构效率以及微服务业务编排的灵活性。开发及重构效率以及微服务业务编排的灵活性。开发及重构效率以及微服务业务编排的灵活性。

【技术实现步骤摘要】
基于AXI框架的业务功能在线开发方法、实现方法及设备


[0001]本专利技术涉及业务开发
,尤其涉及一种基于AXI框架的业务功能在线开发方法、实现方法、设备及存储介质。

技术介绍

[0002]在互联网业务发展过程中,业务系统逐步由单体应用向互联网应用过渡,系统架构由传统架构向微服务架构过渡,单体应用被分解为微小且相互联系的微服务。传统业务系统主要采用多线程多模块的方式构建单体应用,通过消息队列进行业务分解,在微服务方面的成熟架构相对较少。
[0003]随着业务的不断发展,业务系统越来越复杂,微服务的数量不断上升,微服务的划分随着业务的变化需要不断进行调整,而有些微服务则需要具有业务的水平拆分能力。水平拆分一般采用API网关的形式进行业务分发,不同的微服务相对独立,可以快速的进行水平分解和扩容,技术方案相对成熟。当业务系统发展遇到瓶颈时,需要对现有的微服务粒度重新进行划分,而这需要大量的开发与测试工作,由于无法快速解决业务单元的拆分与合并,进而使得业务系统重新部署效率较低下,存在巨大风险,模块重用性也不高,并且技术难度较高以及部署复杂。随着业务复杂性的增加,如何提高框架或模块的复用性,进而提高业务功能的开发及重构效率,提升微服务业务编排的灵活性,是目前需要亟待解决的问题。

技术实现思路

[0004]本专利技术的主要目的在于提供一种基于AXI框架的业务功能在线开发方法、实现方法、设备及存储介质,旨在解决现有在业务复杂性不断增加的情况下,如何提高框架或模块的复用性的技术问题。
[0005]本专利技术第一方面提供了一种基于AXI框架的业务功能在线开发方法,所述AXI框架包括多个AXI组件,各所述AXI组件之间通过内存或消息总线进行通信,所述AXI组件由若干模块组成,所述模块由若干插件组成,所述AXI组件为独立进程,所述模块为进程中的独立模块,所述插件为编译到所述模块中的独立业务代码,所述业务功能在线开发方法包括:主程序获取编写好的若干新的业务功能插件,并对所述业务功能插件中的若干业务函数进行初始化;所述主程序将各所述业务功能插件附加到所述AXI框架的模块工程中进行编译,得到新的业务模块;所述主程序中的主线程根据插件配置文件,加载所述业务模块,并将所述业务模块中的各所述业务功能插件中的业务函数注册到所述主线程的线程池中。
[0006]可选的,在本专利技术第一方面的第一种实现方式中,所述插件配置文件包括插件资源名称、模块与插件配置、线程池配置、资源配置、业务功能配置。
[0007]可选的,在本专利技术第一方面的第二种实现方式中,所述插件资源名称用于唯一标识插件,通过所述插件资源名称访问对应插件,插件资源包含插件对象;所述模块与插件配
置用于指定创建插件对象需要的模块或插件;所述线程池配置用于创建运行插件资源所需的线程池,线程池中每个线程维护插件资源中的一个插件对象;所述资源配置用于管理资源别名与插件资源名称的映射关系,上游插件通过资源别名调度访问下游插件;所述业务功能配置用于设置插件对象的个性化配置。
[0008]可选的,在本专利技术第一方面的第三种实现方式中,所述主程序中的主线程根据插件配置文件,加载所述业务模块,并将所述业务模块中的各所述业务功能插件的业务函数注册到所述主线程的线程池中包括:所述主程序的主线程加载并解析所述插件配置文件;所述主线程根据所述模块与插件配置,加载对应业务模块至内存中,其中,所述业务模块包括若干业务功能插件;所述业务模块初始化一个全局变量以及一个全局的插件列表,通过所述全局变量的构造函数,将各所述业务功能插件的注册函数写入所述插件列表;所述主线程获取所述业务模块的插件列表,根据所述线程池配置,创建新的线程池,并对所述线程池进行初始化;所述主线程通过所述插件列表中的注册函数,在所述线程池中初始化插件对象并以资源名进行命名,其中,所述线程池包括多个线程,每个线程对应初始化一个插件对象;所述主线程通过所述业务功能插件的构造函数,将所述业务功能插件中的业务函数注册到所述线程池的线程对象中。
[0009]可选的,在本专利技术第一方面的第四种实现方式中,所述业务功能在线开发方法还包括:在注册所述业务函数后,所述主线程在所述线程池创建映射关系表,并保存所述线程池中各线程分别与所述业务功能插件、所述业务函数之间的映射关系,各所述线程分别保存一份所述映射关系表的副本。
[0010]可选的,在本专利技术第一方面的第五种实现方式中,所述业务功能在线开发方法还包括:在注册所述业务函数后,所述主线程创建不同线程池中线程之间的数据转换函数,所述数据转换函数用于实现不同线程间业务函数的数据转换,以将多个线程池关联,所述数据转换函数的接口实现方式与对应业务函数保持一致。
[0011]本专利技术第二方面提供了一种基于AXI框架的业务功能在线开发方法开发的业务功能的实现方法,所述业务功能的实现方法包括:主程序的主线程接收业务功能访问请求,并确定响应所述业务功能的业务功能插件,所述业务功能插件运行在第一线程池的线程下;所述主线程通过所述第一线程池的线程,访问所述业务功能插件并执行所述业务功能插件的第一业务函数;当所述第一业务函数需要调用第二业务函数时,所述主线程在所述第一线程池查找所述第二业务函数;若所述第二业务函数已在所述第一线程池注册,则所述主线程通过所述第一业务函数调用并运行所述第二业务函数;若所述第二业务函数未在所述第一线程池注册,则所述主线程根据全局映射关系
表,查找所述第二业务函数注册的第二线程池;当在所述第二线程池查找到所述第二业务函数时,所述主线程返回所述业务函数对应的线程间的数据转换函数;所述主线程通过所述数据转换函数执行跨线程调用,并在所述第二线程池中调用并运行所述第二业务函数。
[0012]可选的,在本专利技术第二方面的一种实现方式中,所述业务功能的实现方法应用于基于AXI框架的微服务系统,所述微服务系统包括多个协议组件、多个业务组件以及多个节点组件,每一个业务组件对应一个微服务,所述协议组件、所述业务组件和所述节点组件均为可独立运行的进程,各组件之间通过内存或消息总线进行通信,所述业务组件包括多个独立的业务模块,所述业务模块包括多个业务功能插件。
[0013]本专利技术第三方面提供了一种计算机设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述计算机设备执行上述的基于AXI框架的业务功能在线开发方法的各个步骤。
[0014]本专利技术的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的基于AXI框架的业务功能在线开发方法的各个步骤。
[0015]相比现有技术,本专利技术的有益效果在于:本专利技术基于微服务架构,采用C++技术栈实现了一种基于AXI架构的业务功能开发与实现方法,通过标准化的业务功能开发与实现方法,实现了基础架构与业务的松耦合架构,将开发难度较高的部分在基础架构中实现,以配置化方式实现微服务架构的水平拆分与合并,将架构设计由开发本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于AXI框架的业务功能在线开发方法,其特征在于,所述AXI框架包括多个AXI组件,各所述AXI组件之间通过内存或消息总线进行通信,所述AXI组件由若干模块组成,所述模块由若干插件组成,所述AXI组件为独立进程,所述模块为进程中的独立模块,所述插件为编译到所述模块中的独立业务代码,所述业务功能在线开发方法包括:主程序获取编写好的若干新的业务功能插件,并对所述业务功能插件中的若干业务函数进行初始化;所述主程序将各所述业务功能插件附加到所述AXI框架的模块工程中进行编译,得到新的业务模块;所述主程序中的主线程根据插件配置文件,加载所述业务模块,并将所述业务模块中的各所述业务功能插件中的业务函数注册到所述主线程的线程池中。2.根据权利要求1所述的基于AXI框架的业务功能在线开发方法,其特征在于,所述插件配置文件包括插件资源名称、模块与插件配置、线程池配置、资源配置、业务功能配置。3.根据权利要求2所述的基于AXI框架的业务功能在线开发方法,其特征在于,所述插件资源名称用于唯一标识插件,通过所述插件资源名称访问对应插件,插件资源包含插件对象;所述模块与插件配置用于指定创建插件对象需要的模块或插件;所述线程池配置用于创建运行插件资源所需的线程池,线程池中每个线程维护插件资源中的一个插件对象;所述资源配置用于管理资源别名与插件资源名称的映射关系,上游插件通过资源别名调度访问下游插件;所述业务功能配置用于设置插件对象的个性化配置。4.根据权利要求3所述的基于AXI框架的业务功能在线开发方法,其特征在于,所述主程序中的主线程根据插件配置文件,加载所述业务模块,并将所述业务模块中的各所述业务功能插件的业务函数注册到所述主线程的线程池中包括:所述主程序的主线程加载并解析所述插件配置文件;所述主线程根据所述模块与插件配置,加载对应业务模块至内存中,其中,所述业务模块包括若干业务功能插件;所述业务模块初始化一个全局变量以及一个全局的插件列表,通过所述全局变量的构造函数,将各所述业务功能插件的注册函数写入所述插件列表;所述主线程获取所述业务模块的插件列表,根据所述线程池配置,创建新的线程池,并对所述线程池进行初始化;所述主线程通过所述插件列表中的注册函数,在所述线程池中初始化插件对象并以资源名进行命名,其中,所述线程池包括多个线程,每个线程对应初始化一个插件对象;所述主线程通过所述业务功能插件的构造函数,将所述业务功能插件中的业务函数注册到所述线程池的线程对象中。5.根据权利要求1所述的基于AXI框架的业务功能在线开发方法,其特征在于,所述业务功能在线开发方法还包括:在注册所述业务函数后...

【专利技术属性】
技术研发人员:梁超张文精伍圣寅徐楠
申请(专利权)人:长城证券股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1