2014-11-28 16 views
11

uygulamaktır. Ölçekli olmasını istiyorum. Bu büyük bir soru gibi gözüküyor, bu yüzden cevapların yön gösterici, keşif türü olduğunu umuyorum.Strateji ben sohbet sunucusunun çeşit uygulamak için arıyorum ölçeklenebilir sohbet sunucusu

Son kullanıcı istemcileri web veya telefon istemcisidir. Sanırım Socket.IO gibi bir çeşit web uygulaması.

Sunucu tarafında Node.js. kullanmak istiyorum Ben kullanıcı sayısı (sınırlı değildir de, neden içinde, büyük isabet şansı beklenmemektedir böylece mimari ölçeklenebilir olmak istiyorum ve bu ise, bunun üzerinde çalışmak için daha akıllı, tecrübeli insanlar olma olasılığı makul şu anda sadece ben kodlama yerine) Sohbet odası başına düşen kullanıcı sayısı umarım sınırlı değildir ya da belki bazı sabit büyük sayıdır. Ve bu, Düğümde yazılmış birkaç sunucuyu kullanarak yatay ölçeklemem gerektiği anlamına geliyor.

Bazı yük dengeleyicilerinin (ve gelecekte de tek bir hata noktasında değil, ancak bunu nasıl başaracağımı bilmiyorum, ya da sadece AWS'ye geçme) son istemcilerden SocketIO bağlantılarını gönderdiğinizi varsayalım. sohbet sunucuları. Farklı sunuculara farklı kullanıcılar aynı odada olabilir, bu nedenle mesajların diğer sunuculara gönderilmesi gerekir.

nasıl böyle bir şey uygulamak feasibly ki? Umarım çok karmaşık değil.

Sorular: (1) Tüm sunucular, sunucular herhangi biri aracılığıyla oturum açabileceğinden tüm iletileri işlemek gerekiyorsa, bu ölçek mu? Sunucular aralarında konuşmaya için (2) ileti kuyruğu çeşit gerekiyor mu? Rabbitmq'den Pub-sub bunun için kullanılabilir mi? Ya da zeromq, pub altıyla nasıl ölçeklenirim? Zeromq kılavuzunda, REQ/REP tipi uygulamalarla birden fazla sunucuya ölçekleme açıklamaları vardır. Ancak Pub Sub. (3) Yoksa XMPP ile başlamalı mıyım?

Mümkün olduğunca kolay çalışmasını umuyorum.

cevap

8

Socket.io sitesinde oldukça iyi bir açıklama var.

HTTP yük dengeleyici, mesaj arka uç olarak node.js (yapışkan oturumları ile) kümeleme ve REDIS olarak Nginx kullanarak anlaşılacağı göz at.

Sanırım hedefleriniz, sadece verilen modülleri ve yapılandırma mekanizmalarını kullanarak, hiçbir kodlama içermeyen kodlamayla gerçekleştirilebilir olmalıdır.

+0

Yani, Redis bu durumda bir MQ gibidir. – huggie

+0

Evet, PUB/SUB'u destekler: http://redis.io/topics/pubsub – Tobi

+0

Sohbet mesajlarının MongoDB'ye gönderilmesini istiyorsanız, bunu nasıl başaracağımı biliyor musunuz? Her şeye abone olan ve sadece MongoDB'ye giriş yapan bir Node.js sunucum varsa, ölçeklenebilir görünmüyor. Ama iki tane varsa, iki kere kayıt olurdum. – huggie