從西安“一碼通”不工作來看軟體系統效能與可靠性怎麼保障

西安一碼通問題,網上出來很多段子,段子就不說了,我就說說怎麼在技術上解決這些問題。

1、業務上如何解決這些問題

1)客戶端結果快取

這種大型系統應該做客戶端快取,在有效時間內不要去後臺請求,減少服務的請求量。

2)客戶端做連續請求過濾

客戶端可以做請求過慮,在服務端沒響應的情況下不要連續發請求,可以設超時時間,超時後再請求,而且超時時間可以不斷延長。

3)服務端做連續請求快取

服務端可以做連續請求過濾,同一客戶端的請求同時只處理一個,其他的丟棄。

4)服務端做過負荷控制

服務端處理能力進行監測,對超過負荷的請求按照演算法規則進行丟棄一部分請求,避免系統資源耗盡或者IO堵死,致使整個系統癱瘓。

5)做業務方通

對業務做放通規則,在業務處理不過來的時候保證基礎業務執行,附加功能直接遮蔽。

6)重點業務保護

在業務繁忙處理不過來的時候,只保證重點業務,普通業務直接客戶端遮蔽。

2、效能上如何做到支援大容量

一碼通這種區域性應用效能上也不算大,技術上比較容易解決大容量。

1)多服務節點負載均衡實現

遊戲都是這麼做的接到不同的開服伺服器的,可以多節點互為備份,比如每個區一個服務節點,客戶端接到不同的節點,當一個節點壞了可以接到其他節點,理論上除非所有節點宕機,否則不會出現這種全市不工作的情況。從出問題的情況看,系統絕對的存在單點故障,不然不會全市癱瘓。

2)單節點效能提高

(1)快取,各種請求結果記憶體快取,沒失效的直接回結果,不用老跑重複的業務邏輯。

(2)可以做批次資料重新整理

按照演算法,每次從資料服務獲取資料時可以獲取一批資料,防止對資料端的壓力。

(3)請求接入與請求處理分離

這個應該大部分系統都會做,訊息中介軟體一般就做到了,那就是實現請求處理的的分解,涉及到請求其他服務都拆分出來,做成非同步的請求,避免第三方服務沒結果導致自身服務的堵死。

3、可靠性解決方案

1)分散式系統

避免單點故障,看出問題的情況應該是系統有單點故障,不然不會全市癱瘓。出問題可能存在兩個點一個是接入點故障,一個是訪問通訊資料的點,就是訪問第三方的點,接入點宕機,宕機應該重啟就好了,或者網路故障,網路故障應該會說出來。實現分散式多點接入,就沒有單點故障了,就不會出現全是癱瘓了。各階段也可以負荷分擔,一個宕機其他節點可以接管。

2、容災

做容災節點,服務節點都壞了還有容災節點支援,最壞情況下也不會全市無服務

3、備份恢復

在沒有辦法的情況下,還可以重啟恢復服務也不會出現全是長時間無服務。

4、系統監測和自動重啟服務

避免長時間業務中斷,監測到業務無服務,立即重啟。提供手動快速重啟服務,避免長時間無服務。