vivo微服务架构实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. vivo 微服务架构实践
罗亮
vivo 互联网中间件平台负责人
2. 目录
01
从0到1的
微服务架构
工程实践
3. 为什么需要微服务及落地挑战
业务复杂度高
可扩展性差
用户规模大
迭代速度快
故障范围不可控
微服务
变更效率低
2015
高可用保障难
上下游协作成本高
性能与体验优化难
建设配套的微服务架构技术体系
4. 微服务架构的主要业务场景分析
快
RPC框架
注册中心
好
异步调用 消息中间件
定时任务 分布式
任务调度
微服务架构的
同步调用
三大核心
业务场景
服务治理
5. vivo微服务架构最佳实践总结–架构能力矩阵
DevOps
开发
运维
Metric
架
构
分
层
Trace
Log
同城双活
异地多活
6. 微服务平台能力地图
四层流量网关
接入层
可观测
七层微服务API网关
监控中心
服务层
服务/流量治理平台
任务调度
配置中心
注册中心
消息层
框架层
存储层
接口管理平台
调用链
消息中间件
脚手架
日志SDK
配置SDK
RPC框架
限流/熔断SDK
MySQL/Redis SDK
DaaS平台
MySQL
Redis
ElasticSearch
日志中心
MongoDB
文件服务
截止2019年,vivo基本完成了从0到1的微服务平台能力烟囱式建设
CICD
CMDB
7. 快速能力构建背后的开源组件
微服务API网关
配置中心
注册中心
流量治理
RPC框架
消息中间件
任务调度
感谢开源社区赋能,助力vivo微服务架构技术体系从0到1的快速构建
8. vivo微服务当前现状
vivo微服务核心数据
5 亿+ 万 级 十万 级
60 + 8000 亿 千万 级
9. 目录
02
微服务
引擎升级与
统一平台建设
10. 微服务引擎的问题与挑战
注册中心和配置中心
方向
注册中心
可用性
技术基石
性能&容量
研发运维
选举期间
不对外提供服务;网络分区或不可用节
点数>1/2,集群不可用 写性能无法水平扩展
跨机房多活 接口级注册模型注册数据量大,
业务高频变更期间网卡带宽超过
1000Gbps
,
功能&安全
权限管控能力弱,
业务易混用,
(ZooKeeper)
,
配置回滚慢,
故障半径大
一致性时效
不满足要求
研发运维成本高
运维成本高
订阅通知可能会丢失,
负载不均衡
定时生效
配置中心
业务研发流程打通
加解密能力缺失
访问通道安全问题
微服务底层引擎在内部业务场景存在较多的可用性、性能&容量、研发运维、功能&安全等问题与挑战
11. 微服务引擎–注册中心技术升级方案分析
Dubbo框架应用级服务发现
注册中心方案分析
适应云原生,支持更大规模
维度
降低
内存消耗,降低
50%
90%的存储与推送压力,从架
构上支持百万实例集群规模
方案说明
AP特性(可用性+分区容错性)
可用性
跨机房多活,
性能&
容量
具备较好的读写性能
Session+Data读写分离
研发运维
方案
较好的水平扩展能力
同一套注册中心
方案
服务发现模型从接口级升级为应用级
AP特性
Session+Data分离架构
读写流量隔离
Dubbo应用级服务发现
,
Session+Data分离
12. 落地应用级服务发现和Session+Data分离架构
Dubbo业务
原ZK注册中心
Dubbo业务
vns-session
原ZK注册中心
Dubbo业务
Dubbo应用级服务
发现模型升级
新ZK集群 应
用
级
注
册
vns-session vns-session
数据
交互
vns-data
方案存在耦合问题
建设进度依赖问题
无法实现ZK注册中心下线
数据
交互
数据
交互
回滚依赖问题
vns-data
vns Session+Data
分离建设
vns-data
兼容ZK协议,最大限度保障业务的平滑升级,切换方案可灰度可回滚可观测,减少升级成本和项目落地风险,最终实现ZK注册中心下线
13. 微服务引擎-配置中心技术升级方案分析
cfg-portal
应用配置
cfg-proxy
服务治理
API网关
cfg-api
统一配置通道
注册中心
DB
配置管理收敛,建设一键审批/审计/回滚能力
cfg-address
cfg-agent
配置SDK
client
1
配置管理
2
3
收敛统一
能力增强
业务无感升级,兼容
平滑升级
RPC框架
网关SDK
14. 烟囱式微服务平台的问题与挑战
10+个模块10+个入口 平台易用性低
公共能力重复对接 问题定位效率低下
1
接口管理
平台
配置中心
独立重复对接
注册中心
2
Dubbo
服务治理
研发框架
微服务
微服务
网关
云平台
审计日志分散,不便于快速定位
单点
登录
权限
工单
问题
监控
CMDB
bRPC
服务治理
流量治理
平台
……
分布式
任务调度
10+个微服务模块
烟囱式微服务平台存在多入口,功能重复对接,运维、研发成本高,故障排查与恢复效率低,易用性不足等问题
15. 烟囱式微服务平台用户使用现状分析
1.72%
0.17%
0.31%
配置中心用户
访问数据
17.18%
0.15% 2.74%
0.12% 2.74%
0.06%
PV
84.06%
服务治理用户
访问数据
2.55%
8.62%
PV
UV
10.59%
1.80%
0.30%
1.21%
34.73%
82.01%
2.66%
1.72%
55.15%
技
术
依
赖
程
度
7.57%
9.85%
15.39%
注册
中心
2.77%
53.83%
配置
中心
服务治理
UV
平台产品用户使用频率
16. 统一微服务平台能力建设
配置
中心
注册
中心
分布式
任务调度
API
网关
Dubbo
服务治理
bRPC
服务治理
更多
模块
以配置中心/注册中心为底座
建设统一微服务平台
CICD等研发平台
系统
联动
微服务平台
平台间联动
提升持续
服务
CICD等研发平台
一键审批、一键回滚
成本
17. 引擎升级&统一平台能力建设
统一平台建设
统一微服务平台能力建设
应用级注册模型升级
注册中心引擎升级
引擎升级
配置中心引擎升级
高可用保障
18. 目录
03
微服务
架构升级的
总结与展望
19. 拥抱开源,迭代业务适用的技术平台
开源
开源+自研
拿来主义
实用主义
误区:为什么不完全自研
业务快速发展,
不闭门造车,站在巨人肩膀上,
反馈给社区
引入优秀特性来支撑
20. 中间件组件的全生命周期管理
业务诉求
分析
业务追求更高的迭代交付效率
快速引入新技术
助力业务创新
底层技术
特点分析
对组件的性能容量
要求越来越高
技术成熟需要经历的
多个阶段 缺乏约束的技术腐化
必然导致技术债务
技术升级的长周期 重复建设的效率问题
足够稳健的底层技术能力才能更好支撑业务高效迭代。
如何兼顾效率与质量?
阶段
价值共识
组件洞察
组件扫描
组件标准化治理&运营(有规范、补短板)
新技术引入
版本治理
成熟度管理
策略
践行宽入严出策略,通过完善的中间件组件全生命周期管理助力业务跑的更快,走的更远
21. 引擎升级探索
探索和落地ServiceMesh/Serverless/存算分离等云原生技术
效率痛点问题
成本痛点问题
22. 从DevOps到平台工程,团队协作理念再升级
平台团队
负责平台建设
DEV
OPS
平台工程
业务团队
负责业务研发
DevOps是一种文化、方法论
理念
平台工程是一种最佳实践
定义
自助式内部
开发者平台
存在问题
”中心化与去中心化取舍问题
团队的认知负荷
无法
大大增加了业务开发
屏蔽底层基础设施复杂性
特点
平台团队隐藏和抽象底层基础设施的复杂性
不断反馈 持续改进
自助化产品能力
简单易用平台产品
23. 平台建设探索
当前
展望
明确的北极星指标
沉淀
技术知识与最佳实践
业务
自助化
更高的研发效率
单位时间代码产出
更好的开发者体验
用户打断次数
平台问题人工支撑次数
以开发者用户为中心,
覆盖IDE+PaaS的平台工程实践路径,
24. Thanks