IM 開源專案 登入伺服器 1

2021-06-02 10:44:03 字數 2501 閱讀 3862

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  心跳

反射方式: 客戶端週期傳送,伺服器端反射.

/*****************************

[id:5005(def_svr_login_min + 5) 存活通知

******************************/

struct stru_svr_login_live_id

;

4.1.5 金鑰

伺服器生成金鑰,對稱加密。

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伺服器的架構

如上圖所示,目前系統總的分成六個模組,分別為網路 協議解析模組,使用者帳號管理模組,訊息處理模組,動作處理模組,資料均衡處理模組,客戶狀態處理模組 正常流程應該這麼實現,以乙個或者幾個執行緒執行網路 協議解析模組,然後他根據具體的包型別分發給具體的命令處理模組,每個具體的命令處理模組 至少應該分別執...