一兴垦、背景
作為開發(fā)人員,系統(tǒng)穩(wěn)定性
是一個繞不開的話題,特別是做電商業(yè)務系統(tǒng)
這幾年探越,幾乎天天都要關注穩(wěn)定性狡赐,一旦出現故障對于公司來說都是一場災難,因此保障系統(tǒng)穩(wěn)定是最關鍵的要求钦幔,本文將根據最近幾年負責電商系統(tǒng)涉及到的穩(wěn)定性建設常用方法做一次總結枕屉。
二、什么是系統(tǒng)穩(wěn)定性鲤氢?
對于業(yè)務系統(tǒng)來說搀擂,不管有什么因素對我們的系統(tǒng)干擾,都要盡可能的提供高可用性
卷玉,不影響系統(tǒng)功能
和用戶體驗
哨颂。
影響穩(wěn)定性有哪些因素呢?
1相种、人為操作
比如不合理的系統(tǒng)變更威恼,外部的攻擊,訪問流量突增
2寝并、自然災害
比如網線光纖被挖
3箫措、硬件故障
比如自然硬盤損壞,內存網絡
從以往經驗來看食茎,其實影響系統(tǒng)穩(wěn)定性最多的原因是人為因素
造成的蒂破。
二、這些年學到的穩(wěn)定性方法
1别渔、注重代碼健壯性附迷,注重codereview
代碼開發(fā)需要考慮可觀測,可降級哎媚,考慮異常容錯性
喇伯,合理使用緩存,線程池等拨与,對于外部依賴需要超時機制
2稻据、安全變更,遵守sop
任何生產環(huán)境的變更都要按公司規(guī)范操作买喧,做到可灰度
捻悯,可監(jiān)控
,可回滾
3淤毛、系統(tǒng)鏈路梳理今缚,強弱依賴梳理
把系統(tǒng)核心鏈路流程梳理,分析系統(tǒng)的出強弱依賴
低淡,分析是否有損降級
4姓言、接口降級瞬项,限流,熔斷何荚,超時設置
需要對下游依賴設置可降級
囱淋,可熔斷
,超時
餐塘,避免外部系統(tǒng)性能或者故障拖垮服務
對本服務接口設置必要的限流
妥衣,一般有網關層總限流
和單機限流
,防止突發(fā)流程沖擊系統(tǒng)
5唠倦、定期業(yè)務系統(tǒng)降級演練
需要定期對系統(tǒng)的業(yè)務功能進行降級演練
称鳞,只有真實演練過了涮较,線上有問題的時候才可以臨危不亂稠鼻。
6、系統(tǒng)預案準備充分
業(yè)務功能上線前都需要做好降級預案
狂票,包括技術和業(yè)務層面的準備候齿,這樣出現問題可以快速恢復
,止血
7闺属、系統(tǒng)或全鏈路壓測
新功能上線需要做壓測摸高
慌盯,日常也需要常態(tài)化壓測
,通過壓測用于合理評估系統(tǒng)資源是否合理掂器,可以及時消除容量和性能瓶頸隱患
8亚皂、業(yè)務系統(tǒng)日常巡檢
- 業(yè)務指標巡檢
對于業(yè)務系統(tǒng)這點是非常重要的,我們需要觀察業(yè)務指標
趨勢国瓮,業(yè)務指標一般有一定的規(guī)律灭必,如果變化比較大可能業(yè)務有調整,可以評估是否正常的業(yè)務乃摹。
- 業(yè)務流量qps巡檢
巡檢qps的環(huán)比
變化禁漓,發(fā)現異常的流量,防止業(yè)務或者流量突增對系統(tǒng)沖擊
- 接口響應時間rt巡檢
發(fā)現系統(tǒng)響應時間的變化孵睬,主動發(fā)現問題
- 系統(tǒng)異常巡檢
自動發(fā)現系統(tǒng)的錯誤播歼,提早評估業(yè)務影響
9、中間件巡檢
- Mysql巡檢
mysql慢查詢
mysql的cpu繁忙度
mysql磁盤空間大小與增長情況
mysql的主鍵或者分布式id是否將達到閾值
上面這些是需要重點關注的部分掰读,通過巡檢提前發(fā)現系統(tǒng)隱患秘狞,降低故障發(fā)生概率,提高可用性蹈集。
- redis巡檢
redis的cpu繁忙度
redis熱點key
的變化
redis大key
的變化
redis的數據分布均衡情況
上面幾個點是關注多的烁试,如果使用的云上的產品,都有比較好的可視化監(jiān)控
能力雾狈,我們通過監(jiān)控面板發(fā)現問題廓潜。
10、系統(tǒng)值班
針對重要節(jié)假日,預估會有流量高峰的時間辩蛋,安排相關人員值守呻畸,重點關注系統(tǒng)水位
,比如流量qps
,cpu
悼院,有無異常
等伤为,還關注客服響應群,保障有問題時可以及時響應
11据途、告警
配置核心告警群绞愚,把系統(tǒng)核心告警統(tǒng)一到群里,系統(tǒng)相關人需要在群里颖医,需要將重要的業(yè)務情況
同步播報在群里位衩,系統(tǒng)異常
情況告警出來,方便快速發(fā)現問題
熔萧。
三糖驴、總結
本文結合作者工作中穩(wěn)定性建設相關的經驗做了總結,存在不足歡迎補充或者指正佛致,歡迎大家在評論區(qū)分享下自己是如何落地穩(wěn)定性建設的贮缕。
穩(wěn)定性建設是一個長期的任務
,不可能一朝一夕就把穩(wěn)定性做好俺榆,而是需要持續(xù)不斷的迭代優(yōu)化感昼。
作為開發(fā)人員,我們應該始終對生產系統(tǒng)保持敬畏之心
罐脊。
堅持相信有輸入一定要有輸出
定嗓,希望我們的技術能力越來越強大。