Arsitektur perpesanan real-time Slack

Arsitektur perpesanan real-time Slack

Slack baru-baru ini memposting cara melakukannya Ini mengirimkan jutaan pesan secara real time setiap hari di seluruh dunia. Perusahaan memberikan gambaran yang komprehensif pub / sub Arsitektur yang dirancang untuk mengelola pesan waktu nyata dalam skala besar. Ini menyoroti tantangan unik yang ditimbulkan dengan mengirimkan pesan waktu nyata di berbagai zona waktu dan wilayah dan bagaimana insinyur Slack merancang infrastruktur untuk menanganinya.

Sameera ThangoudouInsinyur Perangkat Lunak Senior di Slack, menjelaskan pentingnya arsitektur ini:

Server kami melayani puluhan juta saluran per host, puluhan juta klien yang terhubung, dan sistem kami mengirimkan pesan ke seluruh dunia dalam 500 milidetik. Dengan skalabilitas linier arsitektur kami saat ini, proyeksi kami menunjukkan bahwa kami dapat melayani banyak pelanggan.

Dia mengatakan perusahaan berencana untuk meningkatkan arsitekturnya untuk melayani basis pelanggan yang lebih signifikan.

Backend sistem terdiri dari beberapa layanan. Server saluran (CS) adalah server yang berada dalam memori yang baik dan berisi riwayat saluran. Mekanisme segmentasi yang konsisten memetakan setiap CS ke subkumpulan saluran. Pada masa puncaknya, setiap host melayani sekitar 16 juta saluran. Pengelola Hash Loop yang Konsisten (CHARM) mengelola loop hash yang konsisten dari perangkat CS, memastikan bahwa CS yang tidak sehat diganti dalam waktu 20 detik. Consul menyimpan konfigurasi yang diperbarui untuk hashing yang konsisten.



sumber: https://slack.engineering/real-time-messaging/

Server Gateway, seperti CS, adalah server dalam memori yang stateful. Mereka menyimpan informasi pengguna dan langganan saluran WebSocket dan bertindak sebagai antarmuka antara klien Slack dan CS. GS diterapkan di beberapa wilayah geografis untuk meningkatkan kecepatan koneksi. Server Administrator (AS) adalah server dalam memori tanpa status yang menghubungkan antara Webapp dan backend CS. Terakhir, Server Kehadiran (PS) melacak pengguna online, yang mendorong Skor Kehadiran hijau di klien Slack.

Setiap klien Slack memiliki koneksi WebSocket yang persisten ke server Slack untuk menerima peristiwa real-time guna mempertahankan statusnya. Klien menyiapkan koneksi WebSocket melalui beberapa langkah, seperti mengambil token pengguna dan informasi penyiapan koneksi WebSocket dari backend Webapp. Kemudian klien memulai koneksi WebSocket ke area tepi terdekat, dan GS mengambil informasi pengguna dan mengirimkan pesan pertama ke klien. utusan Menyeimbangkan beban lalu lintas yang masuk dan menangani penghentian TLS.



sumber: https://slack.engineering/real-time-messaging/

Setelah penyetelan klien selesai, setiap pesan yang dikirim di saluran disiarkan ke semua klien online di saluran. Perjalanan pesan melalui API Webapp, AS, dan CS sebelum dikirim ke setiap pelanggan GS di seluruh dunia. Setiap GS yang menerima pesan mengirimkan pesan ke setiap klien terhubung yang berbagi ID saluran.



sumber: https://slack.engineering/real-time-messaging/

Selain pesan obrolan, acara adalah jenis pesan lain yang mengubah status pelanggan secara waktu nyata. Peristiwa sementara, seperti pengguna mengetik ke saluran, mengikuti alur yang sedikit berbeda karena database tidak mempertahankan peristiwa ini. Diagram di bawah ini menunjukkan aliran ini.



sumber: https://slack.engineering/real-time-messaging/

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *