TTServer(TeamTalk服務器端)主要包含了以下幾種服務器:
- LoginServer (C++): 登錄服務器,分配一個負載小的MsgServer給客戶端使用
- MsgServer (C++): 消息服務器,提供客戶端大部分信令處理功能,包括私人聊天、群組聊天等
- RouteServer (C++): 路由服務器,為登錄在不同MsgServer的用戶提供消息轉發功能
- FileServer (C++): 文件服務器,提供客戶端之間得文件傳輸服務,支持在線以及離線文件傳輸
- MsfsServer (C++): 圖片存儲服務器,提供頭像,圖片傳輸中的圖片存儲服務
- DBProxy (C++): 數據庫代理服務器,提供mysql以及redis的訪問服務,屏蔽其他服務器與mysql與redis的直接交互
系統結構圖
TeamTalk中用到了其他開源庫,比如Google Protobuf、redis、log4cxx等。
服務端流程
服務端的啟動沒有嚴格的先后流程,因為各端在啟動后會去主動連接其所依賴的服務端,如果相應的服務端還未啟動,會始終嘗試連接。不過在此,如果是線上環境,還是建議按照如下的啟動順序去啟動(也不是唯一的順序):
1、啟動db_proxy。
2、啟動route_server,file_server,msfs
3、啟動login_server
4、啟動msg_server
那么我就按照服務端的啟動順序去講解服務端的一個流程概述。
第一步:啟動db_proxy后,db_proxy會去根據配置文件連接相應的mysql實例,以及redis實例。
第二步:啟動route_server,file_server,msfs后,各個服務端都會開始監聽相應的端口。
第三步:啟動login_server,login_server就開始監聽相應的端口(8080),等待客戶端的連接,而分配一個負載相對較小的msg_server給客戶端。
第四步:啟動msg_server(端口8000),msg_server啟動后,會去主動連接route_server,login_server,db_proxy_server,會將自己的監聽的端口信息注冊到login_server去,同時在用戶上線,下線的時候會將自己的負載情況匯報給login_server.
各個服務的端口號
(ps:這里是按照新版TeamTalk部署教程上的設置的,不同設置會有不同結果^_^,詳情見新版TeamTalk完整部署教程,注意:如果出現部署完成后但是服務進程啟動有問題或者只有部分服務進程啟動了,請查看相應的log日志,請查看相應的log日志,請查看相應的log日志,重要的事情說3遍。)
服務 |
端口 |
login_server |
8080/8008 |
msg_server |
8000 |
db_proxy_server |
10600 |
route_server |
8200 |
http_msg_server |
8400 |
file_server |
8600/8601 |
參考
1、新版TeamTalk完整部署教程(這個是完整部署教程,當時就是按照這個配置來的^_^)
2、
3、google protobuf安裝與使用(ps:TeamTalk中用到了protobuf)