淘宝开放平台网关技术解密
如果无法正常显示,请先停止浏览器的去广告插件。
1. Alibaba Group
淘宝开放平台网关技术揭密
顾风胜
2. Alibaba Group
目录
01 | 开放平台概览
02 | API网关介绍
03 | API接入自动化
04 | 开放平台工厂
05 | 开放平台安全
3. Alibaba Group
第一部分
4. Alibaba Group
开放平台大图
服务
市场
门户
生活导购
无线应用
百万级
开发者
百川
开放
千牛插件
C2B定制
互动插件
千牛
开放
手淘
开放
SAAS软件
ERP/WMS/CRM
聚石塔
电商云
千级应用
亿级订单/天
90%+
淘宝卖家
授权使用
百万级
上线应用
放
5000+ API
百亿级/天
综合业务
内部
应用
安
开
全
阿里
开放平台
1000+ Topic
百亿级/天
授权使用
98%+
天猫商家
tasp
淘系
阿里云
菜鸟网络
支付宝
B2B
…
5. Alibaba Group
开放平台技术架构
共享服务
数据推送 发票平台 千牛平台 二方应用
ISV控制台 文档中心 支持中心 沙箱环境
三方应用
应用层
运营管理
SDK
应用接入层
数据中心
HTTP1/2
控制中心
计费中心
授权中心
数据访问
API
协议
消息
协议
协议转换 访问控制
API接入 API编排
HSF
阿里集团
WebSocket
安全控制
服务调用
API管理 API统计
Dubbo HTTP Notify
蚂蚁金服 菜鸟网络
合作公司
SPI
协议
协议层
HTTP1
日志统计
流程与工具
网关层
服务接入层
Map/Reduce
大数据
服务层
6. Alibaba Group
开放平台产品架构
用户
ISV
面
向
开
发
者
提
供
应
用
生
态
闭
环
门
户
首
页
业务
定制门户
支
持
中
心
组
件
API接入
API
文
档
组
件
开
发
者
社
区
iOS/Android市场
分发
APP
订购
开放平台
统一门户
文
档
中
心
组
件
下载
淘宝服务市场
发布
开发、测试、部署、上线、监控
开
发
者
控
制
台
服务端
SDK
移动端
SDK
API网关
+
消息网关
+
数据推送
+
登录授权
数据中心
面向服务提供方(ISP)提供一站式API接入与管控平台
沙
箱
环
境
外部
云环境
聚石塔
+
EWS
运营管理
ISP
7. Alibaba Group
第二部分
8. 如何打造高可靠的API网关
API请求全异步化
API元数据无阻塞调用
API网关升级插件化
API访问控制透明化
丰富的API流量控制
API弱网高效访问
Alibaba Group
9. Alibaba Group
API网关技术架构
三方应用
内部应用
通讯协议
HTTPS
HTTP/1
HTTP/2
HSF
网关协议
API协议
其他协议
日志与监控
权限控制
Local Cache
Database
批量协议
访问控制(LBAC)
HDCC
Remote
Cache
消息协议
数据
源
流量控制 黑白名单
安全控制 参数校验 参数映射
参数转换 服务调用 日志打点
服务协议(Mapping)
HSF
阿里集团
HTTP
DUBBO
蚂蚁金服
其他
菜鸟网络
调用记录查询
日志
上传
实时分析统计
离线分析统计
10. Alibaba Group
API网关部署架构
https://eco.taobao.com
http://gw.api.taobao.com
http(s)://apigw.taobao.com
HTTP1.1短连
HTTPS短连
HTTP2(C/S)长连
LVS Cluster
VIP Group1
VIP Group3
VIP Group2
SSL Proxy Cluster AServer Cluster
Nginx Nginx
with VipClient with VipClient
HTTP短连
API Gateway Cluster
HTTP短连
API Gateway API Gateway API Gateway
Nginx Nginx Nginx
HTTP短连
HTTP短连
Jetty
HTTP短连
Jetty
Jetty
HSF/Dubbo长连接
Internal Service Cluster
IC
TC
LC
UC
…
11. Alibaba Group
API请求全异步化
API Gateway
API Gateway
Jetty IO Thread
Jetty Servlet
Thread Pool
APP
3
1
2
1
APP
5
2
4
core*2
500
API Gateway
Jetty IO Thread
Jetty Servlet
Thread Pool
500
sync
async
API Worker
Thread Pool
RPC/HTTP IO
Thread
3
APP
2
1
4
6
5
core*2
API Worker
Thread Pool
Jetty Servlet
Thread Pool
500
core*2
200
释放网络等待引起的线程占用,线程数不再成为网关的瓶颈
彻底隔离API请求之间的影响,慢API不会引起网关的不稳定
200
12. Alibaba Group
API元数据无阻塞调用
ISV APP
Nginx
API Gateway
API信息
APP信息
权限包
信息
布隆过滤器(QPS上千万)
ACL
本地缓存(QPS上千万)
HDCC
用户授权
信息
本地调用
本地调用
BloomFilter
LRUMap
RPC
LOG 分布式缓存 (QPS几十万)
ISP RPC调用 (QPS几万)
远程调用
远程调用
RDS
消灭99.9%的IO等待,CPU只用于计算资源
网关耗时降低到1~2毫秒,较少的DB资源支持高并发
Cache
DB
13. API插件化体系 —
Alibaba Group
运行时升级网关
分流插件
自定义分流规则
API请求
协议识别
签名插件
入参重写插件
远程
调用
入参
检验
校验APP
校
验
权
限
黑白名单
校验授权
自定义入参检查规则
调用地址重写插件
结果转换
API分流
流控插件
自定义流控规则
流量
控制
入参
转换
校验API
出参重写
日志打点
API响应
14. API访问控制体系 —
Alibaba Group
LBAC
Role Based Access Control(RBAC)
举例:getUser接口只允许
官方应用从内网发起调用
聚石塔 API请求
淘宝助理 getUser
主体
规则指派
APP/API
规则
标签
规则校验 规则校验
官方+内网 官方+内网
访问允许
控制
控制指派
操作
目标
会话
API请求
标签计算
官方、内网
访问拒绝
Label Based Access Control(LBAC)
API请求
getUser
标签计算
官方
进
化
阿里内网
淘宝助理
好处:透明化、可复用、热生效
15. Alibaba Group
API流量控制
流控类型
基本
流控
流控场景
API流控(支持QPS、QPD)
流控手段
集中流控
(QPS超过百万要分片)
高于
运营
流控
APP流量包(支持QPM)
APP + API/Group的流量包(支持QPM)
APP + API + User的流控(支持QPS)
集中流控
高于
大促
流控
APP访问API的权重流控(支持QPS)
单机流控
降级
16. Alibaba Group
API弱网环境调用优化
调用优化
网络优化
HTTP1.1长连
ATS A-synchronize Task Service
异步任务服务
TQL Taobao Query Language
淘宝查询语言
SPDY3.X
HTTP2C/S
HTTP DNS
API Proxy
批量API
异步
请求
并行
任意组合
响应
17. Alibaba Group
第三部分
18. 如何打造高效的API接入管理平台
持续的演进
低学习成本
零二次开发
零测试成本
强一致性保证
完善的监控与统计
Alibaba Group
19. Alibaba Group
API接入自动化演进
纯手工(2009年)
半自助(2011年)
全自助(2015年)
学习 无从下手,只能找人 看文档和教程 流程化接入,无学习成
本
编码 依赖业务方Jar包,手写 依赖网关Jar包,手写 零依赖,零编码,支持
XML与JSON映射 Mapping,配置Spring HSF、Dubbo、HTTP
联调 远程Debug,手写HTTP 部署应用,部署API, 智能部署,自动化测试
代码调用API API测试工具
审核 无 靠自觉,旺旺电话催 BPM流程、移动审批
发布 与应用一起发布 开放平台小二发布API 自主发布,灰度发布,
一键回滚
文档 手工写Wiki文档 自动生成(对外文档) 自动生成(对内文档,
对外文档,PDF文档)
SDK 手工写JAVA SDK 自动生成(.NET&JAVA) 自动生成,Maven自动
上传,主流语言支持
一个月
一周
一天
20. API接入低学习成本 —
Alibaba Group
流程化与自助化
服务注册 参数映射 多环境测试 测试用例 规范审核 数据对外
自动化 批露审核
访问控制 一键生成 预发回归 沙箱环境 安全审核 策略审核
(TAML) 自动化 自动构建
API录入
API测试
API审核
Beta发布
API升级
API上线
API启用
线上回滚
API
监控与统计
API下线
API统计
回收权限
API
使用与管控
APP统计
SDK生成 API流控
多维度统计
下线监控
开放大盘
文档生成
API权限
回收流控
用户统计
回收配置
正式发布
监控告警
21. API接入的零二次开发 —
Alibaba Group
映射中央化
后端服务
TOP SDK
Request
Response
TOP网关
HTTP URL
Parameters
访问控制
Top Mapping
MethodCall
Parameters
反射调用
HSF服务
MethodResponse
Json/Xml
Json/Xml
Object Result
依赖网关的jar包
编写Mapping文件
配置Spring服务
中央化
TOP网关
后端服务
TOP SDK
HTTP URL
Request
Response
访问控制
参数转换
Json/Xml
Map
Map
Top Mapping
Request
Response
Struct Map
泛化调用
HSF/DUBBO/HTTP服务
Result Map
零依赖零配置,
Mapping文件自动生成
22. API变更零测试成本 —
Alibaba Group
回归测试自动化
线上请求
ISP提交API测试
线上
环境
API请求流程
预发
环境
API正式网关
Mock返
回值
回归测试工具
API
入参
关键点:
请求拦截器
API
网关
消息监听器
配置规则
入参映射
线上参数
线上结果
命中规则
请求复制
公网消
息队列
RPC
入参
消息处理器
ISP线上服务
•
•
•
•
•
线上请求复制到预发
自动生成测试用例
API请求重放(读API)
API结果Mock(写API)
API测试结果比较
优势:
RPC
服务
读执行器 写执行器
线上参数 反推RPC出参
重试请求
API预发网关
ISP预发服务
N
RPC
出参
出参映射
ISP预发Mock
Y
结果比较器
测试报告
API
出参
•
•
•
•
测试用例全面
快速发现问题
零测试成本
变更稳定性保障
23. API元数据强一致性保证 —
Alibaba Group
自动化生成文档、SDK、工具
RPC服务
对内文档,对外文档,离线文档
API
元数据
Java/C#/PHP/Python/C/C++/NodeJS
API文档自动生成
API描述
API入参
API出参
API请求示例
SDK自动生成
多语言SDK模板
Core + Req + Rsp + Domain
多语言SDK编译
JDK, Mono, Zip
多语言SDK打包
API响应示例
API错误码解释
多语言SDK下载
API测试工具自动生成
24. API接入自动化演示 —
三分钟接入一个API
Alibaba Group
25. Alibaba Group
第四部分
26. 开放平台工厂 —
多租户与配置化门户(前端)
Alibaba Group
Header
oAuth登录
开发者(ISV)
开发者门户
开发者控制台
文档中心模块
开发者管理
首
页
+
产
品
页
普通
文档
组件
文档
首页
接
口
文
档
组
件
支
持
中
心
组
件
开
发
者
社
区
导航(首页、产品、文档、支持、社区)
淘宝账号
三方账号
多租户配置化门户
申请入驻 身份管理
信息维护 API收费
Footer
应用管理
应用创建 应用设置
权限申请 SDK下载
自建账号
SSO登录
支持中心模块
27. 开放平台工厂 —
Alibaba Group
定制化开放与垂直化管理(后端)
服务提供方(ISP)
API开放
API协议
消息协议
运营管理
业务开放策略
SPI协议
API接入 访问控制 开发者管理 应用管理
API文档 多语言SDK 文档管理 API管理
测试工具 网关域名 工单管理 通知中心
通用工具与服务
数据统计&用户画像
定制化开放与垂直化管理
垂
直
权
限
划
分
28. Alibaba Group
第五部分
29. Alibaba Group
开放与安全
开放 安全
易用、灵活 难用、限制
30. Alibaba Group
安全控制手段
网关安全
数据安全
应用安全
用户身份认证(OAuth2) 对外数据披露审批流程 ISV入驻规范、安全技术要求
API协议安全(SSL、防篡改、防重放) 数据分级(API级,字段级) APP创建申请、API权限包申请
API权限控制(APP级,用户级) 数据脱敏(模糊化) 应用安全配置(IP绑定、用户绑定)
多维度流控(APP+API+User) 数据混淆(Open Security ID) 应用安全扫描(黑盒扫描、白盒扫描)
黑白名单控制(应用级、用户级) 数据加密(API响应,RDS数据) 安全托管环境(聚石塔、千牛、TAE)
日志打点与分析(API级、字段级) 安全保镖(行为监控,异常报警) 人机识别防刷(无线安全保镖)
31. 《尽在双十一》
Alibaba Group
32. Alibaba Group
联系作者:winwindg
诚邀志同道合的朋友加入淘宝开放平台:fengsheng@alibaba-inc.com