2016-04-04 6 views
9

Hafif bir bot uygulamak için, "Gerçek Zamanlı Mesajlaşma API'sı" ile uğraşmam gerekiyor. Slack'den gerçek zamanlı olarak olayları almanıza ve mesajları kullanıcı olarak göndermenize olanak veren bir WebSocket tabanlı API'dır. Daha fazla bilgi: https://api.slack.com/rtmSersemletici bir botun 1000 takımına nasıl ölçeklendirileceği

sadece bir ekip için bot oluşturmak için, ben bir WebSocket bağlantısı açmak ve etkinlikler için onu dinlemelisiniz.

Başka bir takım için bolluk botunu kullanıma sunmak. Yeni bir web bağlantısı bağlantısı açmam gerekiyor. Yani,

  • 1 takım => 1 WebSocket bağlantısı
  • 2 takım => 2 WebSocket bağlantıları
  • N ekipleri => N WebSocket bağlantıları
  • benim WebSocket'e ölçekli yapmalıyım

sonsuz takımlar için bağlantılar?

1000’lik web bağlantısı bağlantılarının otomatik ölçeklendirmesiyle ne tür bir mimari kullanılabilir? gevşek prizlere ile

cevap

7

, sen ölçek şeyler çok var: soketlerinin

  • sayısı. Bu kolay çünkü ucuz sunucular bile 50k'dan fazla gibi binlerce soketi kullanabilir. Ancak her soket, bir sonraki listede listelenen diğer iki tip yükü temsil eder.
  • Her sunucu için kullanılan bellek miktarı, kendi sunucu uygulamanıza bağlı olarak değişir. Eğer hafızada büyük miktarda mesaj geçmişi tutmaya çalışıyorsanız, mesaj işlem kodunuz biraz vatansızsa, sunucunuzun limitini daha hızlı vuracaksınız.
  • Ayrı bir yük dengeleyiciye sunulan herhangi bir resmi boşaltmak istediğiniz G/Ç miktarı.

Dikkate alınması gereken diğer bir şey, hata toleransıdır. Yapışkan yük dengeleme yaptığınızı ve sunucularınızdan birinin 50 takımla çalıştığını varsayalım. O sunucu 50 takımı ele geçiren tek sunucudur, böylece eğer aşağı giderse, tüm 50 botlar çevrimdışıdır. Alternatif olarak, ayrı sunucularda her takım için birden fazla soket açabilir ve her mesajın yalnızca bir kez yanıtlanması için bir mesaj işleme kuyruğu kullanabilirsiniz.

Bu yüzden önereceğim mimari, RTM soketleri için ilk katman olarak ince, yedekli bir yük dengeleyici ve bunun altında güvenilir bir ileti sırasıdır.

+0

Düğümün çok sayıda eşzamanlı soketi yönetebileceği doğrudur, ancak gecikme ölçeğinde daha önceden tahmin edilemez hale gelir. Performansa duyarlı kodunuz varsa, birden fazla işlem boyunca yükü eşitlemek için bir çeşit küme sistemini kullanmaya değer. Bu nedenle, kısa süreli bir blip, her şeyi karıştırmıyor. – tadman

İlgili konular