1. 程式人生 > >後臺server常用技術學習總結

後臺server常用技術學習總結

一、常用架構

1、Interface與Server

Interface負責接收外部請求並分發到具體的Server,並在包頭記錄外部請求者的地址,其實就是interface負責轉包,這樣就能使得系統對外呈現出單一的介面IP,同時方便擴容。Server負責從interface接收請求,並實際處理請求併發出的迴應包,目標地址即為interface在包頭中的記錄地址。

問題就出現了短板在interface,首先因為interface只負責轉包,不進行業務處理;但是如果interface故障了,那麼就出現了單點故障問題,如何解決這個單點故障問題呢?

目前可以想到的方法是1、使用熱備,主備機器進行切換,主備切換可以通過心跳和dns切換來實現。

2、server間轉包

1)不同的server處理不同的使用者,分使用者的方法包括號段、尾號、hash等

2)業務請求包經過多臺server進行處理和轉發,最終形成迴應包

資料包同時包含請求部分和結果部分,第一臺server在包記錄請求者地址,這在1中已經有說明

接下來每一個server將自己處理的部分處理完成然後填寫結果部分

最後一臺機器發現沒有資料需要處理,則組織包返回

存在的問題是經過環節過多導致丟包率過高,其中解決方法可能是通過TCP實現,其二儘量在同一個IDC機房,最後就是加監控,讓這些丟包統計都監控起來,發現短板。

中間某一臺機器掛了應該如何處理?

3、使用者資料server和線上業務server

使用者資料和線上業務分開

二、常用機制

1、簽名授權

這個功能就是QQ客戶端登入到IM伺服器,伺服器派發簽名,通過客戶端訪問網頁會同時將這個簽名傳送到網頁CGI,CGI負責檢查簽名是否合法,這樣實現一個認證子系統和業務子系統件的授權傳遞。

2、高負載系統共享衝突處理

需要避免使用OS提供的PV原語,每次PV操作都會進一次核心態,開銷太大。

替代方案:1)、敏感寫操作轉包到一個程序同意處理。2)、使用匯編級指令進行原子讀寫操作。

3、資源回收

要求持續回收,不造成業務的暫停,方案1、另一個程序掃描已分配的資源,找出可以回收的資源 方案2、主服務呈現每次回掃幾百個資源,進行回收。

資料結構可以是單獨的回收佇列,也可以是原來資料結構中增加連結串列節點。

三、常用資料結構

1、分級儲存

2、多階hash表

3、index和內容陣列