Aracılığıyla paylaş


Çoğaltmalar ve örnekler

Bu makale, durum bilgisi olan hizmetlerin çoğaltmalarının yaşam döngüsüne ve durum bilgisi olmayan hizmetlerin örneklerine genel bir bakış sağlar.

Durum bilgisi olmayan hizmetlerin örnekleri

Durum bilgisi olmayan bir hizmetin örneği, kümenin düğümlerinden birinde çalışan hizmet mantığının bir kopyasıdır. Bir bölümdeki örnek, InstanceId değeriyle benzersiz bir şekilde tanımlanır. Örneğin yaşam döngüsü aşağıdaki diyagramda modellenmiştir:

Örnek yaşam döngüsü

InBuild (IB)

Küme Resource Manager örnek için bir yerleşim belirledikten sonra bu yaşam döngüsü durumuna girer. Örnek düğümde başlatılır. Uygulama konağı başlatılır, örnek oluşturulur ve sonra açılır. Başlatma tamamlandıktan sonra örnek hazır duruma geçirilmiştir.

Bu örneğin uygulama konağı veya düğümü kilitleniyorsa bırakılan duruma geçiş yapılır.

Hazır (RD)

Hazır durumda, örnek düğümde çalışır durumdadır. Bu örnek güvenilir bir hizmetse RunAsync çağrıldı.

Bu örneğin uygulama konağı veya düğümü kilitleniyorsa bırakılan duruma geçiş yapılır.

Kapanış (CL)

Kapatma durumunda, Azure Service Fabric bu düğümdeki örneği kapatma sürecindedir. Bu kapatma işlemi, uygulama yükseltmesi, yük dengeleme veya hizmetin silinmesi gibi birçok nedenden kaynaklanıyor olabilir. Kapatma işlemi tamamlandıktan sonra bırakılan duruma geçiş yapılır.

Bırakılan (DD)

Bırakılan durumda, örnek artık düğümde çalışmıyor. Bu noktada, Service Fabric bu örnekle ilgili meta verileri tutar ve sonunda da silinir.

Not

üzerinde Remove-ServiceFabricReplicaForceRemove seçeneğini kullanarak herhangi bir durumdan bırakılan duruma geçiş yapmak mümkündür.

Durum bilgisi olan hizmetlerin çoğaltmaları

Durum bilgisi olan bir hizmetin çoğaltması, kümenin düğümlerinden birinde çalışan hizmet mantığının bir kopyasıdır. Ayrıca, çoğaltma bu hizmetin durumunun bir kopyasını tutar. durum bilgisi olan çoğaltmaların yaşam döngüsünü ve davranışını açıklayan iki ilgili kavram:

  • Çoğaltma yaşam döngüsü
  • Çoğaltma rolü

Aşağıdaki tartışmada kalıcı durum bilgisi olan hizmetler açıklanmaktadır. Geçici (veya bellek içi) durum bilgisi olan hizmetler için aşağı ve bırakılan durumlar eşdeğerdir.

Çoğaltma yaşam döngüsü

InBuild (IB)

InBuild çoğaltması, oluşturulan veya çoğaltma kümesini birleştirmeye hazırlanan bir çoğaltmadır. Çoğaltma rolüne bağlı olarak, IB'nin farklı semantiği vardır.

Bir InBuild çoğaltması için uygulama konağı veya düğümü kilitleniyorsa, aşağı duruma geçiş yapılır.

  • Birincil InBuild çoğaltmaları: Birincil InBuild, bir bölümün ilk çoğaltmalarıdır. Bu çoğaltma genellikle bölüm oluşturulurken gerçekleşir. Birincil InBuild çoğaltmaları, bir bölümün tüm çoğaltmaları yeniden başlatıldığında veya bırakıldığında da ortaya çıkar.

  • IdleSecondary InBuild çoğaltmaları: Bunlar, Küme Resource Manager tarafından oluşturulan yeni çoğaltmalardır ya da devre dışı kalan ve kümeye yeniden eklenmesi gereken mevcut çoğaltmalardır. Bu çoğaltmalar, çoğaltma kümesini ActiveSecondary olarak birleştirmeden ve işlemlerin çekirdek onayına katılmadan önce birincil tarafından çekirdeklenir veya oluşturulur.

  • ActiveSecondary InBuild çoğaltmaları: Bu durum bazı sorgularda gözlemlenir. Bu, çoğaltma kümesinin değişmediği ancak bir çoğaltmanın derlenmesi gereken bir iyileştirmedir. Çoğaltmanın kendisi normal durum makinesi geçişlerini izler (çoğaltma rolleri bölümünde açıklandığı gibi).

Hazır (RD)

Hazır çoğaltma, çoğaltmaya ve işlemlerin çekirdek onayına katılan bir çoğaltmadır. Hazır durum birincil ve etkin ikincil çoğaltmalar için geçerlidir.

Uygulama konağı veya hazır bir çoğaltmanın düğümü kilitlenirse, aşağı duruma geçiş yapılır.

Kapanış (CL)

Çoğaltma aşağıdaki senaryolarda kapanış durumuna girer:

  • Çoğaltmanın kodu kapatılıyor: Service Fabric'in bir çoğaltma için çalışan kodu kapatması gerekebilir. Bu kapatmanın birçok nedeni olabilir. Örneğin, bir uygulama, yapı veya altyapı yükseltmesi veya çoğaltma tarafından bildirilen bir hata nedeniyle bu durum oluşabilir. Çoğaltma kapatıldığında, çoğaltma aşağı duruma geçirildi. Diskte depolanan bu çoğaltmayla ilişkilendirilmiş kalıcı durum temizlenmez.

  • Çoğaltma kümeden kaldırılıyor: Service Fabric'in kalıcı durumu kaldırması ve bir çoğaltma için çalışan kodu kapatması gerekebilir. Bu kapatma, yük dengeleme gibi birçok nedenden dolayı olabilir.

Bırakılan (DD)

Bırakılan durumda, örnek artık düğümde çalışmıyor. Düğümde de durum kalmadı. Bu noktada, Service Fabric bu örnekle ilgili meta verileri tutar ve sonunda da silinir.

Aşağı (D)

Aşağı durumda, çoğaltma kodu çalışmıyor, ancak söz konusu çoğaltmanın kalıcı durumu söz konusu düğümde var. Bir çoğaltmanın kapalı olmasının birçok nedeni olabilir; örneğin, düğümün kapalı olması, çoğaltma kodunda kilitlenme, uygulama yükseltmesi veya çoğaltma hataları.

Service Fabric tarafından, örneğin düğümde yükseltme tamamlandığında, aşağı çoğaltma gerektiği gibi açılır.

Çoğaltma rolü aşağı durumda uygun değil.

Açma (OP)

Service Fabric'in çoğaltmayı yeniden yedeklemesi gerektiğinde aşağı çoğaltma açılış durumuna girer. Örneğin, bu durum bir düğümde uygulama için kod yükseltmesi tamamlandıktan sonra olabilir.

Uygulama konağı veya bir açılış çoğaltması düğümü kilitleniyorsa, aşağı duruma geçiş yapılır.

Çoğaltma rolü açılış durumunda uygun değil.

Bekleme (SB)

Bekleme çoğaltması, kapalı olan ve sonra açılan kalıcı bir hizmetin çoğaltmasıdır. Bu çoğaltma, çoğaltma kümesine başka bir çoğaltma eklemesi gerekiyorsa Service Fabric tarafından kullanılabilir (çoğaltma zaten durumun bir bölümüne sahip olduğundan ve derleme işlemi daha hızlı olduğundan). StandByReplicaKeepDuration süresi dolduktan sonra bekleme çoğaltması atılır.

Hazır bekleyen çoğaltmanın uygulama konağı veya düğümü kilitleniyorsa, aşağı duruma geçiş yapılır.

Çoğaltma rolü bekleme durumunda ilgili değildir.

Not

Kapalı veya bırakılmamış tüm çoğaltmaların yukarı olduğu kabul edilir.

Not

üzerindeki Remove-ServiceFabricReplicaForceRemove seçeneğini kullanarak herhangi bir durumdan bırakılan duruma geçiş yapılabilir.

Çoğaltma rolü

Çoğaltmanın rolü, çoğaltma kümesindeki işlevini belirler:

  • Birincil (P): Çoğaltma kümesinde okuma ve yazma işlemlerinin gerçekleştirilmesinden sorumlu olan bir birincil vardır.
  • ActiveSecondary (S):Bunlar birincilden durum güncelleştirmeleri alan, bunları uygulayan ve sonra geri onaylar gönderen çoğaltmalardır. Çoğaltma kümesinde birden çok etkin ikincil vardır. Bu etkin ikincillerin sayısı, hizmetin işleyebileceği hata sayısını belirler.
  • IdleSecondary (I):Bu çoğaltmalar birincil çoğaltma tarafından oluşturuluyor. Etkin ikincil olarak yükseltilmeden önce birincilden durum alır.
  • Hiçbiri (N): Bu çoğaltmaların çoğaltma kümesinde bir sorumluluğu yoktur.
  • Bilinmiyor (U):Bu, Service Fabric'ten herhangi bir ChangeRole API çağrısı almadan önce çoğaltmanın ilk rolüdür.

Aşağıdaki diyagramda çoğaltma rolü geçişleri ve bunların oluşabileceği bazı örnek senaryolar gösterilmektedir:

Çoğaltma rolü

  • U -> P: Yeni bir birincil çoğaltma oluşturma.
  • U -> I: Boşta yeni bir çoğaltma oluşturma.
  • U -> N: Hazır bekleyen çoğaltma silindi.
  • I -> S: Onaylarının çekirdek düzeyine katkıda bulunabilmesi için boşta olan ikincilin etkin ikincile yükseltilme.
  • I -> P: Boşta olan ikincilin birincile yükseltılması. Boşta kalan ikincil birincil olmak için doğru aday olduğunda, özel yeniden yapılandırmalar altında bu durum oluşabilir.
  • I -> N: Boşta kalan ikincil çoğaltma silindi.
  • S -> P: Etkin ikincilin birincile yükseltılması. Bunun nedeni birincil hareketin yük devretmesi veya Küme Resource Manager tarafından başlatılan birincil hareket olabilir. Örneğin, bir uygulama yükseltmesine veya yük dengelemesine yanıt olarak olabilir.
  • S -> N: Etkin ikincil çoğaltmanın silinmesi.
  • P -> S: Birincil çoğaltmanın indirgemesi. Bunun nedeni Küme Resource Manager tarafından başlatılan birincil bir hareket olabilir. Örneğin, bir uygulama yükseltmesine veya yük dengelemesine yanıt olarak olabilir.
  • P -> N: Birincil çoğaltma silindi.

Not

Reliable Actors ve Reliable Services gibi üst düzey programlama modelleri, çoğaltma rolleri kavramını geliştiriciden gizler. Aktörler'de rol diye bir şey olması gereksizdir. Hizmetler'de çoğu senaryo için büyük ölçüde basitleştirilmiştir.

Sonraki adımlar

Service Fabric kavramları hakkında daha fazla bilgi için aşağıdaki makaleye bakın:

Reliable Services yaşam döngüsü - C#