後臺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和內容陣列