大家好我是路飞,今天这篇文章和大家聊聊企业级网关中间件开发者,对API管理方面的需求,以及如何选择一款高效且功能强大的API管理工具:Eolink:https://www.eolink.com/ 。
一、你们眼中的中间件程序员是什么样子的?
一转眼已经是出来实习/正式工作第二个年头了,这期间在业务团队待过一年也在鸡架中间件团队待过一年。
最开始我是很憧憬做中间件和基建类产品开发工作的,因为可以更专注于技术视角有技术挑战性,不需要考虑那么多上层业务和CRUD,而且相比业务团队,中间件团队下班时间可能会更早一些。
按照我一个师兄的话说:“中间件团队,就是应该上班只专注代码,到点准时下班。没出大问题之前,让公司其他团队都感觉不到有这个组织存在,而如果一旦出现问题,可以第一个顶上去做技术支撑并把损失降低到最小”。
- 实际上的中间件研发程序员工作现状:
客服小二、答疑群小助手、中间件接入QuickStart文档优化工程师…(有一定自嘲成分哈哈)
我们就以企业级网关中间件产品为例,一个高性能的网关中间件,“API是一等公民”。流量适配、流控策略、路由编排、协议转换、异步调度、权限认证、流量监控、网关日志、数据安全合规等等都是直接和API挂钩的,所以无论是业务网关中间件还是技术网关中间件,对API的维护管理都是要重点关注的,也是日常运营维护最花时间地方。
甚至一个网关中间件在API层面做的足够优秀,是可以拿来作为一个重量级RPC框架使用的。
- 为什么说网关中间件重度依赖API管理和运营?
个人认为,API就是流量来源,从请求入口到协议转换、适配,再到请求透传,整个过程中API都是参与的。
如果把API比作中介,那么两端的就是房东(服务提供方)和租房客(服务订阅方),房客通过中介去找房东获取优质房源。
三者关系图如下:
那么问题就来了:
问题1:如何处理好一个API和多个服务订阅方/提供方之间的联调关系?以及接口文档撰写?
这也是日常开发运维工作中最头疼的问题,由于网关中间件的特殊性,针对一个API需要同时协助多个用户联调接入,我们每天都要花大量的人日投入在这上面,中间件程序员被迫变成了答疑客服。
订阅方A:喂,帮忙看下,这个API接入调用失败了,是不是你们中间件出问题了?
我:...
提供方B:喂,帮忙看下,这个API服务提供被限流了,是不是你们中间件这边搞的鬼?
我:...
订阅方C:喂,这个API报文格式怎么配啊,给一个API文档和测试用例啊!
我:...
提供方D:喂,这个API变更了,报文格式转换有问题了,麻烦搞一份API文档发过来啊!
我:...
订阅放E:喂,你们的网关API接入太复杂了,SDK源码看不懂啊,给一个接口测试用例啊!
我:...
提供方F:喂,帮忙提供一份我们业务域的所有API接口数据和文档用例把!
我:...
问题2:如何处理API批量变更导致集成测试脚本、接口文档的批量变更?
当一个API报文字段变更,紧接着就需要变更API文档,以及对应的集成测试脚本,CURL命令都需要变更,尤其是对于一批彼此之前强关联的API变更,可能同时需要级联变更多个API的文档内容。
中间件程序员变成了文档工程师和测试工程师
对于没工作经验的同学,可能不知道为什么要做集成测试,这里我解释下:
我理解集成测试不只是对某个API或者接口进行功能是否可用测试,还有压力测试(评估QPS),以及全链路测试,模拟线上真实环境的多接口联动流量接入。
那么,为什么API会不断变更呢?Spring Cloud Gateway这种网关中间件,不是直接配置好API接口就可以一直使用吗?
道理很简单,Spring Cloud Gateway 属于纯静态配置的网关中间件,不适用业务复杂、协议多样、定制化需求高的场景。
问题3:API流量监控统计
做过电商业务的同学应该清楚,每到618、双十一,双十二这种购物狂欢节,我们的后端服务接口压力就会激增,为了保障服务稳定性和接口高可用,一般都会在狂欢节之前,把所有API、接口的近期流量、压力测试报告都收拢整理一下,统计一张Excel表(监控流量需要一个一个去查,逐个统计且效率低)。
我们会根据往年经验和当前流量收集的梳理结果,去评估出今年狂欢节的QPS峰值上限。
中间件程序员变成了Excel工程师
Eolink 可以完美解决上述问题,让程序员摆脱低技术含量的工作
二、选择 Eolink 的五个理由
1. API文档动态生成
Eolink 支持3种创建API文档的方式:
- 手动创建API(适合所有团队;
- 根据代码注解自动生成文档(适合使用过或正在使用Swagger产品来自动生成文档的团队);
- 根据代码模板快速创建API文档(适合所有团队)。
当我们创建了 API 文档之后,可以随时查看 API 的改动情况、根据 API 文档发起 API 测试、编写 API 测试用例、使用 Mock API等。如下图是在系统中管理的API文档,可以详细的看到API的描述信息、变更历史、测试用例、Mock API等内容。
在API描述标签页中填写API的请求路径、API名称、标签、负责人等基本信息。
- API 状态:可以方便成员查看API当前所处的状态,并且进行状态流转的通知;
- Tag 标签:可以作为API的备注或者是筛选条件;
- 负责人:当API文档内容发生变化时,负责人会自动收到API变更通知。
此外 Eolink 还支持API文档的动态管理,可以按照不同项目、应用区分不同的API文档集(文档分组),支持文档的导入、复制、到处等操作:
2. API集成测试
2.1 API测试用例
Eolink同时支持多种协议的接口请求测试。这个我认为是目前用过的API测试工具中做的最好的,支持多协议请求,非常适合网关中间件程序员日常测试需求,市面上大多数API测试工具对gRpc/Rpc的支持都做得不是太好。
- HTTP/HTTPS API测试:
进入某个HTTP协议的API文档详情页,点击文档上方 测试 标签,即可进入 API 测试页,系统会根据API文档的定义的参数自动生成测试界面并且填充测试数据。
- WS/WSS API测试:
进入某个WS协议的API文档详情页,点击文档上方 测试 标签,即可进入 API 测试页,系统会根据API文档的定义的求头部、Query参数、请求体自动生成测试界面并且填充测试数据。
- TCP/UDP测试:
进入某个TCP/UDP协议的API文档详情页,点击文档上方 测试 标签,即可进入 API 测试页,系统会根据API文档的定义的求头部、Query参数、请求体自动生成测试界面并且填充测试数据。
- RPC/gRPC测试:
以gRPC接口为例,进入某个gRPC协议的API文档详情页,点击文档上方 测试 标签,即可进入 API 测试页,系统会根据API文档的定义的proto、请求体自动生成测试界面并且填充测试数据。
2.2 支持登录态接口测试
Eolink可以在客户都模拟登录授权,我们在测试强授权校验接口时,不需要一个一个接口去配置cookie、token或者headerCrsf跨域配置。
在API请求时需要进行的权限校验,如Basic Auth、JWT:
2.3 支持接口前置/后置脚本
对于需要动态加密和验签的接口(例如根据请求报文和密钥key动态生成加密签名),这种场景下,我们之前的做法很笨拙:就是一个一个接口通过执行加密工具类把报文和密钥key生成对应的加密签名~
而使用Eolink就可以直接在前置脚本中完成加密签名的操作~
- 前置脚本:在API请求前执行javascript脚本,改变请求参数、进行签名加密等操作
- 后置脚本:在API请求后执行javascript脚本,改变返回结果、进行解密等操作
3. 支持MOCK服务
在瀑布流开发模式中,如果前端开发人员需要进行页面对接,需要后端先完成API的开发工作,因此前后端开发的进度会互相影响。通过Mock API,我们可以事先编写好API的数据生成规则,由系统动态生成API的返回数据。开发人员通过访问Mock API来获得页面所需要的数据,完成对接工作。
Mock API支持根据不同的请求参数返回不同的HTTP Status Code、Header、Body等数据。我们可以在一个API文档里创建多个Mock API,模拟前端发起的各种请求,方便对前端逻辑进行校验。
当项目正式发布时,只需将 Mock API 的地址前缀替换为实际的访问地址即可。
进入API文档详情页面,点击高级Mock 标签,点击添加 Mock。
进入Mock API列表页面,点击调用地址即可复制到剪贴板,在代码中直接对该API地址发起请求即可得到响应结果。
4. API 网关
作为一个网关中间件开发者,我认为Eolink的Api网关是业界做的比较好的
- 基于Golang实现,开源代码仓库地址:https://github.com/eolinker/goku_lite
- 对于Java研发网关中间件感兴趣的同学,也可以读一读常见开源网关中间件源码:https://gitee.com/mirrors/spring-cloud-gateway
Eolink提供的微服务网关产品能够实现高性能 HTTP API 转发、多租户管理、API 访问权限控制等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化配置界面,能够快速帮助企业进行 API 服务治理、提高 API 服务的稳定性和安全性。
接入流程示例:
其实我觉得,企业级网关中间件的解决方案,大家都是互相借鉴的,性能高低除了设计架构之外,很大程度也和服务器性能有关(吞吐量),如果只作为使用者角度来看,Eolink 提供的API网关解决方案产品体验度是比较高的。
具体接入流程参考文档:https://help.eolink.com/#/tutorial/?productID=14
5. API流量监控
我觉得这个功能是非常实用的,甚至省下开发者单独去搭建一套性能监控大盘了,直接拿来使用就好了~
文档地址:https://help.eolink.com/?status=link-jump#/tutorial/?groupID=c-958&productID=32
5.1 创建监控API
Eolinker API 网络监控平台支持从 Eolinker API Management(API管理产品)中导入API信息,或者手动创建监控API。
进入API监控页面,点击 新建API 按钮,会直接进入API监控编辑页面。你可以在编辑页中设置API监控的名称、请求地址、请求信息、校验规则等信息。
5.2 开启API监控
创建好API之后,在操作栏点击 更多 的按钮,在下拉菜单中选择 开启监控。
5.3 API实时分析报告
看到这个功能我自己都心动了,如果早知道有这个产品,我们就不需要大费周折自己从0到1研发一套网关体系了…
进入 API 的监控详情页,选择时间段为实时,此时页面会显示该 API 最新一次的监控报告,可以看到API最新一次请求的各阶段时间分析:
5.4 API监控日志
这个功能就不展示了,我觉得这个功能相比前面几个功能就没那么亮点了。客观角度看,功能丰富界面交互友好是值得点赞的。但是API日志最好还是提供更全面一些为好,当然这个也涉及到成本哈哈,现在网关日志存储也是很多网关中间件团队最耗费成本的地方之一。
三、Eolink下载安装
根据自己电脑系统选择对应客户端安装即可~
下载完成登录之后就进入API管理页面啦:
跑一个API体验一波~
API统计看板:
四、总结
通过这个产品,也改变了我对国产研发提效产品的认识,希望类似的产品越来越多。
另外,也希望每个程序员都能在工作中把更多的精力投入到小而精美的技术开发上,繁琐枯燥的重复性工作交给现有的产品和组件去处理。我认为后端开发不只是CRUD,如果有兴趣也欢迎大家一起来研究和学习下相关的网关中间件产品研发和开源版本学习:
- Eolink基于golang开发的API网关开源项目 https://github.com/eolinker/goku_lite
- Java网关开源项目,大名鼎鼎的Gateway(静态配置网关,可以研究下如何在这个轮子基础上改造出一款支持动态配置的运行态网关中间件):https://gitee.com/mirrors/spring-cloud-gateway
更多详情查看Eolink官网地址:https://www.eolink.com/?utm_source=kol&utm_medium=csdn&utm_content=w4602
版权归原作者 兴趣使然的草帽路飞 所有, 如有侵权,请联系我们删除。