微服务工具建设实践
如果无法正常显示,请先停止浏览器的去广告插件。
1.
2. 微服务工具建设实践
柯长青
高级系统工程师
3. 个人介绍
• 2014年加入汽车之家
• 经销商事业部架构组
• 致力于提升研发效能
• 提升研发人员开发体验
4. 目录
• 微服务介绍
• 微服务的挑战
• 工具建设实践
5. 微服务介绍
6. 微服务介绍
2014-2016
研发70人
服务数量150个
服务器100+台
手工上线
一切找运维
2017-2018
研发100+人
服务数量300+个
服务器200+台
自动化上线
推广微服务架构
2019-2021
研发200人
服务数量670+个
服务器上千节点
微服务
容器化
7. 微服务介绍
8. 微服务挑战
9. 微服务的挑战
• 对运维的挑战
• 对开发的挑战
10. 对开发的挑战
• 分治带来割裂
• 高复杂度带来质量效率挑战
• 服务容器化
11. 应对挑战:工具建设
12. 挑战一:分治带来割裂
13. 问题
• 项目用到的技术杂,无边界
• 重复建设,重复踩坑严重
• 好的实践无法被发现和扩散
• 项目流转,人员流转学习成本高
• 对新人不友好
14. 工具一:标准项目脚手架
15. 项目模板建设内容
公共依赖统一
管理
定期在沟通
群里推送说
明文档
标准化的文
档和Demo
统一项目技
术栈
优秀实践固
化
16. 项目模板
17. 项目脚手架
• 高效创建新项目
• 开箱即用
• 从源头标准化
• 最佳实践快速扩散
18. 团队组建
• 成立虚拟团队共同建设
• 各业务组均有成员参与
• 业务开发为主,架构开发为辅
19. 效果
• 脚手架累积创建项目400+
• 全部门技术栈统一
• 项目模板从业务研发团队得到持续反馈和改进
20. 挑战二:对质量效率带来挑战
21. 问题
• 排查问题效率低、难度大
• 发现问题严重滞后于用户
• 开发对服务运行指标掌握不足
22. 工具二:日志监控系统
23. 日志功能
程序日志
明细查询,慢日志查询,
日志统计分析
APP日志
明细查询,崩溃分析,
HTTP分析
站点评价
站点评分
Web日志
实时/例是查询,性能分析,
慢流量分析等
前端日志
明细查询
关键业务
在纷杂的日志中重点关注核心
业务部分
24. 监控功能
多数据源
es、influxdb、http
报警规则
频次、同环比、自定义,
支持测试防止犯错
报警内容模板 多种触达方式
内容自定义,支持变量引 邮件、短信、电话、钉钉
用
报警抑制
静默时间
灵活的调度策略
预定义间隔和cron表达式结合
提供最大灵活性
25. 程序日志报警
26. 程序日志查询
27. 调用链查询
28. 服务指标趋势图
29. 服务评分
30. 系统整体架构
31. 监控报警实现
• 数据(Data)
• 指标(Metric)
• 规则(Rule)
• 调度(schedule)
32. 程序日志格式
• 字段丰富
• 统一格式
• 合理设置分词
• TraceId和Skywalking打通
33. 程序日志格式实现
• 扩展主流日志框架
• 将格式固化在类库里
34. 和skywalking打通
• 用Filter将skywalking的TraceId放入MDC
• 在Layout中取出TraceId
35. 服务指标按天计算保存
• 服务各实例指标计算
• Uri主干指标计算
36. 发现性能问题
• Url性能突然变差
• 性能持续变差
37. 服务评分算法
• 指标:流量,性能,错误率,单测覆盖度,平均复杂度,代码质
量分
• 单项得分=数值TP位置
• 综合得分=所有单项平均分
38. 服务评分算法
39. 应用情况
程序日志 调用链 Web日志 有效监控
12亿/天 3.3亿/天 40亿/天 1300+,日运行
64万次
40. 开源
• 开源监控系统
• Grafana同环比插件
• autolog4j
41. 挑战三:服务容器化
42. 初期思路
• 基础环境统一
• 应用层各自建设
43. 问题
• 学习成本高
• 复用差
• 能力增强困难
44. 工具三:镜像标准化构建
45. 镜像标准化
• 按应用环境类型分别统一标准化
• 分层复用
• 脚本自动构建
• 能力增强
46. 分层设计
47. 标准化
• Openresty
• Node
• Springboot
• Golang
• Tomcat
48. 标准化
49. 能力增强
• DIGO_ENABLE_SKYWALKING = true
• DIGO_ENABLE_JVM_SANDBOX_REPEATER = true
• DIGO_ENABLE_JACOCO = true
50. 工具建设心得
• 标准化
• 自助
• 让过去犯的错对未来有价值
• 快速原型
51.