最近對蘑菇街的TeamTalk源碼比較感興趣,因此抽了部分時間去學習它的源碼,獲益匪淺,該篇文章列出了TeamTalk Login_Server的處理流程的思維導圖,希望幫助大家閱讀Login_Server的代碼時有個宏觀的瞭解。
當前的TEAMTALK ClientListen已經廢棄了,客戶端通過HTTP 協議想Login_Server申請一個負載最小的Msg_Server。Msg_Server在開始的時候會向Login_Server發起連接,報告當前Msg_Server的負載情況,並且在用戶登錄和退出的時候想Login_Server更新負載情況;Login_Server保存當前Msg_Server的負載情況。因此Login_Server就相當於一個負載均衡器。
Windows下,TeamTalk的時間分發器是採用Select機制來判斷當前連接是否可讀可寫,在Linux下是採用EPOLL機制,具體使用方法可參考其他文檔。
Select 調用返回成功,ReadSet有數據可讀