Replikasi satu arah antar pusat data Cassandra

Kami mengusulkan Cassandra untuk diimplementasikan sebagai backend database untuk solusi pengarsipan yang besar (jumlah penulisan yang besar dibandingkan dengan pembacaan). Kami mencari masukan tentang replikasi dan strategi penerapan Cassandra agar sesuai dengan kasus penggunaan kami.

Pilihan Cassandra didasarkan pada faktor-faktor berikut:

  • Mendukung throughput besar untuk operasi 'tulis' - ribuan penulisan simultan per detik
  • Kesesuaian untuk data Teknik (terutama data rangkaian waktu)
  • Ketersediaan tinggi untuk mendukung pengoperasian teleskop secara berkelanjutan
  • Dukungan alat mis. Analisis, Pelaporan

Perkiraan Data

  • Pertumbuhan 250 TB per tahun (masa pakai Sistem 50 tahun)

Kasus Penggunaan

Kami memiliki dua pusat data - Operasi DC dan Analytics DC (untuk mengisolasi beban kerja baca dan tulis). Di akhir postingan ini terdapat diagram yang menggambarkan arsitektur yang diusulkan. Karena keterbatasan penyimpanan, kami tidak dapat menyimpan data yang dihasilkan sepanjang masa pakai di Operations DC. Oleh karena itu, kami berencana untuk memindahkan data dari Operations DC ke Analytics DC sesuai kebijakan yang ditentukan (misalnya setelah 1 minggu).

Pertanyaan

  1. Apakah mungkin untuk melakukan replikasi satu arah di Cassandra antar Pusat Data? Data dari Operations DC dipindahkan ke Analytics DC. Namun data yang disimpan setelah pemrosesan di Analytics DC tidak boleh direplikasi ke Operations DC.
  2. Apakah Cassandra memberikan kendali atas apa yang direplikasi? Kami tidak ingin kedua DC selaras. Kami ingin mengonfigurasi apa yang direplikasi (sebenarnya dipindahkan) ke Analytics DC. Mungkinkah secara inheren terjadi pada Cassandra? Jika saya ingin menentukan bahwa hanya data satu minggu terakhir yang harus direplikasi dari Pusat Data Operasi ke Pusat Data Analytics.
  3. Kami berencana menggunakan fitur time-to-live bawaan Cassandra untuk menghapus data (hanya dari operasi DC). Data yang dihapus dari Operations DC tidak boleh dihapus dari Analytics DC. Bagaimana cara mencegah replikasi data yang dihapus?

  4. Saya telah membaca bahwa satu node Cassandra dapat menangani data hingga 2-3 TB. Referensi terdokumentasi apa pun tentang implementasi Cassandra yang lebih besar akan membantu.

  5. Berapa banyak node Cassandra yang harus dikerahkan untuk menangani pertumbuhan tersebut? Dan apa strategi penerapan yang direkomendasikan?

  6. Pertimbangan kinerja: Meskipun penyimpanan di Operations DC akan terbatas (data 3-7 hari, sekitar 5-10 TB), penyimpanan data di Analytics DC bersifat kumulatif dan terus bertambah seiring waktu. Apakah pertumbuhan basis data di DC analitik akan memengaruhi replikasi dan menurunkan kinerja Operasi DC.

Tujuannya di sini adalah untuk mengetahui apakah fitur bawaan Cassandra dapat digunakan untuk mendukung persyaratan di atas. Saya mengetahui solusi yang paling jelas. Tidak ada replikasi antara dua DC. Buang data satu minggu terakhir dari Operations DC dan pindahkan ke Analytics DC.

Diagram arsitektur yang diusulkan


person Jyotin Ranpura    schedule 05.06.2018    source sumber
comment
Menyewa konsultan yang memiliki pengalaman menyimpan 10+ PB di Cassandra mungkin merupakan rencana yang lebih baik daripada meminta bantuan acak di situs Tanya Jawab internet.   -  person Aaron    schedule 06.06.2018
comment
Saya memahami saran Anda, Aaron. Sudah disorot ke Manajemen dan mereka akan mengerjakannya. Untuk saat ini, bantuan apa pun dari para ahli akan sangat kami hargai.   -  person Jyotin Ranpura    schedule 13.06.2018


Jawaban (2)


Saya pikir dalam kasus Anda masuk akal untuk "memisahkan" DC - ruang kunci di satu DC tidak direplikasi ke DC lain, misalnya - cukup buat ruang kunci dengan pengaturan replikasi terkait yang diperlukan.

Atau Anda dapat mereplikasi muatan "transaksional" ke kedua DC, dan memiliki pekerjaan yang secara berkala akan menyalin data dari ruang kunci "transaksional" ke ruang kunci "analitik", lalu menghapus data dari ruang kunci "transaksional" untuk mengosongkan ruang.

Namun tidak mungkin untuk memiliki sesuatu seperti yang Anda jelaskan, sampai Anda menggunakan sesuatu seperti Replikasi Lanjutan DSE (tapi ini bukan tentang DC, tetapi lebih tentang cluster terpisah).

person Alex Ott    schedule 05.06.2018
comment
Terima kasih Alex. Baca tentang Replikasi Lanjutan DSE dan sepertinya cocok. Saya ingin memperjelas pemahaman saya: Menyebarkan cluster terpisah - Satu cluster (Edge cluster) bertanggung jawab atas Penulisan dan cluster lain yang bertanggung jawab atas Baca (Central Hub). - Bisakah kita mengendalikan replikasi ini? Yang saya maksud dengan kontrol adalah menjadwalkan replikasi ini pada waktu tersebut. - Jika kami menghapus data dari cluster Edge, apakah data tersebut juga akan dihapus dari Central Hub? - Apakah cluster Edge memiliki kekuatan penuh Analytics pada semua data dari Central Hub? - person Jyotin Ranpura; 13.06.2018
comment
Ini adalah pertanyaan yang menarik, namun untuk menjawabnya diperlukan informasi lebih lanjut, dan keterlibatan spesialis AdvRep. Akan lebih baik jika Anda menghubungi DataStax untuk mengatur diskusi lebih mendalam mengenai persyaratan ini... - person Alex Ott; 15.06.2018

  1. No

  2. Ya, replikasi dikonfigurasi per keyspace.

  3. Ini tidak akan berhasil, tetapi dapat dibuat berhasil. Saya dapat memikirkan dua opsi yang relatif mudah. Cara termudah adalah dengan menulis secara batch ke kedua keyspaces/DC, satu dengan TTL dan satu tanpa . Anda juga berpotensi membuat keyspace per bulan/tahun, mulai dengan mereplikasinya ke beberapa DC, dan menghapus DC “normal” jika diperlukan.

  4. Kluster Cassandra - data kepadatan (ukuran data per node) - mencari masukan dan saran

  5. Cassandra dapat menampung hingga 800-1000 instance dalam sebuah cluster, namun sering kali disarankan untuk menggunakan shard yang lebih kecil dari itu demi kemudahan pengoperasian Anda sendiri

  6. DC bisa asimetris.

person Jeff Jirsa    schedule 26.06.2018