基于大规模运维数据的云原生软件多维度分析
如果无法正常显示,请先停止浏览器的去广告插件。
1. 基于大规模运维数据的
云原生软件多维度分析
复旦大学 彭鑫
pengxin@fudan.edu.cn
http://www.se.fudan.edu.cn
2. 云原生(Cloud Native)
云原生:应用的设计、实现及部署运行方式充分适
应云计算平台的特点(如分布式、弹性伸缩)
据IDC预测,到2022年,
90%的应用程序将采用微
服务架构;35%的产品应
用将是云原生的
3. 云原生软件生态系统
Service
Service
Service
Service
Service
规模大,构成成分复杂
Service
服务独立开发、部署、演化
Service
Service
服务持续交付与更新
新的业务和特性不断生长
Service
特点:持续运转、在线演化
Service
Service
Service
Service
Service
Service
4. 软件分析目的
业务视图构建
调试与故障定位 代码质量保障
软件测试 架构看护与设计
问题识别
5. 软件分析应用
代码调试
代码质量静态扫描
依赖关系分析
代码克隆检测
设计异味检测
6. 传统软件分析技术
代码静态分析
代码动态分析
代码演化历史分析
7. 云原生软件分析技术
可观察性
Peter Bourgon. Metrics, tracing, and logging.
https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html
• 系统复杂性从服务内转移到
服务间交互和体系结构层面
• 传统的代码分析技术仅能满
足服务内部分析的需要
• 更多依赖于运行时可观察性
数据实现各种分析目的
• 有利条件
✓
✓
✓
✓
显式的软件体系结构
外化的交互行为
系统持续在线运行
完善的基础设施支持
8. 类比:城市运行数字体征系统
对城市生命体进行“24小时×365天”
的“全时智慧体检”。相较于传统的
静态城市运行体征,即将上线的上海
城市运行数字体征系统是“活”的,
以“实时、鲜活”的多维、多源、多
态数据为基础…通过数字体征来呈现
城市正在发生什么、需要关注和处置
什么…更好地研判城市运行的趋势和
规律,及时发现潜在的风险,助推城
解放日报:上海城市运行数
字体征系统将上线
市管理,将被动处置变为“治未
病”…
http://www.xinhuanet.com/info/2021-05/12/c_139940069.htm
9. 基于运维数据的云原生软件多维度分析
Service
Service
Service
Service
Service
Service
Service
故障定位
Service
Service
设计分析
Service
Service
Service
Service
Service
Service
业务理解
10. 基于运行时服务依赖图的故障定位
服务I 服
务J
服务B 服
务C
报警入口
上游流量异常
基本思想:从入口点开始沿着服务
依赖图游走进行故障根因定位
服务A
服务E
服务G
MQ
服务F
服务H
服务N
三类异常问题:可用性(错误率)、
性能(响应时间)、流量异常
下游依赖异常
DB
正常节点
异常节点
节点间依赖关系
异常传播方向
关键问题:游走方式、剪枝策略、
单点异常判断、结果排序
基于运行时服务依赖图分析不同类型异常的传播路径,实现根因定位
Dewei Liu, Chuan He, Xin Peng, Fan Lin, Chenxi Zhang, Shengfang Gong, Ziang Li, Jiayu Ou, Zheshun Wu: MicroHECL: High-Efficient Root Cause
Localization in Large-Scale Microservice Systems. ICSE 2021 (SEIP Track).
11. 基于调用链路数据的微服务架构评估
开发态
基于代码和提交历史等开发态
数据分析各种关联关系,例如:
✓ 调用关联(代码静态分析)
✓ 数据关联(代码静态分析)
✓ 主题关联(代码文本分析)
✓ 演化关联(提交历史分析)
运行态
基于部署和运维日志、调用链路等运
行态数据分析各种关联关系,例如:
✓ 调用关联(调用链路分析)
✓ 数据关联(调用链路分析)
✓ 演化关联(部署历史分析)
✓ 指标关联(指标波动分析)
12. 基于运维数据的微服务架构评估
S 1
S 1
S 2
弱循环调用
S 1
S 2
S 1
S 2
S 3
S 2
S 3
S 5
S 6
S 4
服务内聚度弱
S 3
强循环调用
S 1 S 6
S 2 S 7
S 3
S 4
S 5
枢纽式服务
S 8
S 9
服务间耦合度高
基于调用链路等运维数据实现对于服务拆分、
分布式通信、可用性保障等方面的设计评价
针对架构退化进行早期预警
13. 运行时调用链路聚合分析
执行轨迹
按轨迹拓扑
结构聚合
业务流分析概念模型
执行路径
按途径的关
键服务聚合
业务流分析示例
业务流
Xiaofeng Guo, Xin Peng, Hanzhang Wang, Wanxue Li, Huai Jiang, Dan Ding, Tao Xie, Liangfei Su: Graph-based trace analysis for microservice
architecture understanding and problem diagnosis. ESEC/SIGSOFT FSE 2020 (Industry Track).
14. 基于调用链路聚合的故障传播链分析
基于海量轨迹聚合的业务流分析流水线
通过聚合后的调用链路
叠加出错指标度量,可
视化分析故障传播链
Xiaofeng Guo, Xin Peng, Hanzhang Wang, Wanxue Li, Huai Jiang, Dan Ding, Tao Xie, Liangfei Su: Graph-based trace analysis for microservice
architecture understanding and problem diagnosis. ESEC/SIGSOFT FSE 2020 (Industry Track).
15. 基于调用链路聚合的业务流可视化分析
业务流可视化
业务流变化比较
Xiaofeng Guo, Xin Peng, Hanzhang Wang, Wanxue Li, Huai Jiang, Dan Ding, Tao Xie, Liangfei Su: Graph-based trace analysis for microservice
architecture understanding and problem diagnosis. ESEC/SIGSOFT FSE 2020 (Industry Track).
16. 基于前后端融合分析的业务视图恢复
Service
Service
Service
Service
Service
Service
Service
Service
问题:客户端逻辑复杂且持续变
化,服务端调用链路难以反映完
整的用户业务过程,难以获得全
局的业务视图
Service
思路:融合客户端界面导航结构
及服务请求信息、客户端操作日
志、服务端调用链路,实现基于
运维数据的业务视图恢复
17. 总结与展望
云原生软件系统复杂性从服务内转移到服务间交互和体系结构层面
软件生态系统特性导致其更加依赖于运维数据实现各种分析目的
云原生软件生态系统
开发运维一体化向纵深迈进
越来越多的云原生软件系统会逐步演
化成为复杂生态系统,新业务和特性
不断生长,系统复杂度不断提高 运维在关注应急处理的基础上越来越重视
系统的长期健康演化和可持续发展,系统
业务及技术运转状况的分析和理解越来越
依赖于运行时数据分析
丰富多元的监控数据采集 融合数据分析成为新的挑战
在当前以应急处理为目的的监控数据
收集基础上,面向云原生软件系统数
字化体征分析的需要实现更加丰富多
元的监控数据采集 如何融合运行日志、调用链路、指标度量等
多维、多源、多态运维数据,通过关联分析
等手段获得更加全面、准确的分析视图
18. THANK YOU!