HeadlinesBriefing HeadlinesBriefing.com

Skalakan Message Bus dengan Pengindeksan

Hacker News •
×

Aria adalah kerangka kerja pesan internal perusahaan dan sistem hosting yang memproses beberapa terabyte data per hari. Klien berlangganan Aria untuk menerima aliran pesan langsung. Karena penggunaannya tumbuh pesat, tim Aria harus merancang ulang sistem agar mampu mengimbangi peningkatan volume data dan throughput. Musim panas ini, magang Theodor Totev berfokus pada kasus penggunaan tertentu: membuat klien lebih hemat biaya saat hanya membaca sebagian pesan. Pekerjaannya menggunakan pengindeksan dan pemisahan pohon menurunkan penggunaan CPU sebesar 30% pada beban kerja produksi, sembari mempertahankan standar akurasi tinggi yang dibutuhkan sistem sekritis ini.

Ketika Aria mengirimkan pesan melalui TCP, ia menyimpan pesan terbaru, yang disebut ujung aliran, dalam ring buffer di memori. Klien yang tertinggal dapat meminta pesan terbaru dari buffer ini untuk mengejar ketertinggalan, proses yang disebut pemulihan ujung. Tantangannya, Aria menyimpan seluruh aliran pesan, padahal klien sering hanya membutuhkan sebagian kecil. Aria menyaring aliran berdasarkan topik, dan klien dapat berlangganan topik tertentu atau seluruh subpohon topik. Pendekatan awalnya adalah pemindaian linear sederhana pada aliran. Secara algoritmik tidak efisien, tetapi tetap cepat karena ramah terhadap cache CPU. Seiring bertambahnya jumlah klien yang melakukan pemulihan ujung, beberapa server mencapai penggunaan CPU 100%, sehingga klien terlepas dari ujung dan tidak dapat mengejar ketertinggalan.

Indeks untuk setiap topik ditolak karena instans Aria bisa memiliki hampir satu juta topik. Sebagai gantinya, Theodor membuat indeks untuk setiap partisi topik, yaitu kelompok semua topik yang memiliki awalan dua segmen yang sama. Indeks tiap partisi mencatat lokasi pesan-pesannya dalam aliran. Ketika klien meminta pesan, Aria melakukan penggabungan n-arah terhadap indeks yang relevan menggunakan min-heap, lalu merekonstruksi aliran berurutan hanya untuk partisi yang diminta.

Benchmarking menjadi inti dari pekerjaan ini. Theodor membangun alat profiling untuk menguji variabel seperti jumlah partisi topik, tingkat interleaving, dan jumlah pembaca. Profiling terhadap implementasi awal menunjukkan bahwa min-heap adalah hambatan terbesar.

Sumber: Hacker News · Diringkas oleh HeadlinesBriefing