Pengenalan Reliable Collections di layanan berstatus Azure Service Fabric

Reliable Collections memungkinkan Anda menulis aplikasi cloud yang sangat tersedia, dapat diskalakan, dan latensi rendah seolah-olah Anda menulis aplikasi komputer tunggal. Kelas di namespace Microsoft.ServiceFabric.Data.Collections menyediakan set koleksi yang secara otomatis membuat status Anda sangat tersedia. Pengembang hanya perlu memprogram Reliable Collection API dan membiarkan Reliable Collections mengelola status yang direplikasi dan lokal.

Perbedaan utama antara Reliable Collections dan teknologi ketersediaan tinggi lainnya (seperti Redis, layanan Azure Table, dan layanan Azure Queue) adalah bahwa status disimpan secara lokal dalam instans layanan sementara juga dibuat sangat tersedia. Ini berarti bahwa:

  • Semua baca adalah lokal, yang menghasilkan baca latensi rendah dan throughput tinggi.
  • Semua tulis mengeluarkan jumlah minimum IPO jaringan, yang menghasilkan tulis latensi rendah dan throughput tinggi.

Image of evolution of collections.

Reliable Collections dapat dianggap sebagai evolusi alami kelas System.Collections: set koleksi baru yang dirancang untuk aplikasi cloud dan multi-komputer tanpa meningkatkan kompleksitas bagi pengembang. Dengan demikian, Reliable Collections adalah:

  • Direplikasi: Perubahan status direplikasi untuk ketersediaan tinggi.
  • Asinkron: API tidak sinkron untuk memastikan bahwa utas tidak diblokir saat menimbulkan IO.
  • Transaksional: API menggunakan abstraksi transaksi sehingga Anda dapat mengelola beberapa Reliable Collections dalam layanan dengan mudah.
  • Tetap atau Volatil: Data dapat disimpan ke disk untuk durabilitas terhadap pemadaman skala besar (misalnya, pemadaman listrik pusat data). Beberapa Reliable Collections juga mendukung mode volatil (dengan Caveats) di mana semua data disimpan dalam memori, seperti cache dalam memori yang direplikasi.

Koleksi yang Andal memberikan jaminan konsistensi yang kuat di luar kotak untuk membuat penalaran tentang status aplikasi lebih mudah. Konsistensi yang kuat dicapai dengan memastikan transaksi berkomitmen selesai hanya setelah seluruh transaksi dicatat pada kuorum mayoritas replika, termasuk primer. Untuk mencapai konsistensi yang lebih lemah, aplikasi dapat mengakui kembali kepada klien/pemohon sebelum penerapan asinkron kembali.

Reliable Collections API adalah evolusi API koleksi bersamaan (ditemukan di namespace System.Collections.Concurrent):

  • Asinkron: Mengembalikan tugas karena, tidak seperti kumpulan bersamaan, operasi direplikasi dan bertahan.
  • Parameter tidak keluar: Menggunakan ConditionalValue<T> untuk mengembalikan bool dan nilai a sebagai ganti parameter keluar. ConditionalValue<T> seperti Nullable<T> tetapi tidak mengharuskan T untuk menjadi struct.
  • Transaksi: Menggunakan objek transaksi untuk memungkinkan pengguna untuk mengelompokkan tindakan pada beberapa Reliable Collections dalam transaksi.

Saat ini, Microsoft.ServiceFabric.Data.Collections berisi tiga koleksi:

  • Reliable Dictionary: Mewakili koleksi pasangan kunci/nilai yang direplikasi, transaksional, dan asinkron. Mirip dengan ConcurrentDictionary, baik kunci dan nilainya bisa dari jenis apa pun.
  • Reliable Queue: Mewakili antrean first-in, first-out (FIFO) yang direplikasi, transaksional, dan asinkron. Mirip dengan ConcurrentQueue, nilainya bisa dari jenis apa pun.
  • Reliable Concurrent Queue: Mewakili upaya terbaik yang direplikasi, transaksional, dan asinkron yang memerintahkan antrean untuk throughput tinggi. Mirip dengan ConcurrentQueue, nilainya bisa dari jenis apa pun.

Langkah berikutnya