Arsitektur Cassandra
Peer To Peer
Di Cassandra, setiap node memiliki nilai yang sama pentingnya.
Ketika client melakukan permintaan, Coordinator Node akan menerima permintaan tersebut dan menentukan di mana data harus disimpan sesuai dengan Replication Factor yang telah ditentukan.
Perlu diingat bahwa Coordinator Node tidak selalu sama dan bisa berubah-ubah.
Saat terjadi Network Partition, kita akan menghadapi situasi seperti yang terlihat pada gambar.
Pada gambar tersebut, terdapat 5 node yang terbagi menjadi dua bagian, yaitu 3 node dan 2 node, karena adanya Network partition. Akibatnya, node di sisi kiri tidak dapat berkomunikasi dengan node di sisi kanan.
Replication Factor diatur ke 3 dan Consistency Level Quorum.
Jika sebuah permintaan datang ke Coordinator Node di sisi kiri, permintaan tersebut akan ditulis/dibaca ke 2 node Non Coordinator Node, sehingga masih berhasil karena telah melakukan operasi pada 2 dari 3 node yang ada. Setelah Network Partition berakhir, data akan diperbarui pada node ketiga.
Di sisi kanan, tidak dapat dilakukan operasi read/write karena hanya ada 1 non Coordinator Node.
Cassandra akan secara cerdas menentukan node mana yang cocok untuk digunakan sebagai Coordinator Node jika terjadi Network Partition.