Cassandra Architekstur & Faktor Replikasi
⚡ Ringkasan Cerdas
Cassandra Arsitektur ini mendistribusikan data di seluruh node rekanan tanpa titik kegagalan tunggal, menggunakan gossip untuk koordinasi dan replikasi untuk ketahanan data. Halaman ini mencakup setiap komponen, baik strategi replikasi, tingkat konsistensi, dan jalur tulis dan baca internal.

Cassandra dirancang untuk ditangani Big data. CassandraFitur utama adalah menyimpan data di banyak node tanpa satu titik kegagalan pun.
Alasannya seperti ini CassandraArsitekturnya adalah kegagalan perangkat keras dapat terjadi kapan saja. Setiap node dapat mati. Jika terjadi kegagalan, data yang disimpan di node lain dapat digunakan. Oleh karena itu, Cassandra dirancang dengan arsitektur terdistribusi.
Cassandra menyimpan data pada node-node yang berbeda dengan arsitektur mode terdistribusi peer-to-peer.
Semua node bertukar informasi satu sama lain menggunakan Protokol gosip. Gosip adalah sebuah protokol Cassandra dimana node dapat berkomunikasi satu sama lain.
Komponen dari Cassandra Architekstur
Ada beberapa komponen dalam Cassandra Architekstur:

Diagram di atas menyusun komponen-komponen tersebut: node berada di dalam pusat data, pusat data berada di dalam klaster, dan commit log, memtable, serta SSTable berada di dalam setiap node individual.
Node
Node merupakan tempat penyimpanan data. Ini adalah komponen dasar dari Cassandra.
Data Center
Kumpulan node disebut pusat data. Banyak node yang dikategorikan sebagai pusat data.
Cluster
Klaster adalah kumpulan banyak pusat data.
Log Komit
Setiap operasi tulis ditulis ke Commit Log. Log komit digunakan untuk pemulihan kerusakan.
Tabel Mem
Setelah data ditulis di log Commit, data ditulis di Mem-table. Data ditulis dalam tabel Mem untuk sementara.
SSTabel
Ketika Mem-table mencapai ambang batas tertentu, data akan dikirim ke file disk SSTable. SSTable bersifat tetap (immutable), sehingga pembaruan akan menulis versi baru alih-alih mengedit versi lama, dan proses latar belakang yang disebut pemadatan (compaction) kemudian akan menggabungkan versi-versi tersebut dan membuang baris yang sudah usang.
Replikasi Data di Cassandra
Karena masalah perangkat keras dapat terjadi atau link dapat terputus sewaktu-waktu selama proses data, maka diperlukan solusi untuk menyediakan cadangan ketika masalah tersebut terjadi. Jadi data direplikasi untuk memastikan tidak ada satu titik kegagalan pun.
Cassandra menempatkan replika data pada node berbeda berdasarkan dua faktor ini.
- Tempat menempatkan replika berikutnya ditentukan oleh Strategi Replikasi.
- Sedangkan jumlah replika yang ditempatkan pada node berbeda ditentukan oleh Faktor Replikasi.
Faktor replikasi satu berarti hanya ada satu salinan data, sedangkan faktor replikasi tiga berarti ada tiga salinan data pada tiga node berbeda.
Untuk memastikan tidak ada satu titik kegagalan pun, faktor replikasi harus tiga.
Ada dua jenis strategi replikasi Cassandra.
Strategi Sederhana di Cassandra
Strategi Sederhana digunakan saat Anda hanya memiliki satu pusat data. SimpleStrategy menempatkan replika pertama pada node yang dipilih oleh pemartisi. Setelah itu, replika yang tersisa ditempatkan searah jarum jam di ring Node.
Berikut adalah representasi gambar dari SimpleStrategy:

Strategi Topologi Jaringan di Cassandra
Strategi Topologi Jaringan digunakan saat Anda memiliki lebih dari dua pusat data. Dalam NetworkTopologyStrategy, replika ditetapkan untuk setiap pusat data secara terpisah. NetworkTopologyStrategy menempatkan replika searah jarum jam di dalam ring hingga mencapai node pertama di rak lain. Strategi ini mencoba menempatkan replika di rak yang berbeda di pusat data yang sama.
Hal ini disebabkan terkadang kegagalan atau masalah dapat terjadi pada rak. Kemudian replika pada node lain dapat menyediakan data.
Berikut adalah representasi bergambar strategi topologi Jaringan:

Faktor replikasi menentukan berapa banyak salinan yang ada. Berapa banyak dari salinan tersebut yang harus menjawab permintaan tertentu adalah pengaturan terpisah, yang akan dijelaskan selanjutnya.
Tingkat Konsistensi dalam Cassandra
Tingkat konsistensi ditetapkan per kueri, bukan per klaster, dan itulah yang membuatnya Cassandra Dapat disesuaikan. Ini menentukan berapa banyak replika yang harus mengakui penulisan, atau menanggapi pembacaan, sebelum koordinator menjawab klien. Tingkat rendah memberikan respons lebih cepat; tingkat tinggi memberikan data yang lebih pasti terkini.
| Tingkat | Perilaku | Penggunaan khas |
|---|---|---|
| ONE | Salah satu replika harus merespons. | Pencatatan data dengan throughput tinggi di mana pembacaan yang usang sesekali dapat diterima. |
| JUMLAH ANGGOTA MINIMUM | Sebagian besar replika harus merespons, yang dihitung sebagai (RF / 2) + 1. | Pilihan serbaguna untuk konsistensi dan ketersediaan yang seimbang. |
| KUORUM_LOKAL | Sebagian besar replika di dalam pusat data lokal harus merespons. | Klaster multi-pusat data, karena menghindari latensi lintas wilayah. |
| SEMUA | Setiap replika harus merespons. | Jarang terjadi. Satu node yang down menyebabkan permintaan gagal total. |
| APAPUN (hanya menulis) | Penyerahan tugas secara tersirat tetap dianggap sebagai keberhasilan meskipun replikanya tidak dapat dijangkau. | Ketersediaan penulisan maksimum di mana daya tahan dapat dilonggarkan. |
Konsistensi yang kuat dijamin ketika level baca ditambah level tulis melebihi faktor replikasi. Dengan faktor replikasi tiga, penulisan pada QUORUM dan pembacaan pada QUORUM memenuhi aturan tersebut, karena dua ditambah dua lebih besar dari tiga. Penulisan pada ONE dan pembacaan pada ONE tidak memenuhi aturan tersebut, dan oleh karena itu pembacaan dapat mengembalikan nilai yang lebih lama.
Ketika replika tidak dapat dijangkau, koordinator menyimpan sebuah mengisyaratkan dan memutarnya kembali setelah node kembali, yang merupakan cara kerja level ANY dan sebagian besar Cassandrapekerjaan perilaku penyembuhan diri.
Menulis Operamasuk Cassandra
Koordinator mengirimkan permintaan tulis ke replika. Jika semua replika sudah habis, mereka akan menerima permintaan tulis terlepas dari tingkat konsistensinya.
Tingkat konsistensi menentukan berapa banyak node yang akan merespons kembali dengan pengakuan keberhasilan.
Node akan merespon kembali dengan pengakuan sukses jika data berhasil ditulis ke log komit dan memTable.
Misalnya, dalam satu pusat data dengan faktor replikasi sama dengan tiga, tiga replika akan menerima permintaan tulis. Jika tingkat konsistensinya satu, hanya satu replika yang akan merespons kembali dengan pengakuan keberhasilan, dan dua replika lainnya akan tetap tidak aktif.
Misalkan jika dua replika yang tersisa kehilangan data karena node down atau masalah lainnya, Cassandra akan membuat baris konsisten dengan mekanisme perbaikan bawaan di Cassandra.
Di sini dijelaskan bagaimana proses penulisan terjadi Cassandra,
- Ketika permintaan tulis datang ke node, pertama-tama, ia mencatat log komit.
- Kemudian Cassandra menulis data di tabel mem. Data yang ditulis dalam tabel mem pada setiap permintaan tulis juga ditulis dalam log komit secara terpisah. Mem-table adalah data yang disimpan sementara di memori sementara log Commit mencatat catatan transaksi untuk tujuan pencadangan.
- Ketika mem-table penuh, data dipindahkan ke file data SSTable.

Karena SSTable tidak pernah diedit langsung di tempatnya, penghapusan tidak akan menghapus baris tersebut secara langsung. Sebaliknya, akan ada penanda yang disebut batu nisan Data tersebut ditulis, dan baris tersebut hanya akan hilang ketika proses pemadatan (compaction) berjalan setelah masa tenggang. Inilah sebabnya mengapa beban penghapusan yang berat memperlambat pembacaan hingga proses pemadatan selesai.
Baca Operamasuk Cassandra
Ada tiga jenis permintaan baca yang dikirimkan koordinator ke replika.
- Permintaan langsung
- Permintaan intisari
- Baca permintaan perbaikan
Koordinator mengirimkan permintaan langsung ke salah satu replika. Setelah itu, koordinator mengirimkan permintaan intisari ke jumlah replika yang ditentukan oleh tingkat konsistensi dan memeriksa apakah data yang dikembalikan merupakan data yang diperbarui.
Setelah itu, koordinator mengirimkan permintaan intisari ke semua replika yang tersisa. Jika ada node yang memberikan nilai kedaluwarsa, permintaan perbaikan pembacaan latar belakang akan memperbarui data tersebut. Proses ini disebut mekanisme perbaikan baca.
Di dalam replika yang menerima permintaan langsung, urutan pencarian dirancang untuk menghindari akses ke disk sebisa mungkin.
- The memtable diperiksa terlebih dahulu, karena penulisan terbaru belum di-flush.
- The cache barisJika diaktifkan, maka dapat menjawab seluruh permintaan tanpa perlu melakukan pekerjaan lebih lanjut.
- A filter mekar akan diperiksa untuk setiap SSTable. Hasilnya akan menjawab "pasti tidak ada" atau "mungkin ada", yang memungkinkan sebagian besar SSTable dilewati tanpa perlu dibaca.
- The indeks partisi dan ringkasannya menemukan offset byte yang tepat di dalam SSTable mana pun yang lolos pemeriksaan filter Bloom.
- Fragmen yang cocok dari beberapa SSTable digabungkan, dengan stempel waktu terbaru yang menjadi penentu untuk setiap kolom.
Bloom filter adalah langkah yang menjaga kecepatan baca tetap tinggi seiring bertambahnya data, karena ia menghilangkan hampir semua SSTable dari pertimbangan sebelum pencarian disk terjadi. Penerapan mekanisme ini di beberapa mesin dibahas dalam Cassandra kelompok tutorial.
