一种基于原子化服务的链路调用方法与流程

文档序号:21971530发布日期:2020-08-25 19:01阅读:205来源:国知局
一种基于原子化服务的链路调用方法与流程

本技术直接运用于互联网单体架构,分布式架构,微服务架构领域,尤其针对在服务原子化(即不可再分解为更细粒度的服务)程度高,业务复杂的高,耦合性度高的场景下。通过该技术可以快速的实现对各个原子化服务间的调用编排,迅速实现通过组合原子化服务的方式,快速落地业务逻辑,提高业务交互的实现和响应速度。



背景技术:

现有技术架构:

目前直销银行使用的分布式技术框架,该系统中承载了客户,账务,支付,配置等多个功能模块,所有对外暴露的服务都是通过耦合其各个模块之间的业务加入大量逻辑判断,耦合度高,业务重复代码冗余量大。

业务压力:

随着业务方提出的小程序定制化服务端,以及渠道商的激增,该系统为支撑不同服务端,渠道商进行了不断的升级。

重构的迫切度:

为了满足不同的渠道商的接入,针对不同的渠道商提供不同的定制化接口,使得原本臃肿的业务代码更加臃肿,冗余。业务代码的逻辑复杂度越来越高,新渠道的接入,以及陈旧系统的维护,壁垒越来越高。因此,一套能够支撑直销银行小程序的业务链路服务亟待出现。



技术实现要素:

本发明的目的在于解决现在的技术方案因为需要对接各种不同的渠道,每个渠道同一个业务场景可能有不同的定制化需求或者不同业务逻辑顺序,例如:a渠道用户注册需要检验用户名与手机号是否同时存在,而b渠道只用校验手机号。现有的技术架构就需要提供两个接口,导致业务代码臃肿。

为了达到上述的目的,本发明采用如下技术方案:

一种基于原子化服务的链路调用引擎,并且可以通过后台管理系统自定义配置原子化服务链路调用顺序,包括以下步骤:

s1.原子化服务节点申明:

每个原子化服务在调用链上注册节点并且定义别名,通过自定义注解反射得到原子化服务节点别名,为后续链路上调用原子化服务,进行统一视图的展现提供依赖;

s2.链路别名申明:

通过自定义注解为每个链路定义别名,每个条链路由s1申明的节点组成,通过自定义注解解析得到每个链路的别名申明,为后续管理链路提供依赖;

s3.节点持久化到数据库:

将s1中申明的每个原子化服务节点持久化到数据库;

s4.链路别名持久化到数据库:

将s2中申明的每条链路持久化到数据库中;

s5.调用链配置注册统一视图:

为s4中申明的链路在后台管理系统中,配置s3中的节点,或者s4中的链路别名,并把调用顺序持久化到数据库,为后台管理系统提供展示;

s6.调用链实例:

将配置好的每条调用链服务实例化,并把各条调用链对应的标注上不同业务场景的别名,统一得到服务调用实例。

s7.原子化服务调用链节点实例:

实例化每个原子化服务,将各个原子化服务的实例装配到s6中的链路上。

s8.调用调用链引擎

根据s5中配置的调用链顺序,实现整体的调用链业务逻辑。

上述技术方案中:所诉步骤s8包括以下步骤:

步骤1:根据服务端传入的渠道码匹配数据库中的链路规则实现调用链路。

上述技术方案中:所诉步骤s2包括以下步骤:

步骤1:在配置文件中约定链路命名规则,约定链路中父链路,子链路规范。

步骤2:新建自定义注解,申明自定义注解规则,用于标记链路;

上述技术方案中:所诉步骤s1包括以下步骤

步骤1:在配置文件中约定节点命名规则,约定父节点,子节点规范。

步骤2:新建自定义注解,申明自定义注解规则,用于申明节点名;

上述技术方案中:所诉步骤s3包括以下步骤:

步骤1:将每个节点别名,节点实际地址等,持久化到数据库中。

上述技术方案中:所诉步骤s4包括以下步骤:

步骤1:将每条链路别名,链路实例名等,持久化到数据库中。

上述技术方案中:所诉步骤s5包括以下步骤:

步骤1:在后台管理系统中由管理人员根据不同的渠道的业务配置不同的链路调用逻辑,并申明链路名称。

上述技术方案中:所诉步骤s6包括以下步骤:

步骤1:实例化调用链,将数据库中申明的链路名称装配到当前实例化的链路上;

上述技术方案中:所诉步骤s7包括以下步骤:

步骤1:实例化原子化服务节点,将节点装配到已实例化的链路上;

本发明因为采用上述技术方案,因此具备以下有益效果:

1.新的渠道对接只用配置渠道码,通过渠道码匹配配置好的链路。

2.新的业务逻辑只用提供原子化的服务,具体的业务实现都由链路来拼装。

3.链路调用服务主要解决的问题是避免重复业务代码编写,通过链路的方式实现复杂业务流程的编写和实现。帮助开发、业务甚至后期维护人员快速梳理业务流程,防止后期因为频繁的迭代维护和代码量的增加,造成业务代码逻辑的混乱,避免核心业务的反复修改出现不必要的风险。

附图说明

图1为调用链调用逻辑图;

图2调用链流程图;

图3调用链实现过程。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本发明提供了一种基于原子化服务的链路调用引擎,并且可以通过后台管理系统自定义配置原子化服务链路调用顺序,包括以下步骤:

s1.原子化服务节点申明:

每个原子化服务在调用链上注册节点并且定义别名,通过自定义注解反射得到原子化服务节点别名,为后续链路上调用原子化服务,进行统一视图的展现提供依赖;

步骤s1.1:在配置文件中约定节点命名规则,约定父节点,子节点规范;

步骤s1.2:新建自定义注解,申明自定义注解规则,用于申明节点名。

s2.链路别名申明:

通过自定义注解为每个链路定义别名,每个条链路由s1申明的节点组成,通过自定义注解解析得到每个链路的别名申明,为后续管理链路提供依赖;

步骤s2.1:在配置文件中约定链路命名规则,约定链路中父链路,子链路规范;

步骤s2.2:新建自定义注解,申明自定义注解规则,用于标记链路。

s3.节点持久化到数据库:

将s1中申明的每个原子化服务节点持久化到数据库;将每个节点别名,节点实际地址等,持久化到数据库中。

s4.链路别名持久化到数据库:

将s2中申明的每条链路持久化到数据库中,将每条链路别名,链路实例名等,持久化到数据库中。

s5.调用链配置注册统一视图:

为s4中申明的链路在后台管理系统中,配置s3中的节点,或者s4中的链路别名,并把调用顺序持久化到数据库,为后台管理系统提供展示;

在后台管理系统中由管理人员根据不同的渠道的业务配置不同的链路调用逻辑,并申明链路名称。

s6.调用链实例:

将配置好的每条调用链服务实例化,并把各条调用链对应的标注上不同业务场景的别名,统一得到服务调用实例。实例化调用链,将数据库中申明的链路名称装配到当前实例化的链路上;

s7.原子化服务调用链节点实例:

实例化每个原子化服务,将各个原子化服务的实例装配到s6中的链路上。实例化原子化服务节点,将节点装配到已实例化的链路上;

s8.链路参数自动装配,以及自动填充:

将每条链路的参数与自定义注解实现映射,为将参数自动装配到链路上提供支持。

步骤1:通过链路的注解自动将该链路的参数装配到程序的上下文中;

步骤2:每条链路上的原子化服务通过上下文获取到当前链路的装配的参数;

步骤3:通过上下文中获取的参数自动填充到当前原子化的服务中。

s9.调用调用链引擎:

根据s5中配置的调用链顺序,实现整体的调用链业务逻辑。根据服务端传入的渠道码匹配数据库中的链路规则实现调用链路。

外部渠道举例:

例:渠道某东需要接入我行众*存业务,我行业务人员为某东配置渠道号为(jd_001),某东需要接入我行的购买众*存业务逻辑。我行对某东提供通用的接口文档,文档中有包含有buyzhc规范接口,该接口使用调用链buyzhcchain,该调用链中包含多个业务逻辑其中有如下3个业务逻辑在我行规范的业务逻辑顺序为:1.ocrservice2.face++service3.auth5factorservice某东在接入时发现我行提供的接口业务逻辑顺序与他们现有逻辑存在冲突,他们的调用顺序为1.face++service2.ocrservice3.auth5factorservice,这时我们使用调用链配置某东渠道号(jd_001)调用链buyzhcchain调用顺序为:213。如果按照之前的开发方式需要单独为某东提供一个定制接口。使用调用链则只需配置即可。

内部业务逻辑举例:

例:接我行业务需求新增一个众*存业务需求,该需求需要调用以下3个原子化服务:authservice(鉴权)payservice(支付)buyservice(购买),新的购买众*存业务开发逻辑如下,继承buyproductchain链路类,从productchian类中获取链路中的原子化服务,从程序上下文中获取productchain链路的参数,继承链路上的authservice,payservice。只用重写buyservice即可。最终形成一个buyzhcserviceimpl实现类,通过buyzhccontroller进行调用。暴露buyzhccontroller给外部渠道调用。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1