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

news2024/11/15 8:39:00

随着爱奇艺会员破亿,会员服务从小而快的单一业务系统升级为了按领域划分的微服务模式,满足了业务的高速发展和服务的高流量调用,但是微服务的拆分,系统间的交互越来越多,在需求开发时,协作成本随之增加,问题总结如下:

    • 历史包袱过重,接口管理工具不统一:WIKI、YAPI、Swagger

    • 接口维护成本高,代码和文档需要同时更新

    • 接口联调和测试成本高,由于环境、链路导致的问题,排查难度大,业务复杂的需求可能会延期

基于以上问题,会员团队需要一个平台把接口管控起来,提升研发和测试的效率。

01

   方案调研

比较了现有平台(见下图),都不能满足会员的需求,但是Atlas是公司内部开发的平台,已经有接口管理的基础能力,可以共同开发,在平台上扩展会员需要的功能:代码即文档、一键链路排障、接口规范统一管控、签名和实体自动生成,不仅可以解决会员的痛点,还可以为公司其他部门赋能,避免了重复造轮子。

c7fc9445c006e0b0fe67a6e68e90ee77.png

Atlas 是一个基于接口管理的业务知识管理平台,提供了统一的接口管控入口、接口规范(OpenAPI3.0)、接口调试和 mock、链路定位、关系图谱等能力,有效地解决了接口文档管理、分享和协作相关的问题。

02

   项目目标

  • 简化开发

Atlas 让前后端数据交互更简单,让团队开发协作更容易。前端同学无需依赖后端开发进度,直接借助 mock 功能即可实现联调。

智能文档

实现代码即文档、文档即代码,文档自动同步代码改动,让文档维护更智能。

高效协作

支持强大的联调、链路问题定位、代码自动生成等功能,前后端协作更高效。支持自动化的依赖分析,各关联方通过订阅方式,可以及时、准确地把握接口变更,通过图谱可以全面掌握影响范围。

03

   解决方案

  01 一键验证  

基于全链路监控系统打通了环境平台内部的链路,实现了在开发和测试阶段可以一键定位环境和调用链路问题的能力,极大减少了研发和测试的排查时间。一键验证功能目前已覆盖了异步任务、RocketMQ 和 API 接口的问题排查。通过下图所示的排查链路,可快速定位异常服务和问题原因。

430a4fffd06672f05800deb39778c91a.png

架构设计如下:

7dc8b77fa01aa2793697f40028786647.png

  02 知识图谱  

系统依赖日趋复杂,研发需要了解自己所开发接口的依赖与被依赖关系,才能保证版本迭代时上下游不受影响。测试需要了解自己所测接口的上下游依赖关系,才能保证 case 覆盖率。为了让这种依赖关系展示的全面、具体,我们使用全链路监控系统自动获取了接口级、字段级的依赖关系,并借助 G6 以图谱的方式展示在 Atlas 上。

c7013caf722a618d624c819a368c75dd.png

  03 查询模式  

  • 一键搜索

接口文档、数据库设计、错误码及 UML 业务梳理,都可以在平台首页一键搜索获取,解决了研发按照个人习惯,无固定地址、无固定格式的管理方式,提升了信息获取的效率和准确性。

348bf2e6e0e504219ca031975e6cc65a.png

  • 历史追溯+版本对比

接口迭代频繁或是人员更迭时,研发经常需要梳理接口变更的历史。Atlas 提供了同一接口任意分支、任意版本之间的对比能力,让变更和背景一目了然。

1301e8b654c6473b0e9705e5f5b1c503.png

  • 订阅及消息推送

业务依赖的接口都可以自行订阅,一旦接口有变更,可以实时获取变更通知,便于及时评估是否对业务有影响。

8f885a007d94ee02275863c62d008cae.png

  04 强化调试  

在使用 postMan 等工具调试时,经常会遇到签名问题阻塞调试,Atlas平台对签名功能进行了拓展,支持以下两种方式:

  1. 签名算法模板,一键下拉选择

  2. 签名算法自定义,粘贴代码片段,动态解析计算

da1242f3a179d35511672432b2c6ff0d.png

动态代码执行实现流程如下:      

f24b986a65de04160ce8ff23c2325081.png

04

   系统价值

会员研发和测试已经完全使用该平台,Q3 累计 75 个需求接入,提效显著:

研发提效:平均每个需求可减少 2 个小时的时间,环境链路问题和自测问题彻底解决,并降低了接口维护成本

测试提效:排查链路问题提效 93%(15分钟降1分钟),排查环境问题提效 50%(4小时降到2小时)

05

   后续规划

持续收集日常开发和测试的痛点,开发更多的接口治理工具,助力公司的整体效能提升。下一阶段的功能规划如下:

  • 提炼调试功能

    将调试功能从接口管理中提升至首页,让用户可以不依赖接口信息,直接使用调试功能,并对接一键验证等功能。

  • 代码自动化

    通过 Atlas 提供服务接口的标准 json 数据,以规范数据做为桥梁连接前后端,实现前端代码的自动生成

  • UML 图编辑

    支持用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图在线创建和修改,提升协作的效率(目前一期基本画图功能已上线)

d9554ac5348d9e23049a98460745c505.jpeg

也许你还想看

爱奇艺混合云内网DNS实践

爱奇艺播放技术——300ms背后的故事

爱奇艺海外运营系统的设计和实践

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/56886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[激光原理与应用-30]:典型激光器 -2- 气体激光器 (连续激光器)

目录 第1章 概览 1.1 什么气体激光器 1.2 主要激励方式 1.3 发展历程 1.4 组成 1.5 特点 第2章 气体激光器分类 2.1 原子气体激光器 2.2 离子气体激光器 2.3 分子气体激光器 2.4 准分子激光器 第1章 概览 1.1 什么气体激光器 气体激光器利用气体作为工作物质产生激…

AlphaFold2源码解析(6)--模型之特征表征

AlphaFold2源码解析(6)–模型之特征表征 整体推理说明: Embedding只是在推理使用,影响非常小(sup-Inference篇章) 特征表征表示的入口模型如下: evoformer_module EmbeddingsAndEvoformer(self.config.embeddings_…

亚马逊卖家店铺没流量怎么办?这几个方法可以试试!

大家都知道亚马逊是一个产品为王的平台,只有我们的产品好,亚马逊就会给我们推送流量,作为一个新手卖家该如何帮亚马逊店铺来获取流量,今天赛狐ERP就来给卖家们几个方法,来获取流量。 1.自然搜索 自然流量顾名思义也就…

docker搭建测试,镜像保存并传输发布

Docker OPENJDK本身的docker占用526M ,昨天我在本地测试的,加上我们的项目大小,最终创建的镜像大小大概是526M项目大小,镜像大小大概这么多,我们需要先在服务器上安装docker,之后安装dockerOpenJDK&#x…

LIO-SAM源码解析(四):imuPreintegration.cpp

1. 代码流程 2. 功能说明 这个cpp文件主要有两个类,一个叫IMUPreintegration类,一个叫TransformFusion类。 现在我们分开讲,先说IMUPreintegration类。 关于IMU原始数据,送入imuhandle中: 2.1. imuhandle imu原始…

re:Invent现场直击:无处不在的云计算

2012年,第一届亚马逊云科技re:Invent全球大会拉开帷幕的时候,许多人还不知道云计算为何物。2022年,第十一届亚马逊云科技re:Invent全球大会召开的时候,人们发现云计算已经是无处不在。云计算从遥不可及到无处不在美国当地时间2022…

Clock and Jitter

1、Jitter定义 定义1(SONET规范):抖动可以定义为数字信号在重要时点上偏离理想时间位置的短期变化。 2、Total Jitter表征方式 2.1、周期抖动(Period Jitter),与理想时钟无关,不累积 Period …

Qt之QPropertyAnimation移动动画

#include "cpropertyanimationtest.h" #include "ui_cpropertyanimationtest.h" #include<QPropertyAnimation> CPropertyAnimationTest::CPropertyAnimationTest(QWidget *parent) :QWidget(parent),ui

Mybatis练习(按值单条件查询)

Mybatis练习 安装MybatisX 接下来我们就使用Mybatis完成品牌数据的增删改查操作。以下是我们要完成功能列表&#xff1a; 查询 查询所有数据查询详情条件查询 添加修改 修改全部字段修改动态字段 删除 删除一个批量删除 创建数据库 数据库表&#xff08;tb_brand&#xff09;…

腾讯云服务器CVM和轻量应用服务器区别全方位对比

腾讯云轻量服务器和云服务器有什么区别&#xff1f;轻量应用服务器和云服务器CVM哪个更好&#xff1f;抛开价格及使用门槛&#xff0c;云服务器CVM更好&#xff1b;从性价比及易用性角度考虑&#xff0c;轻量应用服务器更好&#xff0c;轻量服务器性价比高&#xff0c;这个配置…

【Python】批量提取图片经纬度并写入csv文件

需求 无人机图片中往往包含经纬度信息&#xff0c;需要一个脚本批量将文件夹中包含经纬度信息的图片提取出来&#xff0c;保存成csv文件。 经纬度格式解读 默认情况下&#xff0c;图片采用的WGS84经纬度&#xff0c;默认格式采用的是度分秒格式&#xff0c;另一种格式是十进…

【数据结构】二叉树的基本操作与遍历(C语言)

目录 定义 满二叉树 完全二叉树 性质 应用 计算二叉树结点个数 计算叶子结点的个数 第 k 层结点的个数 查找值为x的节点 遍历 前序遍历 中序遍历 后序遍历 层序遍历 判断是否为完全二叉树 定义 &#x1f984;二叉树是由树发展过来的&#xff0c;即度最大为2的树&…

stm32 笔记 PWM及HAL库应用

stm32 PWM原理 STM32 使用一个定时器作为 PWM 输出&#xff0c;在上图中&#xff0c;ARR 即为重装载值。在计数器的值大于CRRx的值并且小于 ARR 之间&#xff0c;即区分高低电平。输出在图中分别有 ① 和 ② 两种情况. 分别为&#xff1a; ①CRR 和 ARR 区间为低电平。 ②CR…

【pen200-lab】10.11.1.222

pen200-lab 学习笔记 【pen200-lab】10.11.1.222 &#x1f525;系列专栏&#xff1a;pen200-lab &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#x1f36d;作…

Vue框架学习(第十三课)Vuex状态管理中的store和state属性

学习官网文档:开始 | Vuex (vuejs.org) 第一部分:查图观色思考为什么&#xff1f;下面的一张图中的数据如何实现组件与组件之间的数据共享呢&#xff1f; 如何去实现下面的方案呢能让数据得到共享 这一张图告诉你们答案 这样如何实现组件与组件之间的通信呀 Vuex五个核心的基本…

FANUC机器人程序设计

一&#xff0e;注意事项 1.FANUC机器人所有者、操作者必须对自己的安全负责。FANUC不对机器使用的安全问题负责。FANUC提醒用户在使用FANUC机器人时必须使用安全设备&#xff0c;必须遵守安全条款。 2.FANUC机器人程序的设计者、机器人系统的设计和调试者、安装者必须熟悉FAN…

408 考研《操作系统》第一章第一节:操作系统的概念和特征

文章目录教程&#xff1a;1. 操作系统的概念、功能和目标1.1 大家熟悉的操作系统1.2 操作系统的概念1.3 操作系统的功能和目标1.3.1 操作系统的功能和目标——作为系统资源的管理者1.3.2 操作系统的功能和目标——作为用户和计算机硬件之间的接口1.3.3 操作系统的功能和目标——…

【三维目标检测】CenterPoint(二)

CenterPoint数据和源码配置调试过程请参考上一篇博文&#xff1a;https://blog.csdn.net/suiyingy/article/details/128002709。本文主要详细介绍CenterPoint网络结构及其运行中间状态。 1 CenterPoint模型总体过程 CenterPoint模型的整体结构如下图所示&#xff0c;由最初的一…

50 jhat 中 java.lang.String 的实例占用空间为什么是 28 bytes ?

前言 此问题是 多个 classloader 加载的同类限定名的Class 在 jhat 中显示不全d 同一时期发现的问题 大致的情况是 看到了 jhat 中统计的各个 oop 的占用空间 似乎是不太能够对的上 比如 java.lang.String, 在 64bit vm 上面 开启了 UseCompressedOops 之后, 应该是占用 …

Gram矩阵+Gram矩阵和协方差矩阵的关系

目录Gram矩阵简介协方差矩阵Gram矩阵 和 协方差矩阵的关系Gram Matrix代码Gram矩阵简介 gram矩阵是计算每个通道 i 的feature map与每个通道 j 的feature map 的内积 gram matrix的每个值可以说是代表 i 通道的feature map和 j 通道的 feature map的互相关程度。 参考博客 GAT…