echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。
架构的稳定性更多的来自监控反馈,保障架构的稳定需要技术人员对于技术掌握较为熟练。从技术的角度来讲,不规范的编码也是能够到时系统不稳定的因素,比如:大数据量的查询,大文件的导出。都可能导致一系列问题。这也是架构的稳定性规范,只是架构的稳定性规范更为广一些。(个人经验之谈,如有不同请微信来辩)
架构稳定性规范主要包含以下几方面
- Java稳定性编码规范
- SQL稳定性编码规范
- 架构落地方法
- 告警监控
- 流程化上线
Java稳定性编码规范
JAVA程序员能够依据JAVA编程规范养成良好的编程习惯,是编写良好JAVA程序的先决条件。良好的Java程序可以很好的保障架构的稳定。常见的因编码引起的性能问题有,OOM(“Out Of Memory”)、stack overflow、FULL GC等。下面举几个编码及需求引起的惨痛案例
- 大文件使用同步导出(系统不断FULL GC,也有可能出现内存溢出)
- 大数据量的查询没有控制并发(内存溢出)
- 流资源的不关闭(线程泄露,内存溢出)
SQL稳定性编码规范
- 索引设置检查
- in的个数
- like的使用
- 分区索引的使用
- select * 的问题
- 全表查询的问题
架构落地稳定性规范
- 业务异常处理
- 重试机制
- 异步设计
- 降级、限流
- 幂等
告警监控
系统监控或者告警监控,是我们观测整个架构的最直观的数据。如果不具备相关监控工具,技术人员可以通过技术手段去探测服务的性能和稳定状况,只是相对来说比较繁琐。告警监控规范主要考虑的有以下几点
- 系统存活性探测告警
- 宿主机异常告警
- 数据库IO、内存、CPU告警
- 死锁告警
流程化上线
流程化上线是系统稳定性当中很重要的一环,如果说我们对于系统有小部分变更,我们就上版本而不进行规范检查,很有可能就导致系统的无法运行。
- 版本迭代时代码review
- 版本回滚策略
- 压测报告