web服務端技術概述之高可用技術

2021-06-22 18:22:25 字數 1937 閱讀 5039

一、      什麼是**可用性

很簡單,可用性就是**的可訪問性。它的度量指標是正常執行時間佔所有執行時間的比例。測量方式是實際執行乙個服務,測量其不可用的時間。

**為什麼不可用?主要的原因是伺服器硬體故障,比如磁碟,比如網路等。那麼,所謂的保證**的可用性,就是要在伺服器可能因硬體故障而怠機的前提下設計保證**可用性的**架構。

二、      保證**可用性的基本方法

應用層:負責主要的業務邏輯

服務層:提供公用(通用)的服務

資料層:提供資料的讀寫

每個層次的系統,因為其所提供的功能不同,使用的可用性技術也有所區別。概要的可用性技術如下表所示:

系統可用性技術

應用層負載均衡

服務層負載均衡

資料層冗餘備份

三、      應用層的可用性技術

對於無狀態的請求,當應用集群中的某台伺服器當機時,負載均衡伺服器會通過心跳檢測技術檢測到,它會將怠機的伺服器從集群中移除,並進行失效轉移,即將原來**給該伺服器的請求**給其他伺服器。

對於有session狀態的應用集群,比較成熟的方法是使用session伺服器集群將狀態和應用分離,以使應用伺服器怠機不影響session。當然還有別的方法。

四、      服務層的可用技術

基本的方法也是使用和應用層類似的負載均衡技術。此外還有一些實踐中產生的高可用性技術或策略:

伺服器按業務的重要程度進行分級管理;

設定超時時間以及時通知應用;

非同步呼叫以使任務在時間順序上解耦;

服務降級以扛住高峰併發壓力;

使用冪等設計保證應用在重複呼叫服務時產生相同的結果。

五、      資料層的可用技術

基本的方法當然是備份了。備份分為冷備份和熱備份。冷備份指定期備份,缺陷是不能保證資料始終一致和不能保證資料可用性(在切換到備份的過程始終可訪問,並且在使用者無感知)。熱備份指實時備份,即資料寫入時即備份到其他儲存空間中去。熱備份又可分為:

非同步熱備份:先寫入一台伺服器後即返回成功的響應,至於備份到其他機器,是之後再非同步地進行。這就可能有後續寫操作失敗的可能。

同步熱備份:同時寫入多台平等的機器,都寫成功了才返回。由於採用了併發寫的技術,速度上和非同步的方式差不多。

另外值得一提的是cap原理:

資料系統無法同時滿足資料一致性、可用性和分割槽耐受性(跨網路區域的伸縮性)。

因此,大多數**選擇犧牲部分一致性。

六、      從軟體方面保證可用性

**發布採用優雅發布(即平滑過渡,集群中的機器一部分一部分地逐漸發布),需要知道的是,**發布時,實際上必須重啟(或中斷)應用系統,這等於怠機的效果。

採用web自動化測試保證質量;

進行預發布驗證;(在和線上環境一樣的預發布伺服器上進行發布並檢查結果)

**控制,一般使用主幹發布,分支開發;

使用火車發布模型的自動化發布,提高發布效率,當然該模型必然存在一些問題;

使用灰度發布,有2個內內涵,乙個其實指的就是優雅發布,另乙個指ab測試。

七、      進行**監控以保證可用性

監控需要採集的資料報括:

使用者行為日誌(服務端採集和客戶端採集是2種採集手段)

伺服器效能監控(op負責伺服器系統基本效能的採集)

執行資料報告(需要rd加入特定的資料採集邏輯)

八、    參考資料

《大型**技術架構-核心原理與案例分析》

ps:我們是誰?我們是天邊流雲,有不成韻律的詩云:

《流雲》

我們是天邊漂泊的流雲

常懷著遊子的愁緒

我們曾貪慕青天的高遠

也會迷戀新月的柔情

但終有一天我們尋到了故鄉

哦,原來她正是這滿目瘡痍的大地

於是,我們等待風起時把我們連成一片

甘願化成雨水,澆灌大地

更多…請見流雲部落格:無法訪問請發郵件到[email protected],我們將定期檢視郵箱並告訴您訪問方法)

迷你web服務端

import re import socket from multiprocessing import process def handle client client skt 接收客戶端資料 recv data client skt.recv 1024 按照換行進行切割 request lines...

檢查vsftp服務端是否可用

開啟user list檔案將root注釋掉 開啟ftpusers將root注釋掉cat etc passwd grep i ftp 如果沒有ftp使用者,使用useradd,passwd增加ftp使用者tftp home dir off 若是關閉的,請開啟 setsebool a tftp home...

web服務端重定向

伺服器重定向常見某些 引導登陸頁面 例如 點選購物車會跳轉到登陸頁面 服務端的重定向功能主要由響應頭的302 狀態碼來實現 用nodejs,寫的服務端重定向 1.匯入模組 2.建立伺服器 登陸頁 if req.url login res.end data 3.開啟伺服器 server.listen ...