2016-11-26 69 views
0

大家早上好,應用程序分片通信最佳實踐?

我的工作有了這個連接體系結構的客戶端 - 服務器的遊戲應用程序: enter image description here

我剛剛完成登錄部分:在谷歌遊戲客戶端身份驗證,發送一個令牌+ userid添加到一個登錄服務器,登錄服務器使用google play驗證數據,併爲該用戶在數據庫上創建一個會話。

我的想法是一個成功登錄,使用主服務器的一個登錄服務器會談註冊一個預期的客戶端上,關閉到登錄服務器的連接,則客戶端連接到該服務器。我想要有多個主服務器進行擴展和本地化,但問題是當客戶端位於不同的主服務器上時,如何管理客戶端 - 客戶端交互?最佳做法是什麼?

讓我們想想一個簡單的「朋友連接」通知系統。因此,想象架構上的所有客戶端都是好友,客戶端2和3已連接,客戶端1連接,主服務器在客戶端1連接上構建客戶端模型,該客戶端模型將包含好友列表(包含在線狀態和已連接服務器ID if線上)。它將通過服務器對在線朋友進行分組,並向這些主服務器發送批量friend_connected數據包,這些數據包會通知用戶(如果是同一服務器,則只發送friend_connected給每個用戶)。

所以我應該創建所有主要的服務器之間的TCP Socket連接?是我第一次構建多服務器結構,因此不確定是否有更好/更簡單的方法來管理它。我想過一箇中間服務器來管理主服務器之間的消息傳遞,但可能只有當你的系統有數百個服務器時才值得,因此每個主服務器只有一個套接字到最近的消息管理器。

登錄服務器不需要是相互連接的,因爲沒有客戶端通信,它只是管理一個進來的CONNEX,權威性的客戶機和設置會話。

回答