微服务实践04--DevOps10--接口管理01--接口管理

微服务实践目录,可以参见连接。

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在开发过程中就有可能团队间,开发人员间的信息不同步。在互联网上可以搜索到很多,基本上可以分为两类:

  • Open API
    对于国内的开发者来说,很多服务在初始阶段的时候都在考虑我的用户从哪里来,我怎么才能让用户容易的进入并试用我的系统?后来看到腾讯开放了用户认证接口,我们的开发人员就蜂拥上去,对接腾讯的认证接口。从那时开始各大流量提供的API就是我们的用户来源了。但是SNS提供的API以及现有的一些分享类网站提供的API,仅仅只是Open API中的一角,所能给开发者带来的想象空间,以及所能够产生的商业价值还是十分有限。这种基于大公司的大平台发布出来的用于各种用途的接口,以及这一类接口的管理平台。
  • 开发用的API Portal
    其实第一类里面包括这部分的功能。开发用的API Portal就是用来做API文档化以及提供测试,Mock的服务。这个只是Open API管理中非常小的一部分功能。

接口怎么管理?

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


功能划分与使用流程

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

  • 网关
    充当API前端的服务器,接收API请求,执行节流和安全策略,将请求传递给后端服务,然后将响应传递回请求者。网关通常包括一个转换引擎,用于协调和修改请求和响应。网关还可以提供诸如收集分析数据和提供缓存的功能。网关可以提供支持认证、授权、安全、审计和法规遵从性的功能。
  • 报告和分析
    监控API使用和负载(总命中率、已完成事务、返回的数据对象数量、计算时间和其他内部资源消耗量、传输的数据量)的功能。这可包括直接或通过高级网络管理系统发出警报来实时监视API,例如,如果API的负载太大,还可以包括分析历史数据(如事务日志)以检测使用趋势的功能。还可以提供功能来创建用于测试API端点的性能和行为的合成事务。由报告和分析功能收集的信息可以被API提供者用来在组织的整个持续改进过程中优化API提供,并且用于为API定义软件服务水平协议。
  • 接口安全
    为了接口服务的稳定性以及数据可见性的问题,接口管理工作必须支持安全管理。现在业界流程的API安全管理方式是OAuth2的方式进行管理。
  • 接口生命周期
    可以让研发团队更关注与业务的开发。接口生命周期管理帮助团队管理完成接口的设计、部署、发布和下线的整体流程。
  • 开发用的API Portal
    为团队间或者第三方提供API接口的文档,测试服务。将API发布后开发人员可以在这里看到接口的详细资料。使开发人员能够轻松地探索、测试、获取API密钥,并更快地进行创新。

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


接口管理工具

接口管理用法

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

  • 私有化部署
    因为最终目标为公司内部团队间沟通使用的系统。所以,必须选择开源的并允许自由使用的系统才可以满足要求。
  • 使用便宜性
    这里涉及界面是否可以方便的看到。并需要查看是否有比较完整的文档,方便之后遇到问题时查找并解决。
  • 接口
    方便与其他接口测试工具对接,方便数据的导入导出工作。导入导出的数据可能在其他地方使用。
  • 社区
    开源项目的支持情况。是否有很好的支持Bug Fix。
编号 名称 网址 私有化部署 便宜性 接口 社区
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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容