1. 協議
l 客戶端/服務端(c/s): udp
l 服務端/服務端(s/s): udp/tcp
2. 網路模型
l windows: 完成埠
l linux: epoll 暫不提供
3. 效能引數
l 最大連線數: 100000 ids / 每台
l 最小頻寬要求: 1mb(byte) / 每台
1. 伺服器集群設計
登入服務,採用服務集群方式,由多台「登入伺服器」和單台「登入中心伺服器」構成,分布情況如下。
l 登入伺服器
a. 使用者登入互動(賬號資料庫)。
b. 提供動態金鑰生成。
c. udp打洞(定義協議,各伺服器均可以整合次服務)。
d. 更新,快取使用者狀態,登入引數(eg:金鑰)等, 並週期性上報中心伺服器。
f. 使用者詳細資訊查詢(賬號資料庫)。
g. 使用者關係增、刪、改、查。
h. 連線使用者關聯式資料庫
(橫向分表 最大好友數*最大記錄數 200*100000帳號關聯式資料庫)。
(… 視具體情況再新增功能)
l 登入中心伺服器:採用單台服務(考慮到安全性, 後續可能增加**或主從方式)
a. 快取所有使用者狀態引數。
b. 快取登入伺服器引數(狀態,連線引數,金鑰)。
c. 提供使用者歸屬登入伺服器查詢。
(… 視具體情況再新增功能)
4.1使用者登入互動
4.1.1 登入流程
4.1.2 登入時序
4.1.3 登入協議包
/*****************************
[id:5001(def_svr_login_min + 1)登入key請求
******************************/
struct stru_svr_login_key_rq
;/*****************************
[id:5002(def_svr_login_min + 2)登入key應答
******************************/
struct stru_svr_login_key_rs
;/*****************************
[id:5003(def_svr_login_min + 3)登入key請求
******************************/
struct stru_svr_login_rq
;/*****************************
[id:5004(def_svr_login_min + 4)登入key請求
******************************/
struct stru_svr_login_rs
;4.1.4 心跳
4.1.5 金鑰反射方式: 客戶端週期傳送,伺服器端反射.
/*****************************
[id:5005(def_svr_login_min + 5) 存活通知
******************************/
struct stru_svr_login_live_id
;
伺服器生成金鑰,對稱加密。
4.2 udp打洞
4.2.1 打洞流程
4.1.6 打洞協議包
/*****************************
[id:10005] 打洞請求
******************************/
struct stru_p2p_udp_holes_rq
; /*****************************
[id:10006] 打洞應答
******************************/
struct stru_p2p_udp_holes_rs
; /*****************************
// [id:10007] 通道保持通知
******************************/
struct stru_p2p_udp_ch_maintain_id
;
IM伺服器的架構
一 總的構架結構示意圖 如上圖所示,目前系統總的分成六個模組,分別為 網路 協議解析模組,使用者帳號管理模組,訊息處理模組,動作處理模組,資料均衡處理模組,客戶狀態處理模組。正常流程應該這麼實現,以乙個或者幾個執行緒執行網路 協議解析模組,然後他根據具體的包型別分發給具體的命令處理模組,每個具體的命...
IM伺服器的架構
一 總的構架結構示意圖 如上圖所示,目前系統總的分成六個模組,分別為 網路 協議解析模組,使用者帳號管理模組,訊息處理模組,動作處理模組,資料均衡處理模組,客戶狀態處理模組 正常流程應該這麼實現,以乙個或者幾個執行緒執行網路 協議解析模組,然後他根據具體的包型別分發給具體的命令處理模組,每個具體的命...
IM伺服器的架構
如上圖所示,目前系統總的分成六個模組,分別為網路 協議解析模組,使用者帳號管理模組,訊息處理模組,動作處理模組,資料均衡處理模組,客戶狀態處理模組 正常流程應該這麼實現,以乙個或者幾個執行緒執行網路 協議解析模組,然後他根據具體的包型別分發給具體的命令處理模組,每個具體的命令處理模組 至少應該分別執...