theme: hydrogen
前言
哥们哥们,开放平台了解过吗?
没有搭建过开放平台,也接过第三方api,比如说阿里ocr、支付宝支付接口,那个平台就叫开放平台,正所谓没有吃过猪肉,也看过猪跑,哈哈哈。
开放平台,我的理解:将内部数据跟外部数据的打通的桥梁,就像海关一样,那么它有什么组成,它是怎么建设的呢?海关首先要有人检查吧,其次知道你把什么东西带进来了,什么东西带出去了,然后再是数字化的监控,有多少人啊,什么时候最火爆。
接下来,我们来看下阿里文娱怎么搞的。
开放平台建设
组成
- 鉴权
- api管理
- 监控
鉴权
我们看下,这其实是内部用户登陆的那一套,腾讯accessToken也是这么搞的,就是系统需要维护一个token,然后不停的刷它的过期时间,然后你接口带上这个token就可以愉快的玩耍了。
还有一种是通过验签的方式,我之前写过一篇文章: 动手实现对外安全的接口(改进篇)
对url、参数、特定参数(时间戳、appId)然后对他们进行签名,如果签名对不上,就证明这个请求不是你发起的。
细化程度
可以细化到接口级别,哪些用户可以调用这个接口,哪些不行。还有数据跟业务上的隔离,这个是可扩展性的表现,而且很多技术方案都需要基于最基本的数据隔离来搞,比如说全链路灰度,你sql都无法做到只能查自己的,那你会发现数据是混乱的。
api管理
这是比较理想的api管理,当我们说到api管理很多时间想到的就是限流,但是当你仔细看这幅图的时候,会发现有点东西。
首先是api收集,它也会作为api测试的一个数据源,然后审核,这个一般是由开发者自行检查,比如说哪些参数不传出去,但是流程化之后,需要有个人来审核的。然后上线之后,肯定有api文档对吧,然后限流配置、监控、以及外部SDK的生成,最后是对api上下线的管理。这个是完整的闭环,也是比较好的一个api体系。
监控
既然我们将数据给别人,别人也会把数据丢回来,那我们需要对流量进行监控,会不会压垮系统,接口报错情况,然后通过这些数据来推进优化。常见的就是通过apm来进行全链路监控。
当然我们也能监控到攻击,做好防范,you bad bad~
谈谈我的感受
对于鉴权、监控这两个方面,相信大家都能做得很好,但是api管理这个,很多开发者上来就是限流,说的就是我,当我看完阿里文娱的设计方案,我对api管理有更加深刻的理解。
api管理,管理的是什么,当然是api。第一个是限流配置,第二个是输出内容是否合规,有没有把重要的东西泄漏出去对吧,第三个是作为数据源,给自动化测试用,第四个对外接口的审计,究竟提供了哪些接口,哪些不用的api要下线,最后是对api监控。
觉得有收获的,关注下博主,我们下期再见~