开放平台的 Open API 设计

63
开开开开开 Open API 开开 开开开 2011-10-06

description

开放平台的 Open API 设计. 朱念洋 2011-10-06. Open API 是什么. 应用. 数据. 服务. OpenAPI. 平台. 业务 类. 支持 类. 易用性. 可用性. 安全性. 易用性. 开发者的抱怨. 加密 算法从没有听过! 从其他平台迁移过来好难啊! 说明文档看不懂 !. 解决. 尽量 业界统一( URL 、参数、返回、加密) 完善的 wiki 开发 者论坛 专业客服. 改. 让你解脱!. 全部一致. 同样的 URL ! 同样的参数、返回格式! 同样的调用地址!. - PowerPoint PPT Presentation

Transcript of 开放平台的 Open API 设计

Page 1: 开放平台的 Open API 设计

开放平台的 Open API 设计

朱念洋2011-10-06

Page 2: 开放平台的 Open API 设计

Open API 是什么

Page 3: 开放平台的 Open API 设计

数据 服务 应用

平台

OpenAPI

Page 4: 开放平台的 Open API 设计

存储 API

安全 API

监控 API好友动态

好友关系

个人资料

支持类

业务类

Page 5: 开放平台的 Open API 设计

易用性可用性安全性

Page 6: 开放平台的 Open API 设计

易用性

Page 7: 开放平台的 Open API 设计

开发者的抱怨• 加密算法从没有听过!• 从其他平台迁移过来好难啊!• 说明文档看不懂!

Page 8: 开放平台的 Open API 设计

解决• 尽量业界统一( URL 、参数、返

回、加密)• 完善的 wiki• 开发者论坛• 专业客服

Page 9: 开放平台的 Open API 设计

Page 10: 开放平台的 Open API 设计

让你解脱!

Page 11: 开放平台的 Open API 设计

全部一致• 同样的 URL !• 同样的参数、返回格式!• 同样的调用地址!

Page 12: 开放平台的 Open API 设计

• 获取个人信息 : /user/info• 获取用户签名 : /user/emotion• 获取好友列表 : /relation/friends• 是否好友 : /relation/is_friend• …

Page 13: 开放平台的 Open API 设计

一点接入四平台全部上线

应用无需改动一行代码

Page 14: 开放平台的 Open API 设计

HOW?

Page 15: 开放平台的 Open API 设计
Page 16: 开放平台的 Open API 设计

可用性

Page 17: 开放平台的 Open API 设计

服务器繁忙

服务器繁忙

服务器繁忙

服务器繁忙服务器繁忙

服务器繁忙服务器繁忙

Page 18: 开放平台的 Open API 设计

某机房异常!

Page 19: 开放平台的 Open API 设计

怎么解决• DNS 变更?• 应用自己变更调用 IP ?

Page 20: 开放平台的 Open API 设计

真正解决

内网 DNS

Page 21: 开放平台的 Open API 设计

内网 DNS• 即时生效• 应用无感知• 就近访问• 安全性高

Page 22: 开放平台的 Open API 设计

应用 B OpenAPI 机房 B

OpenAPI 机房 A应用 A

应用 B OpenAPI 机房 B

内网DNS

Page 23: 开放平台的 Open API 设计
Page 24: 开放平台的 Open API 设计

某 server 异常

Page 25: 开放平台的 Open API 设计

单点

Page 26: 开放平台的 Open API 设计

主调 server

被调 server3

主调 server

被调 server1 被调 server2 被调 server3

优化前

Page 27: 开放平台的 Open API 设计

被调 server3

主调 server

被调 server1 被调 server2 被调 server3

异步化 动态 IP分配

优化后

Page 28: 开放平台的 Open API 设计

总结• 无单点• 异步化• 负载均衡,过载保护• 容灾

Page 29: 开放平台的 Open API 设计

还能不能再优化?

Page 30: 开放平台的 Open API 设计

柔性服务!

Page 31: 开放平台的 Open API 设计
Page 32: 开放平台的 Open API 设计

在能容忍的最长时间内将最重要的事做完

Page 33: 开放平台的 Open API 设计

1

2

3

4

重要

次要

Page 34: 开放平台的 Open API 设计

高枕无忧?

Page 35: 开放平台的 Open API 设计

最长超时设为多少?

Page 36: 开放平台的 Open API 设计

EMA 算法!

Page 37: 开放平台的 Open API 设计

0

100

200

300

400

500

600

Tmax

Tavg

Thwm

EMA

Tdto

响应时间下限

平均相应时间

响应时间上限

动态超时时间

最大弹性时间

Page 38: 开放平台的 Open API 设计

还有什么• 自动化测试• 告警策略

Page 39: 开放平台的 Open API 设计

全面的告警• OpenAPI 调用访问量、失败率• 应用调用 OpenAPI 的访问量、失败率• 各级 server 之间调用的失败率告警• CGI 内部模块调用告警• 自动化测试告警• 基础服务告警

Page 40: 开放平台的 Open API 设计

后台架构图

Page 41: 开放平台的 Open API 设计
Page 42: 开放平台的 Open API 设计

安全性

Page 43: 开放平台的 Open API 设计

平台登录 应用登录?

Page 44: 开放平台的 Open API 设计

平台登录

应用 1 登录 应用 2 登录

Page 45: 开放平台的 Open API 设计

模拟用户登录用户应用数据泄漏

Page 46: 开放平台的 Open API 设计

平台登录 + 应用 ID

应用登录( openid+openkey )

Page 47: 开放平台的 Open API 设计

平台登录

应用 1 登录 应用 2 登录

Page 48: 开放平台的 Open API 设计

详细鉴权• 应用授权• 频率限制• 用户授权• 用户登录态• 安全限制

Page 49: 开放平台的 Open API 设计
Page 50: 开放平台的 Open API 设计

应用

API

用户

应用 IP

用户 IP

安全审计纬度

Page 51: 开放平台的 Open API 设计

• 应用健康度分析• 反外挂

协助应用

Page 52: 开放平台的 Open API 设计

前台 OpenAPI

Page 53: 开放平台的 Open API 设计

• 好友邀请• 跳转好友首页• 支付• ……

Page 54: 开放平台的 Open API 设计

应用如何加载平台的js ?

Page 55: 开放平台的 Open API 设计

直接加载 js ?• 长 Cache ,不改变文件名无法升

级• 改变文件名,需要第三方变更

Page 56: 开放平台的 Open API 设计
Page 57: 开放平台的 Open API 设计

谢谢大家!Q&A

Page 58: 开放平台的 Open API 设计

Page 59: 开放平台的 Open API 设计

Oauth 与 OpenKey

Page 60: 开放平台的 Open API 设计

应用 平台

请求授权 用户授权

请求资源 分配资源

Page 61: 开放平台的 Open API 设计

业务特性决定选择• 用户点击应用列表进入• 用户在线时间较短• 应用嵌套在平台 iframe中

Page 62: 开放平台的 Open API 设计

OpenKey特点• 默认 30 分钟过期,但可续期• 有最长续期时间• 用户授权后只跳转腾讯域名 URL

Page 63: 开放平台的 Open API 设计

OpenKey 更适合• 与平台登录无缝结合• 应用编码更简单,只关心业务逻辑