優(yōu)惠活動(dòng) - 12周年慶本月新客福利
優(yōu)惠活動(dòng) - 12周年慶本月新客福利
優(yōu)惠活動(dòng) - 12周年慶本月新客福利

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

網(wǎng)站穩定性的建設是一項綜合的系統工程,就像人的健康一樣,如果平時(shí)不注意健康飲食、不注意鍛煉,時(shí)間一長(cháng)身體肯定會(huì )出問(wèn)題,對穩定性的考量也是貫穿整個(gè)研發(fā)生命周期的。
 
在網(wǎng)站的架構設計時(shí)就要考慮穩定性:考慮到網(wǎng)絡(luò )光纖有可能被挖斷,如果只有一個(gè)機房那就悲劇了,100%的流量都沒(méi)了,甚至要考慮自然災害的影響而多地建設機房。
 
穩定性的建設中有兩個(gè)重要因素:一是思想上重視,開(kāi)發(fā)人員對穩定性的重視(也就是敬畏之心)可以避免70%~80%6的故障;二是規范和工具的建設,用以保障穩定性。


 
(1)架構階段的穩定性建設項目
 
一個(gè)網(wǎng)站要有好的穩定性,必須在架構設計階段就做長(cháng)遠考慮,就像建房子要先打好地基一樣,否則樓建得越高越危險。建設高穩定性的架構必須注意以下幾點(diǎn)。
 
避免單點(diǎn)。高可用架構設計的第一條就是要避免單點(diǎn),從概率出發(fā)來(lái)看,無(wú)論是機器還是人,沒(méi)有什么東西是不會(huì )犯錯的,盡量避免某個(gè)完整的環(huán)節成為單點(diǎn)是架構設計的原則。但是,在某些場(chǎng)景中,有些功能必須放在同一個(gè)應用中,例如統一登錄、網(wǎng)關(guān)、安全過(guò)濾等,此時(shí)要保證盡量按照人群來(lái)劃分,不要在邏輯上出現單點(diǎn);或者盡量把服務(wù)拆成組件遷到不同的端上執行,例如,可以把安全服務(wù)作為一個(gè)模塊集成到 Nginx或者應用機器中,而不是把它做成一個(gè)遠程服務(wù)接口。
 
分組隔離。把應用拆得更細一點(diǎn),不同的功能模塊做成單獨的分組,每個(gè)分組占用一部分機器集群,這樣可以做到服務(wù)分組隔離,避免不太重要的分組對重要分組的影響?,F在非常流行的微服務(wù)就是一種非常好的分組隔離的實(shí)踐。異步化。在系統設計中要讓盡可能多的遠程調用異步化,這也是一項重要原則。很多時(shí)候會(huì )因為一個(gè)不太重要的功能的強依賴(lài)拖垮了整個(gè)應用,所以要盡量把不太重要的依賴(lài)改成異步調用,避免影響主調用鏈路的穩定性。
 
異地容災??紤]到很多不可抗力因素的影響,我們需要設計網(wǎng)站的異地容災甚至全球部署策略,這些不可抗力的事件往往會(huì )影響網(wǎng)站的整個(gè)架構,必須做長(cháng)遠打算
 
(2)編碼階段的穩定性建設
 
編程階段的穩定性建設尤其重要,一個(gè)好的程序在編碼階段就決定了整個(gè)應用系統的質(zhì)量,所以在編碼階段要注意下面一些規則。
 
錯誤捕獲。一個(gè)優(yōu)雅的系統必然有一套優(yōu)雅的異常處理機制,在適當的地方如1O處理、遠程調用、多線(xiàn)程等關(guān)鍵處捕獲異常非常重要,防御性編程可以更好地保證系統的健壯性。
 
異步線(xiàn)程。在一些批處理調用的地方采用異步線(xiàn)程可以保證主請求的正常返回,同樣也可以做到部分的隔離,防止部分請求掛起整個(gè)應用。
 
超時(shí)處理。在遠程調用或者調用外圍設備時(shí),非常有必要設定超時(shí)時(shí)間,這樣可以保證所有的請求都有一個(gè)可預知的返回結果。
 
。限流保護。每個(gè)應用都有一個(gè)承載極限,超過(guò)這個(gè)極限就會(huì )帶來(lái)很大的不確定性,因此,設置自我保護機制可以保證程序的健壯性。
 
(3)測試階段的穩定性建設
 
測試是程序上線(xiàn)前的最后一道保障,測試也是驗證程序是否達到預期功能的手段,在本階段要注意以下事項。
 
自動(dòng)化對比測試。對比測試就是用線(xiàn)上真實(shí)的環(huán)境和數據與預發(fā)環(huán)境對相同的業(yè)務(wù)接口做返回值的比較,以此判斷新上線(xiàn)的代碼是否符合預期。Beta測試。在線(xiàn)上的真頭壞境中遠取著(zhù)個(gè)言機器上的數據,以此驗證程序是否正確。
 
(4)發(fā)布階段的穩定性建設
 
發(fā)布階段穩定性建設應留意以下事項。
 
分批發(fā)布。分批發(fā)布可以降低發(fā)布風(fēng)險,不僅可以減少系統部署重啟引起的RT抖動(dòng),也可以在發(fā)現問(wèn)題時(shí)立即終止發(fā)布。
 
多版本發(fā)布。合并部署是將多個(gè)應用系統同時(shí)部署在同一個(gè)Web容器實(shí)例中、共享同一個(gè)進(jìn)程,每個(gè)應用之間相互隔離,但是應用之間的RPC是通過(guò)本地調用而不通過(guò)網(wǎng)絡(luò )調用。
 
(5)運行階段的穩定性建設項目
 
運行階段穩定性建設要做好幾件事:實(shí)時(shí)監控報警、過(guò)載保護和自動(dòng)降級、實(shí)時(shí)數據對賬,核心原則是實(shí)時(shí)發(fā)現問(wèn)題,提供必要的保護措施。
 
實(shí)時(shí)監控報警。線(xiàn)上監控必須包含系統監控,主要是監控服務(wù)器的CPU、Load磁盤(pán)、內存等一些系統指標的異常情況;應用監控主要是監控響應時(shí)間、QPS異常錯誤等;業(yè)務(wù)監控主要是監控一些業(yè)務(wù)指標是否有異常(如實(shí)時(shí)的下單量、司機和乘客的在線(xiàn)數量業(yè)務(wù)指標)。
 
過(guò)載保護和自動(dòng)降級。線(xiàn)上運行中的系統需要有一些保護措施,如系統的某些指標達到瓶頸時(shí)要有必要的保護;當Load達到系統的最高瓶頸時(shí)需要拒絕些請求,以防止系統被壓垮;涉及一些遠程調用時(shí)可以設置最大并發(fā)數,一旦超過(guò)該閥值就自動(dòng) fast fail以保護系統。
 
實(shí)時(shí)數據對賬。這屬于業(yè)務(wù)監控范圍。在涉及一些敏感信息時(shí),為了確保正確性,需要有實(shí)時(shí)的對賬校驗,最典型的就是資金數據,以及涉及跨單元數據復制時(shí)對數據一致性的對賬檢查。(6)故障發(fā)生時(shí)的穩定性建設
 
一旦發(fā)生故障,最重要的就是快速止損、定位故障并快速恢復。按照經(jīng)驗,當故障發(fā)生時(shí),第一反應就是快速回滾了解故障現象,根據故障現象判讀故障原因,進(jìn)而找出解決辦法。
 
減少故障的定位時(shí)間和快速恢復策略在故障發(fā)生時(shí)是至關(guān)重要的。
 
快速定位障可以縮短故障的復時(shí)間。如何定位故障?據統計,90%6的故障都是由變更所致,所以快速收集變更信息和線(xiàn)上機器的異常數據非常重要,但難點(diǎn)在于這些數據往往散落在各個(gè)地方,并且格式多樣。
 
快速恢復。影響故障恢復時(shí)間的一是故障定位時(shí)間,二是所采用的快速恢復的手段。例如在多版本部署出現故障時(shí),可以通過(guò)快速網(wǎng)站建設切換版本來(lái)恢復;在異地多活的情況下可以把流量切換到不同的單元來(lái)止損。
本文地址:http://havencoinwallet.com//article/4547.html
相關(guān)文章:
最新文章:
国产免费丝袜调教视频爱剪辑|国产小受18asian|国产福利91精品一区二区三区|久久久青草大香|欧美丰满熟妇xxxx性