Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Ide untuk menskalakan obrolan di AWS?

Membangun layanan obrolan tidak semudah yang Anda kira.

Saya telah membangun server XMPP lengkap, klien, dan SDK dan dapat membuktikan beberapa masalah halus dan sulit yang muncul. Sebuah prototipe di mana pengguna melihat satu sama lain dan mengobrol dengan mudah. Sistem fitur lengkap dengan pembuatan akun, keamanan, penemuan, kehadiran, pengiriman offline, dan daftar teman jauh lebih menantang. Untuk kemudian menskalakannya di sejumlah server yang berubah-ubah sangat sulit.

PubSub adalah fitur yang ditawarkan oleh Layanan Obrolan (lihat XEP-60) daripada sarana tradisional untuk membangun layanan obrolan. Saya dapat melihat daya pikatnya, tetapi PubSub dapat memiliki kekurangan.

Beberapa pertanyaan untuk Anda:

  1. Apakah Anda melakukan ini melalui Web? Apakah pengguna akan terhubung dan melakukan long-poling atau apakah Anda memiliki solusi Web Sockets?

  2. Berapa banyak pengguna? Berapa banyak koneksi per pengguna? Rasio tulis dan baca?

  3. Ide Anda untuk menggunakan SQS seperti itu menarik, tetapi mungkin tidak akan berskala. Bukan hal yang aneh untuk memiliki 50k atau lebih pengguna di server obrolan. Jika Anda melakukan polling setiap Antrian SQS untuk setiap pengguna, Anda tidak akan mendekati itu. Anda akan lebih baik memiliki antrian untuk setiap server, dan server hanya memilih antrian itu. Maka Anda harus mencari tahu server apa yang digunakan pengguna dan memasukkan pesan ke dalam antrean yang benar.

Saya rasa Anda ingin melakukan sesuatu seperti:

  1. Basis data RDS besar di bagian belakang.
  2. Sekelompok server front-end yang menangani koneksi klien.
  3. Beberapa kode Java / C# tingkat menengah melacak semuanya dan mengarahkan pesan ke tempat yang tepat.

Untuk mendapatkan gambaran tentang kerumitan membangun server obrolan, baca XMPP RFC's:RFC 3920RFC 3921



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana Saya Bisa Menelusuri/Melihat Nilai yang Tersimpan di Redis

  2. Cara mendapatkan DIFF pada set yang diurutkan

  3. Memulai dengan Redis Client API

  4. Bagaimana cara mendapatkan semua kunci yang cocok dengan pola tertentu dari hash di redis?

  5. Cara Autowired RedisTemplate<String,Long>