2013-06-03 18 views
7

katılımcılar seti (link) saklanır sohbet WebSocket'e, tek sunucu durumunda uygundur. Ancak, uygulamanın ve nginx'in birden fazla örneğini bir yük dengeleyici olarak çalıştırıyorsanız, bu durumda katılımcıları nasıl saklamak daha iyidir?ölçeklenebilirlik örneğini sohbet WebSocket'e kasırga olarak

+0

Sana birden çok örneğini çalıştırırsanız fark yoktur derim. Sonunda her örnek kendi setine() sahip olacaktır. Kullanıcıları arasında geçiş yapmak için yük dengeleyiciden endişe ediyorsanız, bunun bir sohbet sırasında çalışacağını düşünmüyorum ama yanılıyor olabilirim. Ben küçük bir db veya bir anahtar-değer deposu düşünebilirsiniz aynı kullanıcı listesini kullanmak için tüm örnekleri yok. – pypat

+0

Anladığım kadarıyla, her bir örnek bağlantıyı yalnızca katılımcılarına bırakacak, farklı örnekler farklı bir kullanıcı listesine sahip olacak. Ancak diğer örnek sohbetde yeni mesajlara nasıl bildirilecek? 'Set' tek piton örneğine ait ve diğer örnekleri tarafından erişilemiyor beri, Bahsettiğiniz @pypat gibi, Memcached gibi (tüm örnekler tarafından erişilebilir olduğunu ortak ve HIZLI anahtar-değer deposu oluşturmak zorunda – saniaxxx26

+0

, Redis vb.) Bir yöntem güncellenmiş bilgilerin tüm örneklerini bildirmek için Redis Pub/Sub sistemini kullanmaktır. Umarım aşağıda cevabım biraz yardımcı olur. –

cevap

4

Sen REDIS ait pubsub özelliğini kullanmayı düşünebilirsiniz. (link)

Düzenleme: Müşterileriniz sizin sohbet odası oturum

, bir kanala subscribe, chatroom söyleyebiliriz. Hangi kasırga örneklerini kullandıkları önemli değil. kanalla dinlemeye uyumsuz tutabilir this module kullanma.

başka bir istemci sizin sohbet odası bir mesaj gönderirse (o kanala chatroom bir mesaj yayınlamak olduğunu), otomatik kanala abone olanlara mesajları gönderir olacak tüm tornado örneklerini. Sonra mesajı websocket üzerinden gönderebilirsiniz.

Örneğin bu demo bir göz alabilir.