苏宁云商IT总部高级架构师 王一硼:移动端统一接入层

圣浩宕

2017/11/14 发布于 技术 分类

苏宁易购随着业务的发展,用户使用习惯的改变,不断强化移动端发展,加强与视频直播,娱乐、体育营销等各类内容媒体的合作,创新营销产品,不断提升移动端日活,2017 年 3 月移动端订单数量已占线上整体比例的 83%。为了进一步提高移动端访问速度,提升用户体验,我们潜心研究网关、https2.0技术。利用go语言的快速、高效、高性能,搭上https2.0的快车,为用户提供更快捷的购物体验。

文字内容
1. 移动端统一SA接C入C2层017
2. 1Part 接入层的设计 2Part SA功C能C与实2现017 3Part 性能与实践案例
3. 1Part 接入层的设计 1.0 架构演进 S234A...000C架网内C络部构2架划组01构件分7
4. Part 1 1.0 架构演进 应用防火墙到统一接入层 SACC2017
5. Part 1 1.0 架构演进 Ctrix/F5 SAWCCA2F017 统一接入层
6. Part 1 2.0 架构划分 1. 统一管理业务无关的逻辑(如cookie,header等) 2. 协议管理,流量控制 3. 异步处理聚合后端服务,提升性能 4. 容量动态分配(同一集群动态增减机器) 5. 部分AB方案 (老系统迁移新系统) SACC2017
7. Part 1 2.0 架构划分 SACC2017
8. Part 1 3.0 内部组件 SACC2017
9. Part 1 4.0 网络架构 SACC20171 客户端统一一个域名 2 统一网络协议 http2.0 3 流量标记
10. 2Part 功能与实现 1.0 功能概况 S2.A0 C技C术2实0现1方7案
11. Part 2 1.0 功能概述 SACC2017
12. Part 2 1.0 功能概述 – 服务路由于转发 proxy ZK cluster server bind 转发配置 SA集群C配置C2017
13. Part 2 1.0 功能概述 – 统一协议,内容,内容管理 cluser1 proxy SACC2017cluser2 cluser3 contextPlugin protoPlugin 统一管理请求 公共内容 和协议
14. Part 2 1.0 功能概述 – 域名收敛 1 减少DNS解析 2 减少ssl握手 3 多路复用 为http2.0准备 SACC2017
15. Part 2 1.0 功能概述 – 流量动态分配 易购App服务 小程序服务 门店端APP SACC2017proxy 大聚惠集 根据服务监控状态判断启用开关 大聚惠 群1 集群2
16. Part 2 1.0 功能概述 – 熔断,降级,流量控制 App 小程序 门店 APP 根据服务状态,对终端降级 proxy SACC2017根据服务状态,进行流控 /buy/api/1 设定服务熔断指标 如:服务超时时间大于5秒 熔断2秒 展示线系统集群 购物线系统集群
17. Part 2 1.0 功能概述 – 动态检活 统一接入层 查询服务 后端服务 被动检活 1 根据请求状态判定后端服务 2 设定标记位 3 定时清理标记位 SACC2017检活服 1 设定检活周期 2 推送检活状态 务 3 手动控制检活状态 主动检活
18. Part 2 1.0 功能概述 – 新老服务灰度 移动端首页服务 /api/old SACC2017proxy 其他老服务 新的api服务 如/api/new 首页新系 首页老系 统统
19. Part 2 2.0 技术实现方案 – 性能与管理兼顾 SACC2017
20. Part 2 2.0 技术实现方案 – 容器化与插件化管理 Docker集群 proxy proxy proxy …... filterPlugin contextPlugin storePlugin …... SACC2017Docker 镜像管理 服务动态插件化
21. Part 2 2.0 技术实现方案 – 上线方案 统一接入层上线原则 灰度原则 降级原则 • 按用户灰度 • 按模块灰度 SACC2017• 按区域灰度 • 按域名灰度 • 多级开关,可回退( 客户端开关,协议开 关等)
22. 3Part 性能与实践案例 1.0 系统性能 SA32..C00 用移C动户20端数1接据7采入集案分例析
23. Part 3 1.0 系统性能 原链路请求SACC2017 请求走原始链路, 平均tps为9130, 平均响应时间是11ms, 通过统一接入层的请求, tps达到14200,响应时间6ms 提高了50%,缩短了近一半。 这得益于 go语言的高性能, 快速路由选择算法, 以及后端tcp连接的复用。 统一接入层转发请求
24. Part 3 2.0 移动端接入案例 方案: Android 使用okhttp (可去s SACC2017接口) Ios 添加支持http2.0 接口服务 CDN https2.0平台 回源:http2.0/ tcp等协议
25. Part 3 2.0 移动端接入案例 灰度方案 • 按用户灰度(1/2) – 方案简述:用户灰度包 (暂定4000)” – 适用场景:IOS,Android • 按模块灰度(2/2) – 方案简述:生产包”身边苏宁”、”发现”两个模块,请求都走新域名fast.suning.com。逐步接入更多的 2017模块 – 适用场景:IOS,Android C降级方案 SAC• 开关 – 方案简述:打开开关(客户端),请求走fast.suning.com,协议为http2.0。关闭开关,走原始域名,协 议为http1.1。 – 适用场景:IOS,Android客户端“身边苏宁(O2O)”和“发现”。 新域名(http2.0) (多通道) **1.suning.com/mzis **2.suning.com/msf …. 原始域名(http1.1) show.m.suning.com f.m.suning.com …
26. Part 3 2.0 移动端接入案例 监控方案  使用云迹监控(流量监控,错误监控 等等)  监控页面 ① 首页 ② 搜索页 2017③ 。。。。。  监控指标 ① 原始域名http性能。 C② 原始域名https性能 SAC③ 接口合并后,新域名http2.0性能
27. Part 3 2.0 移动端接入案例-小程序应用接入 统一接入层收敛域名 SACC2017 收敛数量 保留数量 59 20
28. Part 3 3.0 用户数据分析 原始链路接口 原链路请求SACC2017 统一接入层转发请求 原始链路接口 的top99,71%的 请求平均响应 时间为72ms , 接入统一接入 层的接口,域 名收敛,协议 走http2.0, 然后经过系统 的proxy转发, 87%的请求平 均响应时间为 62ms, top99数据有明 显的提高
29. SACC2017