假設我有一個典型的Web服務器,它向客戶端提供標準的HTML頁面,並且與它一起運行的websocket服務器用於實時更新(聊天,通知等)。擴展標準的網絡服務器旁邊的解耦實時服務器
我的一般工作流是當主服務器上發生什麼事情觸發需要實時消息時,主服務器將該消息發送到實時服務器(通過消息隊列),實時服務器將其分發給任何相關的連接。
我擔心的是,如果我想擴大了一點東西,並添加另一個實時服務器,似乎我唯一的選擇是:
- 有主服務器跟蹤哪些實時服務器的客戶端 連接到。當客戶端收到通知/消息 消息時,主服務器將該消息轉發給客戶端連接的實時服務器 。這裏的缺點是代碼複雜度爲 ,因爲主服務器必須做一些額外的預訂 保留。
- 或者,主服務器只需將該消息 一起傳遞給每個實時服務器;只有連接到客戶端的服務器 實際上會對它做任何事情。這會導致 被大量浪費的消息傳遞。
我在這裏錯過了另一個選擇嗎?我只是試圖確保我不會在這些路徑中走得太遠,並意識到我正在做的事情完全錯誤。
您也可以使用像pusher.com或realtime.co這樣的實時雲服務。他們會爲你處理重負載,你不需要擔心可擴展性。永遠。 –
@JoãoParreira - 希望避免外部解決方案。我已經有了一個可以正常工作的系統,我只是因爲好奇而感興趣。 – repole