分析&回答
对于系统的稳定性,人为因素占比最大,所以我们在这方面下工夫最多。
-
研发流程方面
- 尽可能把所有流程都流程化、标准化、自动化,减少人为的过多的干预。
- 上线流程:测试(自测、CR、QA测试)、预发、灰度、小流程、全量 CheckList、上线发布策略(先单台,再批量)、上线监控策略(系统指标、业务指标监控)
- 配置变更流程:修改线上配置的 DoubleCheck,上线审批流程、回滚流程等
-
代码方面
- 第三方工具进行代码检测,提前发现一些问题。工具可以帮助检测的内容如下:不遵循代码标准、潜在的缺陷、糟糕的复杂度分布、重复、注释不足或者过多、缺乏单元测试、糟糕的设计等,避免这些问题带到生成环境。比如:CheckStyle等
- 上线之前代码 Review:对某段逻辑处理错误、参数校验合法性、异常逻辑处理、是否死循环、第三方依赖库是否正确使用等等
-
配置方面
- 超时参数配置,对于用TO-C服务、TO-B服务(业务后台)可能某些接口超时参数是不一样的,可能对TO-C比较短,业务最快响应,对TO-B可能面对某些大数据库查询,超时时间也是不一样的,需要根据业务场景及接口区分开合理配置。
- 重试次数配置,重试次数1和3的区别很大,因为是每个请求连接可能可能会流量放大1倍或3倍,试想下,重试参数配置很简单,带来的效果是完全不一样的,针对不同的场景对重试次数合理配置,或不配置用户侧重试,其实是对服务的一种保护机制。
反思&扩展
影响稳定性因素有哪些?
喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!