Önceki bölümde, Service Fabric'in en düşük iki kavramından bahsetmiştik; biri donanım seviyesinde Node Tipi ve Node'dur. Diğeri ise Uygulama.
Node Tipi, dağıtıcı makinelerin kavramsal soyutlamaları olan bir düğüm koleksiyonudur. Service Fabric için, bir düğüm fiziksel bir makine, sanal makine veya hatta şu anda en popüler konteyner olabilir.
Node Tipi üzerinde çalışan Uygulama (Uygulama) olarak kullanılır. Bu, sistem yazılımı düzeyinde soyut bir anlayıştır. Bir uygulamada birden fazla Mikro Hizmet bulunur. Service Fabric'in temel hizmetleri, örneğin FailoverManager Service ve Adlandırma Servisi, Mikro Servislerdir.
Service Fabric'in tüm dağıtık özellikleri Micro Service dağıtımlarına karşılık gelir. Bir Micro Service'in kaç kez çalışması gerektiğini, kaç düğümde çalışması gerektiğini dinamik olarak ayarlayabiliriz; yük baskısını dağıtabilir veya felaket kurtarma yedekleri gerçekleştirebiliriz. Her örnek farklı bir portu dinler ve yük dengeleme katmanı istekleri farklı örneklere dağıtır.
Gerçek senaryo
Eyalet Hizmeti, Mikro Hizmetlerden biridir.
Stateful Service'i tanıtmaya başlamadan önce, aşağıdaki yaygın iş senaryolarını ele alalım.
Web sitenizde alışveriş sepeti özelliği eklemeyi düşünüyorsunuz. Giriş yaptıktan sonra, kullanıcılar bazı ürünleri alışveriş sepetlerine koyacak.
Kullanıcı bir sonraki giriş yaptığında, ön masa sayfası alışveriş sepeti hizmetini arayacak ve bu hizmetten kaydedilen alışveriş sepeti verilerini tekrar okuyup göstermesi gerekir.
Eğer öyleyse, bunu nasıl başarırdınız?
Kullanıcı sayısı çok fazla değilse, veritabanına bir alışveriş sepeti tablosu ekleyip kullanıcı tablosuyla ilişkilendireceğiz. Sepet tablosunda bir kullanıcı kimliği alanı bulunur ve büyük miktarda kullanıcı sepeti verisi kaydedilir.
Bu da bazı takip sorunları getirecek.
Kullanıcı sayısı artmaya devam ederse, veritabanı tablolarının performansı düşmeye devam eder. Veri kaybı durumunda veritabanı tablosu verileri düzenli olarak yedeklenmelidir Veritabanı performansında bir sorun varsa, tablo çürütülmeli veya hatta bölümlendirilmelidir Alışveriş sepeti sistemi veritabanındaki herhangi bir ayarlamayı yönetmek zorunda, hatta yük dengesi gerektirebilir Bu sorunun kötü, sistemin kendisinin baştan ölçeklenebilir olacak şekilde tasarlanmamış olmasıdır. Ayrıca, veritabanları potansiyel bir darboğaz ve performans için tehdit oluşturuyor.
Devlet Hizmeti
Böyle tamamen yeni bir mimariyi düşünelim.
Başlangıçtan itibaren, alışveriş sepeti sistemi tüm talepleri yöneten 36 alt hizmete sahiptir (36 hizmet, çünkü kullanıcı kimliğinin baş harfleri 0-9 a-z arasındadır, toplamda 36).
Kullanıcının talebi, belirli bir alt servisin kullanıcı kimliğinin ilk hash'ına göre işlenir.
Alt hizmet, alışveriş sepeti verilerini hafif bir veritabanı aracılığıyla kendi içinde saklar ve kendi depolama cihazında tutar.
Her alt servisin ayrıca 3 yedek vardır; bunlar sürekli olarak depolanan verileri senkronize eder ve bu yedeklemeler her zaman farklı düğümlerde çalışır.
Aynı zamanda, istekleri aktivasyon durumu olarak işlemekten yalnızca bir yedekleme sorumludur ve yedekleme etkinleştirilmekte bir sorun olduğunda, diğer iki yedek zamanlama algoritmasına göre birini etkinleştirir.
Felaket kurtarma alt sistemi, alt hizmetin her zaman 3 sağlıklı yedekliğe sahip olmasını sağlamak için yeni bir yedekleme oluşturur.
Stateful Service bu çözümlerden biridir.
Yukarıdaki senaryoya dönersek, alışveriş sepeti sistemi eyalet içi bir hizmettir.
36 alt sistem, bu Durumlu Hizmetin 36 örneğidir ve buna Bölümler diyoruz.
Her alt sistemin altındaki yedek Replikadır ve bir bölümde 3 Replika bulunur.
Şu anda aktif olan yedekleme Aktif Replika, iki aktif olmayan bekleme yedeklemesi ise İkincil Replikadır.
Aynı Partiyon'un her replikası farklı bir düğümde çalışmalıdır.
Durumlu Hizmet kodu, <T>verileri kaydetmek ve dahili senkronize etmek > IReliableCollection, IReliableDictionary< T1 ve T2 gibi arayüzleri kullanır.
Ayrıca, Stateful Service aşağıdaki özellikleri de uygulayabilir:
Yukarıdaki tüm sayılar sıfırlanabilir ve kart sisteminde daha fazla stres yüklemek için yüzlerce bölme oluşturabilirsiniz. Daha sağlam bir performans sağlamak için bölüm başına 5 veya daha fazla replika bile yapabilirsiniz. Hardış sistemler, Stateful Service'in kaç bölüm olduğuna aldırmaz, bölüm anahtarıyla çağrılırlar. Bölüm anahtarı ve ilgili bölüm, temel Hizmet Dokusu Mikro Servisi tarafından çözülür. Örneğin, işinizde birkaç milyon kullanıcınız olabilir ama sadece 5 bölüm kurabilirsiniz. Alışveriş sepeti Stateful Service çağrıldığında, harici sistem sadece kullanıcı kimliğini (bölüm anahtarı) ve kaydedilen verileri bilgilendirmek zorunda kalır. Bu istek, kullanıcı kimliği ve hash algoritmasına göre otomatik olarak beş bölümden birine eşlenir. Stateful Services'te veri işlemleri işlemleri destekler. Yani başarısızlıkta geri alabilirsiniz
Umarım yukarıdaki giriş size Stateful Service'i daha iyi anlamanıza yardımcı olur.
Eyalet Hizmeti için kod örneklerini aşağıdaki bölümlerde ele alacağız. |