我正在嘗試爲始終連接的客戶端構建一個通用服務器。遊戲服務器網關設計
該架構由4個主要部件
- 有狀態應用服務器
- 無國籍網關服務器
- 客戶
- 排隊系統和經紀人
工藝流程
- 客戶機連接到一個網關
- 網關接受作爲發送會話ID返回到客戶端
- 客戶端將消息發送到網關
- 網關請求寫入到消息/任務隊列
- 甲守護程序讀取隊列中的消息並將它們轉發到應用程序服務器的偵聽套接字
- 應用程序服務器通過其業務邏輯運行消息
- 然後,App Server稍後向客戶端發送相關消息進入網關隊列
- 網關上的線程將讀取其入站隊列中的消息,然後將消息發送回消息中標識的客戶端。
- 網關沒有地圖客戶端會話ID的客戶端Socket對象的傳入郵件轉發到客戶端套接字
我使用Java的Netty網關。應用程序服務器也在Java中。
我很想說設計就像Mongrel2一樣,但我並不完全確定。我會說這更多的是城市飛艇的氦邊緣服務器設計(http://urbanairship.com/blog/2010/08/24/c500k-in-action-at-urban-airship/)
我的問題是: - 使用線程從入站隊列中讀取消息,然後將它們轉發給客戶端一個好主意?有沒有更好的方法來處理這個問題?
術語「工人」浮現在腦海 – Kristian 2012-04-16 21:06:10
工作人員在從入站隊列讀取後如何幫助我將郵件發送回客戶端? – kopos 2012-04-17 05:40:18