標籤:偽造 session複製 通道 .com 機制 傳輸 部分 推薦 不可用
接入層session設計原則:
1、Session—讀寫請求使用的內容物件,稱之會話。
業務總有狀態的:使用者下單購買、登入狀態、好友狀態、訊息發送情況等;
這些有狀態的資訊隨使用者操作變化。
單機環境下:
- 不存在session共用問題;
- 處理簡單;
- session儲存在記憶體;
- 高可用不能保證(進程掛掉、宕機、session丟失不可用)。
叢集設計:
--session複製:
所有接入層伺服器之間同步session資料;
每台接入伺服器都儲存使用者全量的session資料;
使用者只需訪問一台機器,擷取速度快;
高可用保障:宕機部分機器,沒影響。
問題:
--適用於接入層叢集較少,不適量大量上千台接入層伺服器;
--大量session複製,佔用伺服器和網路資源;
--儲存全量使用者session,記憶體佔用量太大,甚至有可能溢出;
大型設計:
session綁定:
根據使用者請求(UID\Mac\imei等唯一標示)負載平衡到特定接入層服務務器;
部分網站使用;
高可用如何保障:單點問題、複製機制(master-slave)
多機設計:
用戶端保持 session:
--session由服務端產生,儲存到用戶端;
--每次請求攜帶用戶端session;
--服務端若有更新返回給用戶端儲存;
C/S:
--APPS:記錄到Native中;
B/S:
--Web:記錄到Cookie中。
缺點:
Web Cookie記錄資訊大小限制(如100KB);
每次請求都要傳輸session:流量、效能受影響;
使用者關閉、清理掉session,使用者請求不正常;
優點:
方案簡單,支援服務端的無縫伸縮;
方案可用性高;
較多網站使用;
Session高可用叢集:
--接入層無狀態化;
--統一的高可用session分布式讀寫伺服器叢集;
--狀態分離:
接入層本身無狀態;
session叢集有狀態:
分布式緩衝(NoSQL—memcached/Redis, RDBMS—Mysql/MongoDB)
接入層安全性:
接入層是用戶端和服務端的Interface;
資料安全重要性不言而喻;
保證資料安全性:串連通道加密、傳輸資料加密。
用戶端與服務端建立安全通道—技術方案:
所有請求資料都加密,提高效率;使用對稱式加密演算法;
對稱式加密密鑰使用非對稱式加密演算法經過兩次協商確定;
安全通道的建立必須滿足:
任何第三方無法偽造伺服器;
在破解用戶端代碼的情況下,即使截獲其他使用者發送的加密請求也無法解密。
使用HTTPS:
資料安全的加密;
不推薦單向加密;使用雙向加密(安全)
用戶端認證
資料加密目的:
解決資料明文的問題;
即使截獲也無法解密;
無法保證資料篡改;
如何保證資料正確性:
資料簽名:雙方約定規則簽名(md5sum、其他)
過程:
- 用戶端按照約定簽名;
- 服務端收到資料,按照規則產生md5sum值;
- 和資料包裡md5sum值比較是否一致;
- 一致說明沒問題;不一致則說明被改
高可用接入層最佳實務:
模組與資料分離;
session綁定:每個session同步複製;
互連網系統的通用架構筆記