目录
- OAuth2 简介及在MPlus 的落地
- Redis 客户端权威Redis
- 跨机房问题的由来
- 系统降级容灾方案的落地
- 面对安全挑战做的一些优化措施
一个经典的OAuth 2.0 模型
- 什么是OAuth 2.0 协议?
-
允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。
- MPlus是一个定制版的OAuth 2.0 实现
-
跨机房问题的产生
同机房调用
跨机房调用(时序图 + 架构图)
跨机房调用优化
总体架构图
前路漫漫:性能提升 2014-2015
UC整改之路
模块化、服务化
性能压力
基于客户端分片的模型使用redis
- 扩容方便,自动迁移数据
- 自动存活检测
- 授权、鉴权相互冗余
-
基于客户端分片的Redis
- 适用缓存性质数据,不重持久化数据。
-
可动态扩容,符合一致性HASH 带来的高可用能力,消除proxy上的性能瓶颈,去除redis slave的资源浪费,正常情况下能节省一半的资源(proxy,redis slave,watchdog),对于鉴权服务器来说是极大的好处,目前mplus 在仅三地机房的 redis 缓存是 1008G,如果不采用这种方式,会浪费大量的服务器资源。
- 成本考量
- 合计 7000W Hash 合计redis存储1008G 三地机房加起来60台V8
- V8*60=51,450.00
- 每月单机房可节省运维成本 51,450 元RMB
- 51,450 * 2机房 = 102,900
- 每年节省102,900 * 12 = 1,234,800元
我们来说说异地多活与两地三中心 2015
- 成本
- 冷热数据
- 适用场景
- 优缺点
迈步从头越:可用性提升 2016-2017
- 99.9% -> 99.999%
- 8.76小时
- 52.6分钟
- 5.26分钟
- 异地调用
网络压力
- 模块的完全解耦与性能压力的折衷
- 公网及内网自动切换
#### 对oAuth2授权接口进行保护
- 传输脱敏
- 加密加签:可不做限制
- 未加密加签:执行严格的IP限制
- 旧的SDK怎么办?
保证高可用:跨机架部署 硬件层面的策略
- 降级使用
- 优点:快、依赖少
- 缺点:有损服务
Mplus智能升级降级方案
- 自动感知网络状态
- 线路检测
- 依赖模块检测
实现细节:
-
问:如何应对跨机房网络抖动?
-
如何应对极端情况,两条线路都不通的情况?
-
如何做加密加签?
-
面对社工库
-
我们是怎么做IP阻断的?
-
采用动态迁移数据造成性能下降怎么办?