Replika dan instans

Artikel ini memberikan gambaran umum tentang siklus hidup replika layanan stateful dan instans layanan stateless.

Instans layanan stateless

Instans layanan stateless adalah salinan logika layanan yang berjalan pada salah satu node kluster. Instans dalam partisi secara unik diidentifikasi oleh InstanceId. Siklus hidup instans dimodelkan dalam diagram berikut:

Siklus hidup instans

InBuild (IB)

Setelah Manajer Sumber Daya Kluster menentukan penempatan untuk instans, berarti akan memasuki status siklus hidup ini. Instans dimulai pada node. Host aplikasi dimulai, instans dibuat, kemudian dibuka. Setelah startup selesai, instans akan beralih ke status siap.

Jika host aplikasi atau node untuk instans ini mengalami crash, maka akan beralih ke status yang hilang fungsi.

Siap (RD)

Dalam status siap, instans aktif dan berjalan pada node. Jika instans ini adalah layanan yang dapat diandalkan, RunAsync telah dipanggil.

Jika host aplikasi atau node untuk instans ini mengalami crash, maka akan beralih ke status yang hilang fungsi.

Penutupan (CL)

Dalam status penutupan, Azure Service Fabric sedang dalam proses mematikan instans pada node ini. Pematian ini mungkin karena banyak alasan--misalnya, peningkatan aplikasi, load balancing, atau layanan yang dihapus. Setelah pematian selesai, maka akan beralih ke status hilang fungsi.

Hilang fungsi (DD)

Dalam status hilang fungsi, instans tidak lagi berjalan pada node. Pada titik ini, Service Fabric mempertahankan metadata tentang instans ini, yang akhirnya dihapus juga.

Catatan

Dimungkinkan untuk beralih dari status apa pun ke status hilang fungsi menggunakan opsi ForceRemove pada Remove-ServiceFabricReplica.

Replika layanan stateful

Replika layanan stateful adalah salinan logika layanan yang berjalan pada salah satu node kluster. Selain itu, replika mempertahankan salinan status layanan tersebut. Dua konsep terkait menggambarkan siklus hidup dan perilaku replika stateful:

  • Siklus hidup replika
  • Peran replika

Diskusi berikut ini menjelaskan layanan stateful yang tetap ada. Untuk layanan stateful volatile (atau in-memory), status tidak berfungsi dan hilang fungsi adalah setara.

Siklus hidup replika

InBuild (IB)

Replika InBuild adalah replika yang dibuat atau disiapkan untuk bergabung dengan set replika. Tergantung peran replikanya, IB memiliki semantik yang berbeda.

Jika host aplikasi atau node untuk replika InBuild lumpuh, itu beralih ke status tidak berfungsi.

  • Replika Primary InBuild: InBuild Utama adalah replika pertama untuk partisi. Replika ini biasanya terjadi ketika partisi sedang dibuat. Replika Primary InBuild juga muncul ketika semua replika dari sebuah partisi dimulai ulang atau hilang fungsi.

  • Replika IdleSecondary InBuild: Ini adalah replika baru yang dibuat oleh Manajer Sumber Daya Kluster, atau replika yang ada yang tidak berfungsi dan perlu ditambahkan kembali ke dalam set. Replika ini disemai atau dibangun oleh primer sebelum mereka dapat bergabung dengan replika yang ditetapkan sebagai ActiveSecondary dan berpartisipasi dalam pengakuan kuorum operasi.

  • Replika ActiveSecondary InBuild: Status ini diamati dalam beberapa kueri. Ini adalah optimasi ketika set replika tidak berubah, tetapi replika perlu dibangun. Replika itu sendiri mengikuti transisi komputer status normal (seperti yang dijelaskan di bagian tentang peran replika).

Siap (RD)

Replika Ready adalah replika yang berpartisipasi dalam replikasi dan pengakuan kuorum operasi. Status siap berlaku untuk replika sekunder primer dan aktif.

Jika host aplikasi atau node untuk replika siap lumpuh, itu transisi ke status tidak berfungsi.

Penutupan (CL)

Replika memasuki status menutup dalam skenario berikut:

  • Mematikan kode untuk replika: Service Fabric mungkin perlu mematikan kode yang sedang berjalan untuk replika. Pematian ini mungkin karena berbagai alasan. Misalnya, itu bisa terjadi karena adanya peningkatan aplikasi, fabric, atau infrastruktur, atau karena kesalahan yang dilaporkan oleh replika. Ketika replika ditutup selesai, replika tersebut akan beralih ke status tidak berfungsi. Status bertahan yang terkait dengan replika ini yang tersimpan pada disk tidak dibersihkan.

  • Menghapus replika dari kluster: Service Fabric mungkin perlu menghapus status yang tetap ada dan mematikan kode yang sedang berjalan untuk suatu replika. Pematian ini mungkin karena berbagai alasan, misalnya load balancing.

Hilang fungsi (DD)

Dalam status hilang fungsi, instans tidak lagi berjalan pada node. Juga tidak ada status yang tersisa pada node. Pada titik ini, Service Fabric mempertahankan metadata tentang instans ini, yang akhirnya dihapus juga.

Tidak Berfungsi (D)

Dalam status tidak berfungsi, kode replika tidak berjalan, tetapi status tetap ada untuk replika itu ada pada node itu. Replika dapat tidak berfungsi karena banyak alasan -- misalnya, node yang tidak berfungsi, crash dalam kode replika, peningkatan aplikasi, atau kesalahan replika.

Replika tidak berfungsi dibuka oleh Service Fabric sesuai diperlukan, misalnya, ketika peningkatan selesai pada node.

Peran replika tidak relevan dalam status tidak berfungsi.

Pembukaan (OP)

Replika tidak berfungsi memasuki status pembukaan ketika Service Fabric perlu membawa replika kembali berfungsi lagi. Misalnya, status ini mungkin setelah peningkatan kode untuk aplikasi selesai pada sebuah node.

Jika host aplikasi atau node untuk replika pembuka mengalami crash, maka akan bertransisi ke status tidak berfungsi.

Peran replika tidak relevan dalam status pembukaan.

StandBy (SB)

Replika StandBy adalah replika layanan yang tetap ada yang menjadi tidak berfungsi dan kemudian dibuka. Replika ini mungkin digunakan oleh Service Fabric jika perlu menambahkan replika lain ke set replika (karena replika sudah memiliki sebagian status dan proses membangun lebih cepat). Setelah StandByReplicaKeepDuration berakhir, replika siaga akan dibuang.

Jika host aplikasi atau node untuk replika siaga mengalami lumpuh, maka akan beralih ke status tidak berfungsi.

Peran replika tidak relevan dalam status siaga.

Catatan

Setiap replika yang tidak menjadi tidak berfungsi atau hilang fungsi dianggap tetap berfungsi.

Catatan

Dimungkinkan untuk beralih dari status apa pun ke status hilang fungsi menggunakan opsi ForceRemove pada Remove-ServiceFabricReplica.

Peran replika

Peran replika menentukan fungsinya dalam set replika:

  • Primary (P) : Ada satu primer dalam set replika yang bertanggung jawab untuk melakukan operasi baca dan tulis.
  • ActiveSecondary (S) : Ini adalah replika yang menerima pembaruan status dari primer, menerapkannya, lalu mengirim kembali pengakuan. Ada beberapa sekunder aktif dalam set replika. Jumlah sekunder aktif ini menentukan jumlah kesalahan yang dapat ditangani layanan.
  • IdleSecondary (I) : Replika ini sedang dibangun oleh primer. Mereka menerima status dari primer sebelum dapat dipromosikan ke sekunder aktif.
  • None (N) : Replika ini tidak memiliki tanggung jawab dalam set replika.
  • Unknown (U) : Ini adalah peran awal replika sebelum menerima panggilan API ChangeRole dari Service Fabric.

Diagram berikut mengilustrasikan transisi peran replika dan beberapa skenario contoh kemungkinan terjadinya:

Peran replika

  • U -> P: Pembuatan replika utama baru.
  • U -> I: Pembuatan replika idle baru.
  • U -> N: Penghapusan replika siaga.
  • I -> S: Promosi sekunder idle ke sekunder aktif sehingga pengakuannya berkontribusi terhadap kuorum.
  • I -> P: Promosi dari idle sekunder ke primer. Ini dapat terjadi dengan konfigurasi ulang khusus ketika sekunder idle adalah kandidat yang benar untuk menjadi primer.
  • I -> N: Penghapusan replika sekunder idle.
  • S -> P: Promosi dari aktif sekunder ke primer. Ini dapat disebabkan oleh kegagalan primer atau gerakan primer yang diinisialisasi oleh Cluster Resource Manager. Misalnya, ini mungkin sebagai respons terhadap peningkatan aplikasi atau load balancing.
  • S -> N: Penghapusan replika sekunder aktif.
  • P -> S: Penurunan tingkat replika utama. Ini dapat disebabkan oleh gerakan utama yang diinisialisasi oleh Cluster Resource Manager. Misalnya, ini mungkin sebagai respons terhadap peningkatan aplikasi atau load balancing.
  • P -> N: Penghapusan replika utama.

Catatan

Model pemrograman tingkat lebih tinggi, seperti Pelaku Andal dan Layanan Tepercaya, menyembunyikan konsep peran replika dari pengembang. Dalam Pelaku, gagasan peran tidak perlu. Dalam Layanan, sebagian besar disederhanakan untuk sebagian besar skenario.

Langkah berikutnya

Untuk informasi selengkapnya tentang konsep Service Fabric, lihat artikel berikut ini:

Siklus hidup Layanan Tepercaya - C#