看看阿里文娱怎么建设开放平台,这就是专业~

简介: 没有搭建过开放平台,也接过第三方api,比如说阿里ocr、支付宝支付接口,那个平台就叫开放平台,正所谓没有吃过猪肉,也看过猪跑,哈哈哈。

theme: hydrogen

前言


哥们哥们,开放平台了解过吗?

没有搭建过开放平台,也接过第三方api,比如说阿里ocr、支付宝支付接口,那个平台就叫开放平台,正所谓没有吃过猪肉,也看过猪跑,哈哈哈。

cc6098430f4c723921bbbf73513e1703.jpeg

开放平台,我的理解:将内部数据跟外部数据的打通的桥梁,就像海关一样,那么它有什么组成,它是怎么建设的呢?海关首先要有人检查吧,其次知道你把什么东西带进来了,什么东西带出去了,然后再是数字化的监控,有多少人啊,什么时候最火爆。

接下来,我们来看下阿里文娱怎么搞的。

开放平台建设

组成

  1. 鉴权
  2. api管理
  3. 监控

鉴权

image.png

我们看下,这其实是内部用户登陆的那一套,腾讯accessToken也是这么搞的,就是系统需要维护一个token,然后不停的刷它的过期时间,然后你接口带上这个token就可以愉快的玩耍了。

还有一种是通过验签的方式,我之前写过一篇文章: 动手实现对外安全的接口(改进篇)

对url、参数、特定参数(时间戳、appId)然后对他们进行签名,如果签名对不上,就证明这个请求不是你发起的。

细化程度

可以细化到接口级别,哪些用户可以调用这个接口,哪些不行。还有数据跟业务上的隔离,这个是可扩展性的表现,而且很多技术方案都需要基于最基本的数据隔离来搞,比如说全链路灰度,你sql都无法做到只能查自己的,那你会发现数据是混乱的。

api管理

image.png

这是比较理想的api管理,当我们说到api管理很多时间想到的就是限流,但是当你仔细看这幅图的时候,会发现有点东西。

首先是api收集,它也会作为api测试的一个数据源,然后审核,这个一般是由开发者自行检查,比如说哪些参数不传出去,但是流程化之后,需要有个人来审核的。然后上线之后,肯定有api文档对吧,然后限流配置、监控、以及外部SDK的生成,最后是对api上下线的管理。这个是完整的闭环,也是比较好的一个api体系。

监控

既然我们将数据给别人,别人也会把数据丢回来,那我们需要对流量进行监控,会不会压垮系统,接口报错情况,然后通过这些数据来推进优化。常见的就是通过apm来进行全链路监控。

当然我们也能监控到攻击,做好防范,you bad bad~

image.png

谈谈我的感受

对于鉴权、监控这两个方面,相信大家都能做得很好,但是api管理这个,很多开发者上来就是限流,说的就是我,当我看完阿里文娱的设计方案,我对api管理有更加深刻的理解。

api管理,管理的是什么,当然是api。第一个是限流配置,第二个是输出内容是否合规,有没有把重要的东西泄漏出去对吧,第三个是作为数据源,给自动化测试用,第四个对外接口的审计,究竟提供了哪些接口,哪些不用的api要下线,最后是对api监控。

image.png

觉得有收获的,关注下博主,我们下期再见~

相关文章
|
存储 安全 Java
【多线程面试题 七】、 说一说Java多线程之间的通信方式
Java多线程之间的通信方式主要有:使用Object类的wait()、notify()、notifyAll()方法进行线程间协调;使用Lock接口的Condition的await()、signal()、signalAll()方法实现更灵活的线程间协作;以及使用BlockingQueue作为线程安全的队列来实现生产者和消费者模型的线程通信。
|
设计模式 监控 算法
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
309 2
|
前端开发 JavaScript API
React的Context API:全局状态管理的利器
【4月更文挑战第25天】React的Context API解决了深层组件间状态共享的难题,提供全局状态管理方案。通过`Provider`和`Consumer`组件,或结合`useContext` Hook,实现状态在组件树中的传递。最佳实践包括避免过度使用,分离逻辑,以及在必要时与Redux或MobX结合。Context API简化了数据传递,但需谨慎使用以保持代码清晰。
|
SQL Java 数据库连接
快速上手MyBatis Plus:简化CRUD操作,提高开发效率!
快速上手MyBatis Plus:简化CRUD操作,提高开发效率!
|
传感器 JavaScript 前端开发
深入理解TypeScript:提升JavaScript开发效率
【10月更文挑战第8天】深入理解TypeScript:提升JavaScript开发效率
187 0
|
存储 DataWorks 算法
dataworks数据集成小记-文本数据
dataworks离线数据集成使用datax来实现同步,文本数据包括TxtFileReader\OSS\ftp 三类数据源
429 0
|
前端开发
美观的404错误页面源码
美观的404错误页面源码
483 8
美观的404错误页面源码
|
关系型数据库 MySQL 开发工具
Mysql 忘记密码怎么重置密码(详细步骤)
Mysql 忘记密码怎么重置密码(详细步骤)
1504 0
|
机器学习/深度学习 算法
基于Mamdani模糊神经网络的调速控制系统simulink建模与仿真
基于Mamdani模糊神经网络的调速控制系统simulink建模与仿真
|
存储 SQL 分布式计算
Apaceh Hudi实时湖仓解决方案 统一的流批存储抽象
——陈玉兆 阿里巴巴技术专家 Apache Hudi PMC member Apache Calcite PMC member
615 0
Apaceh Hudi实时湖仓解决方案 统一的流批存储抽象