Rumah  >  Artikel  >  Java  >  Storan Berperingkat dalam Kafka - Ringkasan daripada Blog Teknologi Uber

Storan Berperingkat dalam Kafka - Ringkasan daripada Blog Teknologi Uber

WBOY
WBOYasal
2024-07-17 00:07:00893semak imbas

Tiered Storage in Kafka - Summary from Uber

Blog teknologi Uber menerbitkan artikel, Pengenalan kepada Storan Berperingkat Kafka di Uber, bertujuan untuk memaksimumkan pengekalan data dengan lebih sedikit broker Kafka dan kurang ingatan. Ini membolehkan masa pengekalan mesej yang lebih lama merentas pelbagai aplikasi perniagaan.

Penyelesaian biasa ialah menyepadukan storan luaran secara manual, menyegerakkan data secara berkala ke sistem luaran. Walau bagaimanapun, ini melibatkan usaha pembangunan dan penyelenggaraan yang ketara, seperti menentukan cara menyimpan data, menetapkan kekerapan penyegerakan, proses mencetuskan, mengambil data dan menggunakan pengindeksan.

Oleh itu, Uber mencadangkan penyelesaian yang merangkumi logik storan luaran, menjadikannya plug-and-play dengan konfigurasi mudah. Ciri ini sedang dibangunkan dengan kerjasama Apache Foundation dan akan tersedia dalam versi akan datang.

Senario

Adalah penting untuk memahami bahawa Kafka ialah komponen baris gilir mesej (MQ) tambahan sahaja dengan keupayaan daya pemprosesan yang sangat tinggi. Kafka menyimpan log pada storan tempatan broker, dan pengguna boleh mengkonfigurasi masa pengekalan atau saiz log. Dalam syarikat saya sebelum ini (Lenovo), kami menggunakan Flink untuk menggunakan data secara berterusan. Jumlah data yang besar akan menyebabkan Kafka melebihi had storan cakera, yang membawa kepada kegagalan menulis data dan ralat perniagaan. Untuk mengurangkan kos, kami hanya boleh melaraskan masa pengekalan daripada menggunakan lebih banyak mesin.

Selain itu, jika setiap syarikat membangunkan sistemnya sendiri untuk menyimpan data lama ke storan luaran, ia akan melibatkan sejumlah besar kerja pembangunan. Terdapat juga banyak isu yang berkaitan dengan penyegerakan dan ketekalan data.

Penyelesaian

Intipatinya adalah untuk mengubah Broker dengan menambahkan pengurusan log jauh dan pengurusan storan padanya.

RemoteLogManager: Menguruskan kitaran hayat segmen log jauh, termasuk menyalin, membersihkan dan mengambil.

RemoteStorageManager: Menguruskan tindakan untuk segmen log jauh, termasuk menyalin, mengambil dan memadam. Metadata yang dikaitkan dengan segmen log jauh termasuk maklumat tentang offset permulaan dan tamat segmen, cap masa, syot kilat keadaan pengeluar dan pusat semakan zaman pemimpin.
RemoteLogMetadataManager menjejaki metadata ini untuk memastikan sistem mengetahui di mana setiap segmen bermula dan berakhir serta maklumat penting lain yang diperlukan untuk pengambilan dan pengurusan data.

RemoteLogMetadataManager: Mengurus kitaran hayat metadata untuk segmen log jauh dengan konsistensi yang kukuh.

Antaranya, RemoteLogManager bertindak sebagai komponen kawalan, menyambung terus ke cakera dalam Broker untuk mendapatkan semula data yang dibaca. Ia juga bertanggungjawab untuk memanggil semula data jauh. RemoteStorageManager ialah entiti yang beroperasi pada data dan RemoteLogMetadataManager bertanggungjawab untuk mengurus metadata.

Ringkasan Tiga Tindakan dalam Storan Berperingkat Kafka

  1. Menyalin Segmen ke Storan Jauh
    Segmen log dianggap layak untuk disalin ke storan jauh jika pengimbang penghujungnya (pengimbangan mesej terakhir dalam segmen) adalah kurang daripada pengimbangan stabil terakhir partition.(Offset-Stable-Terakhir (LSO): Ofset tertinggi yang mana semua mesej terdahulu diakui sepenuhnya oleh semua replika dalam segerak, memastikan tiada kehilangan data.)RemoteStorageManager mengendalikan penyalinan segmen log bersama-sama dengan indeks yang berkaitan, cap masa, syot kilat pengeluar dan cache era pemimpin.

  2. Pembersihan Segmen Jauh
    Data jauh dibersihkan pada selang masa yang tetap dengan mengira segmen yang layak oleh kumpulan benang khusus. Ini berbeza daripada pembersihan tak segerak bagi segmen log tempatan. Apabila topik dipadamkan, pembersihan segmen log jauh dilakukan secara tak segerak dan ia tidak akan menyekat operasi pemadaman sedia ada atau mencipta semula topik baharu.

  3. Mengambil Segmen daripada Storan Jauh
    RemoteLogManager menentukan segmen jauh yang disasarkan berdasarkan ofset yang diingini dan zaman peneraju dengan melihat ke dalam stor metadata menggunakan RemoteLogMetadataManager. Ia menggunakan RemoteStorageManager untuk mencari kedudukan dalam segmen dan mula mengambil data yang dikehendaki.

Atas ialah kandungan terperinci Storan Berperingkat dalam Kafka - Ringkasan daripada Blog Teknologi Uber. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn