前言
在软件开发过程中,系统稳定性非常重要,良好的系统稳定性不仅能够提高开发效率,还能减少维护成本,提升用户体验。
私以为,提升系统稳定性有三个阶段:监控、排查和代码质量。
第一阶段:做好监控
监控是一切的基础。如果没有有效的监控机制,我们就无法及时发现系统中的问题,进而无法采取有效的措施来解决这些问题。在这个阶段,我们需要建立全面的监控系统,能够对系统的各个层面进行实时的监控。
监控的核心要点
-
实时告警
监控系统应当能够实时检测到异常情况,并及时发送告警通知。这样,我们可以在问题初现时就采取措施,而不是等到问题扩散后才发现。
-
全面覆盖
监控应该覆盖系统的各个方面,包括网关层面、接口层面(主调、被调、属性)、机器层面等等
-
历史数据分析
通过分析历史监控数据,我们可以识别系统的性能瓶颈和潜在的风险,从而进行预防性维护。例如内存泄漏等
第二阶段:提升排查效率
即使有了完善的监控系统,问题依然会发生,但此时发生的问题我们应该有自信这不是大面积故障,而是用户个例,从而能够从容淡定的去排查和解决。此时,我们需要的是快速排查问题,确保在最短的时间内定位并解决问题。
提升排查效率的方法
-
远程日志
目前我们大部分的服务都是本地日志,排查问题需要登录到各个机器上手动筛选,两台机器则需要登录并筛选两次,可是如果后面是20台、200台机器呢,难道我们也要一个一个登录并敲入筛选命令吗?
远程日志是我们的帮手,我们可以将日志上报到日志平台,原则上,使用远程日志有以下需要注意的点:
-
一次用户请求只上报一条日志,避免混乱
-
日志完整且简短,尽量一条日志就足以定位问题,且不要懒惰,上报大量无效的信息,应该只有关键的信息
-
自动化工具
流程确定且可以自动化的一定要自动化,解放我们自己的人力,例如操作记录、机器人自动查询回复等等
第三阶段:提升代码质量
监控和排查效率只是手段,最终的目标是提升代码质量,从根本上减少问题的发生。在这个阶段,我们需要从多个方面入手提升代码质量。
提升代码质量的措施
-
代码审查
每次commit、mr进行代码审查(Code Review),确保代码符合规范,逻辑清晰,无明显漏洞。代码必须经过cr可以合并到master,后续会预研自动化工具来检测此类事件。
-
单元测试
编写全面的单元测试,确保每个模块都能独立运行并通过测试。
后续会预研单元覆盖率的自动检查,覆盖率不达标不得合并到master
-
规范化
平时开发需要遵守代码规范
发布需要遵守服务发布规范
总结
提升软件系统稳定性是一个持续的过程,需要我们从监控、排查和代码质量提升三个方面入手。只有在这三个阶段都做到位,才能真正提升系统的稳定性和可靠性。