组件化设计在会员业务的应用和实践

01

   背景


在现代商业环境中,为了实现商业目标和利益的最大化,企业之间经常进行各种合作,例如供应链合作、销售渠道合作、技术合作等等。在这种背景下,对外合作成为了会员业务的重要组成部分,随着业务的发展,外部合作的需求越来越多,如何能高效完成与合作方的对接,成为了一个重要的课题。


02

   合作方式介绍


对外合作主要是以接口方式对接,负责企业之间的数据交换和服务共享。合作方式分为以下2种:

1967b87b0f3fe86b99ceac30a63ae117.png

1、合作方标准化:合作方制定接口的数据格式、传输协议、安全机制、状态码、错误处理等规范,爱奇艺按照合作方规范定制化开发,合作方没有开发工作量。

2、爱奇艺标准化:爱奇艺制定接口的规范,合作方按照爱奇艺的规范定制化开发,爱奇艺没有开发工作量。

我们最希望用第2种方式对接,没有开发工作量,但是很多合作方坚持用自己的标准,导致每个合作对接的需求都要定制开发,这种实现方式严重阻碍了业务的发展,需要找到一个通用设计方案提升对接的效率。

03

   方案调研


我们从实际业务场景出发,分析一下合作方接口定制化对接的流程:

1、将内部系统数据对象转换为合作方约束的请求参数

2、将转换后的参数,按照合作方指定的规则生成签名

3、以合作方指定的方式完成接口调用

4、解析接口响应,获取对应的响应码及合作方侧返回的业务信息等

5、更新本地记录

不同合作方的对接流程是一样的,不同的是请求参数、签名规则、接口调用方式、响应报文格式,所以可以抽象标准流程,把不同的处理逻辑封装为组件,通过接口串联组件流程,达到组件配置即可完成接口对接的目的。实现思想如下:

96ca245a8dfd1bb26f795db4b23dd7a3.jpeg

经过组件化拆分后,各个组件的职责具有一定的独立性和复用性。开发同学只需要关注新组件的实现,不会影响其他组件的功能。随着组件的不断增加,最终合作方的对接都不需要开发,可以大幅提升接口对接的效率。

04

   解决方案


  • 整体流程

流程基本骨架和组件进行了拆分,组件由组件库统一管理,组件执行流程可配置。在接口逻辑执行过程中,组件流程可以动态加载。执行完成后,统一更新业务数据。交互流程如下图所示:

79c0f082b433151c19d3fef6e402095d.png

  • 核心类图

ce01510f708bebd9b89b4b3189b08da5.jpeg

CallerContext:请求上下文,封装流程执行的配置信息、参数信息

Caller:流程执行抽象接口

StandardCaller:Caller的标准实现,定义了目前对接方式的标准流程、负责调度下层各个组件的执行

IConvertParamComponent:参数转换组件接口,负责将内部标准参数转换为三方接口参数

ISignComponent:生成签名组件接口,负责对转换后参数进行签名计算

IExecuteComponent:调用三方接口组件,负责以指定方式完整对三方接口的调用

IParseResComponent:解析响应组件,负责对三方接口响应进行解析,识别调用结果是否出现异常等等

05

   成果及展望

  • 成果

目前系统已预置一部分组件,理论上可以支撑近千种对接方式,90% 以上的对接无需开发。在提效方面,节省了开发和测试时间,整体成本降低 86% 。

  • 展望

后续将组件化设计思想抽象为组件平台,流程配置不局限在对外合作业务场景,可以支持任意的业务流程编排,组件上下线支持热插拔,无需服务安装部署。通过平台化的设计,可以支持更多的业务场景,助力公司的整体效能提升。

7cec4706e5c97930310683a51d50ff54.jpeg

也许你还想看

会员接口治理的探索与实践

会员测试环境治理之路

爱奇艺数据湖实战

a78d41666735db892a397bfe4ce59bb0.gif 关注我们,更多精彩内容陪伴你!

猜你喜欢

转载自blog.csdn.net/weixin_38753262/article/details/129891429