SpringHome一个软件开发者的成长架构

微服务实践8-接口管理

2018-10-25  本文已影响236人  Wales_Kuo

API&ABI

应用编程接口(英语:Application Programming Interface,缩写作 API),又称为应用程序接口,就是软件系统不同组成部分衔接的约定。由於近年來软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的可维护性和可扩展性。

应用二进制接口(英语:Application Binary Interface,缩写作 ABI)与操作系统结合的特定硬件平台的规范。这是超越应用程序接口(API)的一步,API定义了从应用程序到操作系统的调用。ABI为特定的CPU家族定义了API加上机器语言。API不保证运行时兼容性,但ABI确实如此,因为它定义了机器语言或运行时格式。

在操作系统上为什么C语言的程序的可移植性差?就是因为二进制接口的原因。

软件研发业界由前人为我们总结了很多架构模式,指导与帮助我们解决系统架构上的问题。现在比较流程的架构模式有:微服务,事件驱动,CQRS等等。这些架构模式都都是基于分布式计算的概念提出的具体技术场景下的模式。分布式计算最大的特点就是会设计到跨主机,跨进程的通信。所以就有了API。

API帮助我们解决OOA过程中的SOLID的问题。所以,在软件设计过程中API的设计是不可或缺的。有了API在开发过程中就有可能团队间,开发人员间的信息不同步。在互联网上可以搜索到很多,基本上可以分为两类:

接口怎么管理?

接口管理(AMS、API Management System)为我们提供创建和发布WebAPI、访问控制、对外开放、监控、计费、报告等功能的管理系统。


功能划分与使用流程

AMS的功能可以分为以下几个模块:

在互联网上可以搜索到大神对于AMS的对比:


接口管理工具

接口管理用法

第一节中说明了接口管理的两种分类。在下面具体的说明开源版本的比较。这里使用几个方面对比:

编号 名称 网址 私有化部署 便宜性 接口 社区
1 Rap2 http://rap2.taobao.org
https://github.com/thx/rap2-delos
MIT License 方便简单 淘宝前端团队支持,有8个人,2269个星
2 YApi https://yapi.ymfe.org
https://github.com/YMFE/yapi
Apache License2 方便简单 可以对接Swagger, postman, har 去哪儿前端团队支持,有15个人,4398个星
3 CrapApi http://api.crap.cn
https://github.com/EhsanTang/ApiManager
GPL3 方便简单 未知 个人开发,968个星
4 Swagger https://swagger.io UI可以,但其他不可 方便简单 未知 商业公司
5 Kong https://konghq.com
https://github.com/Kong/kong
Apache License2 方便简单 未知 商业公司,完备的API管理,支持RPC,支持K8S部署

使用实践

进本上面三个国产的接口管理系统,都可以满足基本的需求。但是,CrapApi是个人开发,更新频率不高。所以就不进行相关的部署并使用了。

因为之前在其他地方使用过Rap,所以一直对Rap2是存在一些好感的。所以就先开始部署Rap2。从Github地址中可以找到Rap2的docker-compose.yml文件,所以,直接下载文件进行docker部署。部署后发现没有界面,找了找原因还需要部署rap2-dolores,但是rap2-dolores没有docker部署,搞了很久把rap2-dolores进行docker部署之后,发现没有地方有默认用户名和密码。在代码中找了半天才找到,登录进去之后发现新建接口,接口测试都是有问题的。所以,提了Issue。就先下了。

开始部署YApi。在github上没有发现有Docker部署的方式,在网上找了一下,有位前辈已经帮YApi提供了Docker部署方案:https://github.com/branchzero/yapi-docker。简单的下载docker-compose.yml并运行。系统即可使用。

登录界面

默认的用户名:admin@admin.com 密码:ymfe.org

登录后

登录后我创建了一个接口,非常方便简单。

发送测试

非常方便啊。还可以支持高级Mock,可以根据自己的业务设置返回数据的内容。

至此,个人感觉YApi的使用感受要比Rap2好的多。并且使用也方便很多。

参考:
应用程序接口 https://zh.wikipedia.org/wiki/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%8E%A5%E5%8F%A3
应用二进制接口 https://zh.wikipedia.org/wiki/%E5%BA%94%E7%94%A8%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%8E%A5%E5%8F%A3
Open API分析、实践和思索 http://www.infoq.com/cn/articles/open-api-practice
Top companies that featured in Leaders Quadrant for Full Life Cycle API Management 2018: Gartner https://www.dailyhostnews.com/magic-quadrant-for-full-life-cycle-api-management-2018-gartner/
Where API management is headed in 2017 https://www.ca.com/en/blog-highlight/api-management-headed-2017.html

上一篇下一篇

猜你喜欢

热点阅读