CN117033033B - 服务总线中公共服务高效配置和交互的方法 - Google Patents

服务总线中公共服务高效配置和交互的方法 Download PDF

Info

Publication number
CN117033033B
CN117033033B CN202311289237.1A CN202311289237A CN117033033B CN 117033033 B CN117033033 B CN 117033033B CN 202311289237 A CN202311289237 A CN 202311289237A CN 117033033 B CN117033033 B CN 117033033B
Authority
CN
China
Prior art keywords
service
routing
public
class component
logic
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
Application number
CN202311289237.1A
Other languages
English (en)
Other versions
CN117033033A (zh
Inventor
黄海晴
李程扬
江智明
陈航飞
方晓茹
朱启敏
陈文座
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XIAMEN ZHIYE SOFTWARE ENGINEERING CO LTD
Original Assignee
XIAMEN ZHIYE SOFTWARE ENGINEERING CO LTD
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by XIAMEN ZHIYE SOFTWARE ENGINEERING CO LTD filed Critical XIAMEN ZHIYE SOFTWARE ENGINEERING CO LTD
Priority to CN202311289237.1A priority Critical patent/CN117033033B/zh
Publication of CN117033033A publication Critical patent/CN117033033A/zh
Application granted granted Critical
Publication of CN117033033B publication Critical patent/CN117033033B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明服务总线中公共服务高效配置和交互的方法,每个微服务节点内部能自动查找Java虚拟机中接口路由上下文,通过发现公共服务的关联点进行调用,能优化通过网络交互调用公共服务带来的性能问题,本发明通过简单组件界面化配置实现快速的公共服务复用;服务复用时同一个业务服务逻辑无须大量的路由拆解;服务复用公共服务的实现都在同一个JVM内存环境下进行,无网络性能瓶颈;可快速基于业务服务的主日志查看各个公共服务模块的日志,便于服务日常运维问题排查需要,业务流转逻辑由程序组织记录,无须人工处理,服务日常运维异常排查问题效率高。

Description

服务总线中公共服务高效配置和交互的方法
技术领域
本发明属于数据处理领域,具体涉及一种服务总线中公共服务高效配置和交互的方法。
背景技术
在医院信息化系统中点对点问题常见的解决方式是基于SOA架构搭建的集成平台服务总线,服务总线提供了许多标准规范的服务列表,这些服务一般基于行业中间件进行可视化编排配置实现服务开放、服务调用、接口标准转换、数据格式转换等。通常包括约定入参校验、入参读取、业务相关逻辑、标准异常响应、标准正常响应等编排模块进行可视化编排配置。
服务总线的服务中经常出现入参校验、入参读取、请求标准响应等逻辑相同的交互模块,在以往的行业中间件中常常使用以下几种方式解决:
1、不考虑复用,如果有n个服务,则相关逻辑在n个服务中分别实现,如遇到入参校验逻辑需要修改,则需要在配置界面修改、发布n次。如图1中内容相同实际完全独立的三个commonReqValid逻辑副本1-3在ABC三个服务中分别实现的示例;
2、使用路由连接器进行业务逻辑和公共逻辑之间跳转,如服务serverA只有一个公共逻辑commonReqValid,使用路由连接器完成路由需要以下逻辑连接:serverA_1服务+commonReqValid服务+serverA_2服务,如图2所示。其主要问题在于从公共逻辑返回原业务逻辑时需要人工配置大量的返回判断,见图2的右侧逻辑,则可能导致原有serverA服务被迫拆解为多个子路由serverA_1服务、serverA_2服务、serverA_3服务等。如果人工配置遗忘设置返回逻辑则会导致业务错误,十分不便于配置和管理。
3、使用协议http、soap等客户端网络调用公共服务来实现服务快速复用,如图3所示,使用这种方式可以很好解决使用路由连接其带来的问题,但是如果一个服务使用多个公共逻辑,有这两个问题:第一、因调用公共服务会带来非常多的网络消耗;第二,公共服务作为流量汇聚点流量压力大。这两点都会带来架构性能问题。
现有的解决方式存在重复配置、配置效率低、配置化复杂、运维管理困难、容易由于配置人员疏忽引起业务异常、网络交互传输过于频繁等问题。
发明内容
本发明的目的在于提供一种服务总线中公共服务高效配置和交互的方法,每个微服务节点内部自动查找Java虚拟机(JVM)中接口路由上下文,通过发现公共服务的关联点进行公共服务的快速调用,解决使用协议http、soap等客户端网络调用公共服务来实现服务快速复用时,频繁网络调用引起的性能低问题,以及优化公共服务日常运维排查复杂的问题。
本发明服务总线中公共服务高效配置和交互的方法,包括如下步骤:
步骤1、改进使用协议http或soap客户端网络调用公共服务的业务服务,将用于网络调用公共服务的http或soap客户端升级为路由类组件,改进的使用协议http客户端网络调用公共服务的业务服务,包括HTTP入口逻辑、路由类组件和业务逻辑,通过该路由类组件将网络调用逻辑转换为在同一个JVM内存环境下查找JVM中接口路由上下文,发现公共服务的关联点,从而发现和安全调用公共服务;
步骤2、路由类组件是在JVM中找到公共服务并进行安全调用,该路由类组件处理请求消息顺序执行前置管道、主逻辑管道、后置管道的步骤:
步骤2.1、路由类组件执行前置管道内部逻辑:将其他路由流转下来的交换机exchange作为入参;从交换机exchange中获取camelRouteClassList,先判断camelRouteClassList的长度是否超过限制,若是,则交换机exchange路由到异常统一处理管道,若否,则判断camelRouteClassList是否包含本路由类组件的唯一码RouteCode,若是,则交换机exchange路由到异常统一处理管道,若否,则创建RouteClassReqModel实体,并添加到交换机exchange的camelRouteClassList中,随后交换机exchange将流转到主逻辑管道;
步骤2.2、路由类组件执行主逻辑管道内部逻辑:先判断本管道成员targetConsumer不空且targetConsumer状态是否有效,若否,则使用findConsumer方法查找目标路由targetConsumer,若是,则清洗交换机,创建新交换机newExchange,将原交换机exchange的业务数据快速拷贝一份到新交换机newExchange;执行目标路由,以纯净的新交换机newExchange为入参,使用targetConsumer作为目标子路由进行调用;清洗更新,新交换机newExchange包含目标子路由执行结果的业务数据,仅将业务数据更新回原交换机exchange;随后交换机exchange将流转到后置管道;
步骤2.3、路由类组件执行后置管道内部逻辑:先将前置管道和主逻辑管道代码耗时记录到交换机exchange属性中,将本路由类组件配置数据的版本号记录到交换机exchange属性中;判断交换机exchange是否包含CamelExceptionCaught,若是,则交换机exchange流转到异常统一处理管道,若否,则本路由类组件执行结束,之后交换机exchange自动流转到其他业务路由节点;
所述异常统一处理管道,用于将各类协议、组件产生的异常统一收集归档到日志存储库,并统一标准化响应给第三方;
步骤3、保证多个微服务内部公共服务代码同步一致,包括如下实现步骤:
通过服务总线后台对业务服务的路由类组件进行可视化配置;
将路由类组件的数据发布到实时业务环境底层实现逻辑;
路由类组件日常消息运维排查:以各业务服务为主形成运维日志,打开运维日志查询页面,查询筛选业务数据,查看业务服务内部流转链路图,通过点击调用公共服务的路由类组件节点,打开路由类组件调用公共服务内部流转逻辑图,基于各业务服务查看各个公共服务模块的日志。
所述步骤1中路由类组件调用公共服务的过程完全在JVM内存中进行,调用方发起调用总线中业务服务的请求,该业务服务的请求被服务总线所在的服务器网卡TCP接收缓冲区接收,该业务服务的请求进入服务总线业务节点进程的JVM内存时,由netty容器的http模块进行入参数据的解包,并传递给服务总线中Camel上下文池中与该业务服务相关的接口入口路由点,该入口路由点将该业务服务的请求传递给用于调用公共服务的路由类组件,该路由类组件直接在JVM内存中找到公共服务的关联点。
所述步骤2.2中findConsumer方法查找目标路由targetConsumer,具体为:
使用当前管道所属路由类组件的ID作为入参routeId,读取所属路由类组件初始化时缓存的所有路由上下文ContextModelList,遍历ContextModelList,判断每个上下文中是否存在以所属路由类组件的ID为入参routeId的路由route,并获取其唯一consumer作为目标路由targetConsumer。
所述通过服务总线后台对业务服务的路由类组件进行可视化配置,具体为:
打开服务设计编排页面、选择业务服务、开启当前业务服务的编辑锁、拖拽添加路由类组件、连线路由类组件的前后逻辑连线、配置要调用的目标公共服务、保存当前业务服务、打开服务发布页面、开启服务发布锁、新增服务发布任务、选择要发布的业务服务、保存发布任务配置、点击执行服务发布、新版服务发布到业务应用节点。
所述将路由类组件的数据发布到实时业务环境底层实现逻辑,通过以下步骤进行:
在服务总线后台可视化配置界面选择发布执行,进入持久化数据库执行数据表持久化,待持久化数据库成功持久化后,向服务总线后台可视化配置界面返回成功持久化结果;
在服务总线后台可视化配置界面执行更新推送,服务总线业务实时承载应用节点n开启服务更新,从持久化数据库查询版本数据读取最新服务版本,服务总线业务实时承载应用节点n确认收到最新服务版本后执行服务重启,并向服务总线后台可视化配置界面返回更新推送成功结果;
服务总线后台可视化配置界面执行持久化结果,持久化数据库开始更新任务状态数据,持久化数据库成功持久化后,向服务总线后台可视化配置界面返回确认结束。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
采用本发明的技术方案后,每个微服务节点内部能自动查找Java虚拟机中接口路由上下文,通过发现公共服务的关联点进行调用,能优化通过网络交互调用公共服务带来的性能问题,具有如下有益效果:
(1)通过简单组件界面化配置实现快速的公共服务复用;
(2)服务复用公共服务的实现都在同一个JVM内存环境下进行,对公共服务的调用是在JVM内存中实现交互的,因此无网络性能瓶颈,其交互性能远高于使用网络客户端网络调用公共服务的实现方式;
(3)本发明以业务服务为主形成运维日志,可快速基于业务服务的主日志查看各个公共服务模块的日志,便于服务日常运维问题排查需要,此过程业务流转逻辑由程序组织记录,无须人工处理,服务日常运维异常排查问题效率高;
(4)ServerA服务通过同一个路由器组件调用公共服务,不管使用几个公共服务,无须拆解,因此,服务复用时同一个业务服务逻辑无须大量的路由拆解。
附图说明
图1为现有的内容相同完全独立三个commonReqValid逻辑副本在ABC服务中分别实现的示意图;
图2为现有的使用路由连接器进行业务逻辑和公共逻辑之间跳转的示意图;
图3为现有的使用协议http客户端网络调用公共服务的示意图;
图4为本发明ServerA服务的外部逻辑结构示意图;
图5为本发明ServerA服务中路由类组件内部实现流程图;
图6为本发明路由类组件的可视化配置流程;
图7为本发明将路由类组件的数据发布到实时业务环境流程图;
图8为本发明路由类组件日常消息运维排查的系统操作步骤;
图9为本发明同一个JVM内存环境下进行服务调用的流程示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一
本实施例一应用于医院信息化系统,结合具体应用场景,简述本发明涉及的名词定义:
接口(查询病床信息接口):包括http服务端-查询病床信息入口、路由类组件-统一入参校验、路由类组件-入参标准化、sql组件-执行查询病床信息语法等路由节点,其中“http服务端”是指一种入口组件开放的是http协议的服务端接口,“查询病床信息入口”是指使用“http服务端”组件开放的用于病床信息查询接口,通过查询病床信息接口接收外部请求消息,并且只有基于路由节点“http服务端-查询病床信息入口”才能接收经由查询病床信息接口传入的外部请求消息,经由路由节点处理请求消息的路径为:
http服务端-查询病床信息入口—>路由类组件-统一入参校验—>路由类组件-入参标准化—>sql组件-执行查询病床信息语法;
管道process:是指路由节点要处理请求消息的方法,一般一个请求消息会占用多个线程,如果现场并发场景,可能出现多个请求消息同时使用同一个管道方法的情况。请求消息进来之后一般多个管道顺序执行,本发明中路由类组件处理请求消息顺序执行前置管道、主逻辑管道、后置管道的步骤。
交换机exchange:请求消息进入接口后,需要在不同的路由节点直接传递,而不同路由节点本身数据格式多种多样、消息协议多种多样,所以需要将请求消息转换成为交换机对象,方便其在不同路由节点中进行直接传递。交换机exchange为一个请求消息处理过程唯一的安全数据承载实体,其成员结构包括标准化header、body和properties。
本发明的创新点是关于路由类组件如何在Java虚拟机(JVM)中查找接口路由上下文,通过发现公共服务的关联点,从而进行公共服务的快速调用,服务复用公共服务的实现都在同一个JVM内存环境下进行,调用是通过JVM的内存实现交互,而不需要通过网络交互的方式,例如在路由节点“路由类组件-统一入参校验”中,“入参校验”的具体内容是由集成平台规范决定的现有的业务功能,本发明侧重于如何快速复用、连接这些已有的业务功能。
本实施例一提供的服务总线中公共服务高效配置和交互的方法,包括如下步骤:
步骤1、改进使用协议http、soap等客户端网络调用公共服务的业务服务,将用于网络调用公共服务的http或soap等客户端升级为内部服务复用调用器,在这里将这个内部服务复用调用器称为路由类组件。如图4所示,改进的使用协议http客户端网络调用公共服务的业务服务,例如ServerA服务,包括HTTP入口逻辑、路由类组件和ServerA业务逻辑,通过该路由类组件将网络调用逻辑转换为在同一个JVM内存环境下查找JVM中接口路由上下文,发现公共服务的关联点,从而进行公共服务的快速调用进行上下文快速查找公共服务的关联点,从而发现和安全调用公共服务,此过程核心在于进行路由快速调用的调用器(下面统称路由类组件)。路由类组件调用公共服务的过程完全在JVM内存中进行的,见图9,例如调用方发起调用总线‘就诊卡信息新增接口’的请求,该请求被服务总线所在的服务器网卡TCP接收缓冲区接收,此为传输层接收,该请求进入服务总线业务节点进程的JVM内存时,由netty容器的http模块进行入参数据的解包,并传递给服务总线中Camel上下文池中‘就诊卡信息新增接口’的接口入口路由点,该入口路由点将该请求传递给用于调用公共服务‘集成平台标准入参校验-接口’的路由类组件,该路由类组件直接在JVM内存中找到公共服务‘集成平台标准入参校验-接口’的关联点直接进行调用。可以看到本发明路由类组件的整个调用公共服务的过程并未经过服务器传输层,全部都在应用虚拟机-JVM内存中进行,因此相比网络交互的调用无网络性能瓶颈。图9中也能发现,‘集成平台标准入参校验-接口’也是能够直接被网络调用的,而路由类组件却是在JVM内存中实现交互,并非进行的是网络调用。关于路由类组件是如何在JVM中找到公共服务并进行安全调用见步骤2;
步骤2、路由类组件是在JVM中找到公共服务并进行安全调用,如图5所示,该路由类组件处理请求消息顺序执行前置管道、主逻辑管道、后置管道的步骤:
步骤2.1、路由类组件执行前置管道内部逻辑:将其他路由流转下来的交换机exchange作为入参;从交换机exchange中获取camelRouteClassList,先判断camelRouteClassList的长度是否超过限制,若是,则交换机exchange路由到异常统一处理管道,若否,则判断camelRouteClassList是否包含本路由类组件的唯一码RouteCode,若是,则交换机exchange路由到异常统一处理管道,若否,则创建RouteClassReqModel实体,并添加到交换机exchange的camelRouteClassList中,随后交换机exchange将流转到主逻辑管道;
步骤2.2、路由类组件执行主逻辑管道内部逻辑:先判断本管道成员targetConsumer不空且targetConsumer状态是否有效,若否,则使用findConsumer方法查找目标路由targetConsumer,若是,则清洗交换机,创建新交换机newExchange,将原交换机exchange的业务数据快速拷贝一份到新交换机newExchange;执行目标路由,以纯净的新交换机newExchange为入参,使用targetConsumer作为目标子路由进行调用;清洗更新,新交换机newExchange包含目标子路由执行结果的业务数据,仅将业务数据更新回原交换机exchange;随后交换机exchange将流转到后置管道;主逻辑管道内上述的清洗过程是为了保证调用目标子路由使用的新交换机newExchange不具备父级交换机exchange的业务数据,防止包含此类系统流转数据所引起的路由流转的错误判断。
所述findConsumer方法查找目标路由targetConsumer为:使用当前管道所属路由类组件的ID作为入参routeId,读取所属路由类组件初始化时缓存的所有路由上下文ContextModelList,遍历ContextModelList,判断每个上下文中是否存在以所属路由类组件的ID为入参routeId的路由route,并获取其唯一consumer作为目标路由targetConsumer;
步骤2.3、路由类组件执行后置管道内部逻辑:先将前置管道和主逻辑管道代码耗时记录到交换机exchange属性中,将本路由类组件配置数据的版本号记录到交换机exchange属性中;判断交换机exchange是否包含CamelExceptionCaught,若是,则交换机exchange流转到异常统一处理管道,若否,则本路由类组件执行结束,之后交换机exchange自动流转到其他业务路由节点;
所述异常统一处理管道,用于将各类协议、组件产生的异常统一收集归档到日志存储库,并统一标准化响应给第三方,此管道并非路由类组件所特有,所以本发明中不做赘述。
步骤3、步骤1与步骤2中描述的方法在分布式高可用架构下,会存在多个服务节点内存中,造成多个服务节点中都存有相同的公共服务代码副本,在服务总线业务接口都是由页面配置生成的情况下,所有业务接口都是通过代码数据同步机制同步到各个服务节点,如果各服务节点所存储的同一公共服务代码副本出现版本差异将导致业务交互异常,所以有必要保证多个微服务内部公共服务代码一致,通过如下方式实现:
如图6所示,所述路由类组件假设配置的接口服务为serverA服务,通过服务总线后台进行可视化配置的流程:打开服务设计编排页面、选择业务服务(如serverA服务)、开启serverA服务的编辑锁、拖拽添加路由类组件、连线路由类组件的前后逻辑连线、配置要调用的目标公共服务(如commonX服务)、保存当前业务服务(serverA服务)、打开服务发布页面、开启服务发布锁、新增服务发布任务、选择要发布的业务服务(serverA服务)、保存发布任务配置、点击执行服务发布、新版服务发布到业务应用节点。
如图7所示,将路由类组件的数据发布到实时业务环境底层实现逻辑,通过以下步骤进行:
在服务总线后台可视化配置界面选择发布执行,进入持久化数据库执行数据表持久化,待持久化数据库成功持久化后,向服务总线后台可视化配置界面返回成功持久化结果;
在服务总线后台可视化配置界面执行更新推送,服务总线业务实时承载应用节点n开启服务更新,从持久化数据库查询版本数据读取最新服务版本,服务总线业务实时承载应用节点n确认收到最新服务版本后执行服务重启,并向服务总线后台可视化配置界面返回更新推送成功结果;
服务总线后台可视化配置界面执行持久化结果,持久化数据库开始更新任务状态数据,持久化数据库成功持久化后,向服务总线后台可视化配置界面返回确认结束。
传统的行业中间件公共服务复用而产生的日志展示是serverA服务一条业务日志、公共服务1一个业务日志、公共服务2一个业务日志等等,这些日志是多个相互独立的日志,排查一个请求消息相关的多个路由时往往基于唯一请求ID人工筛选日志,人工组织消息流转逻辑,运维过程复杂,考验运维人员对业务的理解能力。如图8所示,本发明路由类组件日常消息运维排查的系统操作步骤为:以各业务服务(例如serverA)为主形成运维日志,打开运维日志查询页面,查询筛选业务数据(筛选条件有:接口服务、耗时、是否异常等),查看业务服务内部流转链路图,通过点击调用公共服务的路由类组件节点,打开路由类组件调用公共服务内部流转逻辑图,可快速基于各业务服务查看各个公共服务模块的日志,便于服务日常运维问题排查需要。
实施例二
本发明实施例二提供一种电子设备,该电子设备可以为前述的终端设备或者服务器,也可以为与前述终端设备或者服务器连接的实现本发明实施例一方法的终端设备或服务器。
该电子设备可以包括:处理器(例如CPU)、存储器、数据采集装置;处理器连接并控制数据采集装置。存储器中可以存储各种计算机程序,以用于完成各种处理功能以及实现前述实施例一方法描述的处理步骤。
实施例三
本发明实施例三还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述实施例一方法所描述的处理步骤。
专业人员应该还可以进一步意识到,结合本发明中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.服务总线中公共服务高效配置和交互的方法,其特征在于包括如下步骤:
步骤1、改进使用协议http或soap客户端网络调用公共服务的业务服务,将用于网络调用公共服务的http或soap客户端升级为路由类组件,改进的使用协议http客户端网络调用公共服务的业务服务,包括HTTP入口逻辑、路由类组件和业务逻辑,通过该路由类组件将网络调用逻辑转换为在同一个JVM内存环境下查找JVM中接口路由上下文,发现公共服务的关联点,从而发现和安全调用公共服务;
步骤2、路由类组件是在JVM中找到公共服务并进行安全调用,该路由类组件处理请求消息顺序执行前置管道、主逻辑管道、后置管道的步骤:
步骤2.1、路由类组件执行前置管道内部逻辑:将其他路由流转下来的交换机exchange作为入参;从交换机exchange中获取camelRouteClassList,先判断camelRouteClassList的长度是否超过限制,若是,则交换机exchange路由到异常统一处理管道,若否,则判断camelRouteClassList是否包含本路由类组件的唯一码RouteCode,若是,则交换机exchange路由到异常统一处理管道,若否,则创建RouteClassReqModel实体,并添加到交换机exchange的camelRouteClassList中,随后交换机exchange将流转到主逻辑管道;
步骤2.2、路由类组件执行主逻辑管道内部逻辑:先判断本管道成员targetConsumer不空且targetConsumer状态是否有效,若否,则使用findConsumer方法查找目标路由targetConsumer,若是,则清洗交换机,创建新交换机newExchange,将原交换机exchange的业务数据快速拷贝一份到新交换机newExchange;执行目标路由,以纯净的新交换机newExchange为入参,使用targetConsumer作为目标子路由进行调用;清洗更新,新交换机newExchange包含目标子路由执行结果的业务数据,仅将业务数据更新回原交换机exchange;随后交换机exchange将流转到后置管道;
步骤2.3、路由类组件执行后置管道内部逻辑:先将前置管道和主逻辑管道代码耗时记录到交换机exchange属性中,将本路由类组件配置数据的版本号记录到交换机exchange属性中;判断交换机exchange是否包含CamelExceptionCaught,若是,则交换机exchange流转到异常统一处理管道,若否,则本路由类组件执行结束,之后交换机exchange自动流转到其他业务路由节点;
所述异常统一处理管道,用于将各类协议、组件产生的异常统一收集归档到日志存储库,并统一标准化响应给第三方;
步骤3、保证多个微服务内部公共服务代码同步一致,包括如下实现步骤:
通过服务总线后台对业务服务的路由类组件进行可视化配置;
将路由类组件的数据发布到实时业务环境底层实现逻辑;
路由类组件日常消息运维排查:以各业务服务为主形成运维日志,打开运维日志查询页面,查询筛选业务数据,查看业务服务内部流转链路图,通过点击调用公共服务的路由类组件节点,打开路由类组件调用公共服务内部流转逻辑图,基于各业务服务查看各个公共服务模块的日志。
2.根据权利要求1所述的服务总线中公共服务高效配置和交互的方法,其特征在于:
所述步骤1中路由类组件调用公共服务的过程完全在JVM内存中进行,调用方发起调用总线中业务服务的请求,该业务服务的请求被服务总线所在的服务器网卡TCP接收缓冲区接收,该业务服务的请求进入服务总线业务节点进程的JVM内存时,由netty容器的http模块进行入参数据的解包,并传递给服务总线中Camel上下文池中与该业务服务相关的接口入口路由点,该入口路由点将该业务服务的请求传递给用于调用公共服务的路由类组件,该路由类组件直接在JVM内存中找到公共服务的关联点。
3.根据权利要求1所述的服务总线中公共服务高效配置和交互的方法,其特征在于,所述步骤2.2中findConsumer方法查找目标路由targetConsumer,具体为:
使用当前管道所属路由类组件的ID作为入参routeId,读取所属路由类组件初始化时缓存的所有路由上下文ContextModelList,遍历ContextModelList,判断每个上下文中是否存在以所属路由类组件的ID为入参routeId的路由route,并获取其唯一consumer作为目标路由targetConsumer。
4.根据权利要求1所述的服务总线中公共服务高效配置和交互的方法,其特征在于,所述通过服务总线后台对业务服务的路由类组件进行可视化配置,具体为:
打开服务设计编排页面、选择业务服务、开启当前业务服务的编辑锁、拖拽添加路由类组件、连线路由类组件的前后逻辑连线、配置要调用的目标公共服务、保存当前业务服务、打开服务发布页面、开启服务发布锁、新增服务发布任务、选择要发布的业务服务、保存发布任务配置、点击执行服务发布、新版服务发布到业务应用节点。
5.根据权利要求1所述的服务总线中公共服务高效配置和交互的方法,其特征在于,所述将路由类组件的数据发布到实时业务环境底层实现逻辑,通过以下步骤进行:
在服务总线后台可视化配置界面选择发布执行,进入持久化数据库执行数据表持久化,待持久化数据库成功持久化后,向服务总线后台可视化配置界面返回成功持久化结果;
在服务总线后台可视化配置界面执行更新推送,服务总线业务实时承载应用节点n开启服务更新,从持久化数据库查询版本数据读取最新服务版本,服务总线业务实时承载应用节点n确认收到最新服务版本后执行服务重启,并向服务总线后台可视化配置界面返回更新推送成功结果;
服务总线后台可视化配置界面执行持久化结果,持久化数据库开始更新任务状态数据,持久化数据库成功持久化后,向服务总线后台可视化配置界面返回确认结束。
6.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
CN202311289237.1A 2023-10-08 2023-10-08 服务总线中公共服务高效配置和交互的方法 Active CN117033033B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311289237.1A CN117033033B (zh) 2023-10-08 2023-10-08 服务总线中公共服务高效配置和交互的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311289237.1A CN117033033B (zh) 2023-10-08 2023-10-08 服务总线中公共服务高效配置和交互的方法

Publications (2)

Publication Number Publication Date
CN117033033A CN117033033A (zh) 2023-11-10
CN117033033B true CN117033033B (zh) 2023-12-15

Family

ID=88641527

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311289237.1A Active CN117033033B (zh) 2023-10-08 2023-10-08 服务总线中公共服务高效配置和交互的方法

Country Status (1)

Country Link
CN (1) CN117033033B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114819483A (zh) * 2022-03-14 2022-07-29 湖南大学 一种面向工业机器人的柔性服务编排系统及其方法
CN116248430A (zh) * 2022-12-30 2023-06-09 天翼云科技有限公司 一种数据处理方法、装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8701128B2 (en) * 2011-02-14 2014-04-15 General Electric Company Method, system and computer program product for a client application programming interface (API) in a service oriented architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114819483A (zh) * 2022-03-14 2022-07-29 湖南大学 一种面向工业机器人的柔性服务编排系统及其方法
CN116248430A (zh) * 2022-12-30 2023-06-09 天翼云科技有限公司 一种数据处理方法、装置

Also Published As

Publication number Publication date
CN117033033A (zh) 2023-11-10

Similar Documents

Publication Publication Date Title
CN107533476B (zh) 支持分布式事务处理环境中的有效载荷数据收集的方法、系统、存储介质及装置
KR101079570B1 (ko) 검색 웹 서비스
US20040068479A1 (en) Exploiting asynchronous access to database operations
Zave A distributed alternative to finite-state-machine specifications
US9442822B2 (en) Providing a visual representation of a sub-set of a visual program
CN111752799A (zh) 一种业务链路跟踪方法、装置、设备及储存介质
WO2019001312A1 (zh) 实现告警关联的方法、装置以及计算机可读存储介质
IES20010064A2 (en) Computer network system
US20070288512A1 (en) Resource management program, resource management process, and resource management apparatus
CN116489214A (zh) 一种基于微服务网关的统一服务调度方法、装置、介质及设备
CN105930947B (zh) 用于控制在离散生产线中的制造过程的方法和系统
CN115480753A (zh) 应用集成系统及相应计算机设备和存储介质
CN113032421A (zh) 基于MongoDB的分布式事务处理系统及方法
CN113835786B (zh) 一种数据对接系统、方法和计算机可读存储介质
CN116204239A (zh) 业务处理方法、装置和计算机可读存储介质
CN117033033B (zh) 服务总线中公共服务高效配置和交互的方法
CN112328406A (zh) 一种基于tcc的微服务分布式事务系统以及业务处理方法
WO2023125773A1 (zh) 大规模微服务集群场景下的全局异常处理方法和平台
CN114201314B (zh) 一种基于契约的实现服务依赖发现和服务访问的路由方法
CN115220992A (zh) 接口变更监控方法、装置、计算机设备和存储介质
US11455317B2 (en) Application programming interface and hypergraph transfer protocol supporting a global hypergraph approach to reducing complexity for accelerated multi-disciplinary scientific discovery
JP2009530707A (ja) コマンドラインのパイプライン化
CN117632445B (zh) 请求处理方法以及装置、任务执行方法以及装置
US20090285224A1 (en) Service adaptation machine
CN114528266B (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