穩(wěn)定性網(wǎng)站建設思路

2017-01-25    分類: 網(wǎng)站建設

網(wǎng)站穩(wěn)定性的建設是一項綜合的系統(tǒng)工程,就像人的健康一樣,如果平時不注意健康飲食、不注意鍛煉,時間一長身體肯定會出問題,對穩(wěn)定性的考量也是貫穿整個研發(fā)生命周期的。

在網(wǎng)站的架構設計時就要考慮穩(wěn)定性:考慮到網(wǎng)絡光纖有可能被挖斷,如果只有一個機房那就悲劇了,100%的流量都沒了,甚至要考慮自然災害的影響而多地建設機房。

穩(wěn)定性的建設中有兩個重要因素:一是思想上重視,開發(fā)人員對穩(wěn)定性的重視(也就是敬畏之心)可以避免70%~80%6的故障;二是規(guī)范和工具的建設,用以保障穩(wěn)定性。

(1)架構階段的穩(wěn)定性建設項目

一個網(wǎng)站要有好的穩(wěn)定性,必須在架構設計階段就做長遠考慮,就像建房子要先打好地基一樣,否則樓建得越高越危險。建設高穩(wěn)定性的架構必須注意以下幾點。

避免單點。高可用架構設計的第一條就是要避免單點,從概率出發(fā)來看,無論是機器還是人,沒有什么東西是不會犯錯的,盡量避免某個完整的環(huán)節(jié)成為單點是架構設計的原則。但是,在某些場景中,有些功能必須放在同一個應用中,例如統(tǒng)一登錄、網(wǎng)關、安全過濾等,此時要保證盡量按照人群來劃分,不要在邏輯上出現(xiàn)單點;或者盡量把服務拆成組件遷到不同的端上執(zhí)行,例如,可以把安全服務作為一個模塊集成到 Nginx或者應用機器中,而不是把它做成一個遠程服務接口。

分組隔離。把應用拆得更細一點,不同的功能模塊做成單獨的分組,每個分組占用一部分機器集群,這樣可以做到服務分組隔離,避免不太重要的分組對重要分組的影響?,F(xiàn)在非常流行的微服務就是一種非常好的分組隔離的實踐。異步化。在系統(tǒng)設計中要讓盡可能多的遠程調用異步化,這也是一項重要原則。很多時候會因為一個不太重要的功能的強依賴拖垮了整個應用,所以要盡量把不太重要的依賴改成異步調用,避免影響主調用鏈路的穩(wěn)定性。

異地容災。考慮到很多不可抗力因素的影響,我們需要設計網(wǎng)站的異地容災甚至全球部署策略,這些不可抗力的事件往往會影響網(wǎng)站的整個架構,必須做長遠打算

(2)編碼階段的穩(wěn)定性建設

編程階段的穩(wěn)定性建設尤其重要,一個好的程序在編碼階段就決定了整個應用系統(tǒng)的質量,所以在編碼階段要注意下面一些規(guī)則。

錯誤捕獲。一個優(yōu)雅的系統(tǒng)必然有一套優(yōu)雅的異常處理機制,在適當?shù)牡胤饺?O處理、遠程調用、多線程等關鍵處捕獲異常非常重要,防御性編程可以更好地保證系統(tǒng)的健壯性。

異步線程。在一些批處理調用的地方采用異步線程可以保證主請求的正常返回,同樣也可以做到部分的隔離,防止部分請求掛起整個應用。

超時處理。在遠程調用或者調用外圍設備時,非常有必要設定超時時間,這樣可以保證所有的請求都有一個可預知的返回結果。

限流保護。每個應用都有一個承載極限,超過這個極限就會帶來很大的不確定性,因此,設置自我保護機制可以保證程序的健壯性。

(3)測試階段的穩(wěn)定性建設

測試是程序上線前的最后一道保障,測試也是驗證程序是否達到預期功能的手段,在本階段要注意以下事項。

自動化對比測試。對比測試就是用線上真實的環(huán)境和數(shù)據(jù)與預發(fā)環(huán)境對相同的業(yè)務接口做返回值的比較,以此判斷新上線的代碼是否符合預期。Beta測試。在線上的真頭壞境中遠取著個言機器上的數(shù)據(jù),以此驗證程序是否正確。

(4)發(fā)布階段的穩(wěn)定性建設

發(fā)布階段穩(wěn)定性建設應留意以下事項。

分批發(fā)布。分批發(fā)布可以降低發(fā)布風險,不僅可以減少系統(tǒng)部署重啟引起的RT抖動,也可以在發(fā)現(xiàn)問題時立即終止發(fā)布。

多版本發(fā)布。合并部署是將多個應用系統(tǒng)同時部署在同一個Web容器實例中、共享同一個進程,每個應用之間相互隔離,但是應用之間的RPC是通過本地調用而不通過網(wǎng)絡調用。

(5)運行階段的穩(wěn)定性建設項目

運行階段穩(wěn)定性建設要做好幾件事:實時監(jiān)控報警、過載保護和自動降級、實時數(shù)據(jù)對賬,核心原則是實時發(fā)現(xiàn)問題,提供必要的保護措施。

實時監(jiān)控報警。線上監(jiān)控必須包含系統(tǒng)監(jiān)控,主要是監(jiān)控服務器的CPU、Load磁盤、內存等一些系統(tǒng)指標的異常情況;應用監(jiān)控主要是監(jiān)控響應時間、QPS異常錯誤等;業(yè)務監(jiān)控主要是監(jiān)控一些業(yè)務指標是否有異常(如實時的下單量、司機和乘客的在線數(shù)量業(yè)務指標)。

過載保護和自動降級。線上運行中的系統(tǒng)需要有一些保護措施,如系統(tǒng)的某些指標達到瓶頸時要有必要的保護;當Load達到系統(tǒng)的高瓶頸時需要拒絕些請求,以防止系統(tǒng)被壓垮;涉及一些遠程調用時可以設置大并發(fā)數(shù),一旦超過該閥值就自動 fast fail以保護系統(tǒng)。

實時數(shù)據(jù)對賬。這屬于業(yè)務監(jiān)控范圍。在涉及一些敏感信息時,為了確保正確性,需要有實時的對賬校驗,最典型的就是資金數(shù)據(jù),以及涉及跨單元數(shù)據(jù)復制時對數(shù)據(jù)一致性的對賬檢查。(6)故障發(fā)生時的穩(wěn)定性建設

一旦發(fā)生故障,最重要的就是快速止損、定位故障并快速恢復。按照經(jīng)驗,當故障發(fā)生時,第一反應就是快速回滾了解故障現(xiàn)象,根據(jù)故障現(xiàn)象判讀故障原因,進而找出解決辦法。

減少故障的定位時間和快速恢復策略在故障發(fā)生時是至關重要的。

快速定位障可以縮短故障的復時間。如何定位故障?據(jù)統(tǒng)計,90%6的故障都是由變更所致,所以快速收集變更信息和線上機器的異常數(shù)據(jù)非常重要,但難點在于這些數(shù)據(jù)往往散落在各個地方,并且格式多樣。

快速恢復。影響故障恢復時間的一是故障定位時間,二是所采用的快速恢復的手段。例如在多版本部署出現(xiàn)故障時,可以通過快速網(wǎng)站建設切換版本來恢復;在異地多活的情況下可以把流量切換到不同的單元來止損。

本文題目:穩(wěn)定性網(wǎng)站建設思路
標題路徑:http://www.muchs.cn/news43/72993.html

網(wǎng)站建設、網(wǎng)絡推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網(wǎng)站制作,網(wǎng)絡營銷seo公司;服務項目有網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站