蘑菇街TeamTalk服務端分析

chenzheliang55發表於2014-11-04




login_server:均衡負載伺服器,用來通知客戶端連線到負載最小的msg_server (1臺)。

msg_server:客戶端連線伺服器(N臺)。客戶端通過msg_server登陸,保持長連線。

route_server:訊息中轉伺服器(1臺)。

DBProxy:資料庫服務,運算元據庫(N臺)。


訊息收發流程:

msg_server啟動時,msg_server主動建立到login_server和route_server的長連線。

客戶端登陸時,首先通過login_server 獲取負載最小的msg_server。連線到msg_server。登陸成功後,msg_server發訊息給route_server,route_server記錄使用者的msg_server。與此同時,msg_server傳送訊息給login_server,login_server收到後,修改對應msg_server的負載值。 


客戶端訊息傳送到msg_server。msg_server判斷接收者是否在本地,是的話,直接轉發給目標客戶端。否的話,轉發給route_server。

route_server接收到msg_server的訊息後,獲取to_id所在的msg_server,將訊息轉發給msg_server。msg_server再將訊息轉發給目標接收者。


資料庫操作:

訊息記錄,獲取使用者資訊等需要運算元據庫的,由msg_server傳送到db_server。db_server操作完後,傳送給msg_server。

相關文章