Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Birden çok hizmette bir dizi yerel işlemi koordine ederek dağıtılmış sistemlerde veri tutarlılığını koruyun. Her hizmet kendi işlemini gerçekleştirir ve bir sonraki adımı olaylar veya iletiler aracılığıyla tetikler. Bir adım başarısız olursa, bir dizi telafi işlemi tamamlanan adımların yaptığı değişiklikleri geri alır.
Bağlam ve sorun
işlem birden çok işlem içerebilen bir iş birimini temsil eder. bir işlem içinde, olay bir varlığı etkileyen durum değişikliğine başvurur. bir komutu bir eylem gerçekleştirmek veya sonraki bir olayı tetiklemek için gereken tüm bilgileri kapsüller.
İşlemler, bölünmezlik, tutarlılık, yalıtım ve dayanıklılık (ACID) ilkelerine uymalıdır.
- Bölünmezlik: Tüm işlemler başarılı olur veya hiçbir işlem başarılı olmaz.
- Tutarlılığı: Veriler geçerli bir durumdan başka bir geçerli duruma geçer.
- Yalıtımı: Eşzamanlı işlemler sıralı işlemlerle aynı sonuçları verir.
- Dayanıklılık: Değişiklikler, hatalar oluştuğunda bile işlendikten sonra da devam eder.
Tek bir hizmette işlemler ACID ilkelerini izler çünkü bunlar tek bir veritabanında çalışır. Ancak, birden çok hizmette ACID uyumluluğu elde etmek daha karmaşık olabilir.
Mikro hizmet mimarilerindeki zorluklar
Mikro hizmet mimarileri genellikle her mikro hizmete ayrılmış birveritabanı atar. Bu yaklaşım çeşitli avantajlar sağlar:
- Her hizmet kendi verilerini kapsüller.
- Her hizmet, özel ihtiyaçları için en uygun veritabanı teknolojisini ve şemasını kullanabilir.
- Her hizmetin veritabanları bağımsız olarak ölçeklendirilebilir.
- Bir hizmetteki hatalar diğer hizmetlerden yalıtılır.
Bu avantajlara rağmen, bu mimari hizmetler arası veri tutarlılığını karmaşıklaştırır. ACID gibi geleneksel veritabanı garantileri, bağımsız olarak yönetilen birden çok veri deposu için doğrudan geçerli değildir. Bu sınırlamalar nedeniyle, işlemler arası iletişime veya iki aşamalı işleme protokolü gibi geleneksel işlem modellerine dayanan mimariler genellikle Saga deseni için daha uygundur.
Çözüm
Saga deseni, yerel işlemler dizisine bölerek işlemleri yönetir.
Her yerel işlem:
- Tek bir hizmet içinde atomik olarak çalışmasını tamamlar.
- Hizmetin veritabanını güncelleştirir.
- Bir sonraki işlemi bir olay veya ileti aracılığıyla başlatır.
Yerel bir işlem başarısız olursa, saga, önceki yerel işlemlerin yaptığı değişiklikleri tersine çevirmek için bir dizi telafi edici işlem gerçekleştirir.
Saga düzenindeki temel kavramlar
Telafi edilebilir işlemler ters etkiye sahip diğer işlemler tarafından geri alınabilir veya telafi edilebilir. Destandaki bir adım başarısız olursa telafi işlemleri telafi edilebilir işlemlerin yaptığı değişiklikleri geri alır.
Pivot işlemleri destanda geri dönüşü olmayan noktayı oluşturur. Bir pivot işlemi başarılı olduktan sonra, telafi edilebilir işlemler artık geçerliliğini yitirir. Sistemin tutarlı bir son duruma ulaşması için sonraki tüm eylemlerin tamamlanması gerekir. Bir pivot işlemi, saga’nın akışına bağlı olarak farklı roller üstlenebilir:
geri alınamaz veya telafi edilemeyen işlemler geri alınamaz veya yeniden denenemez.
Geri alınabilen ile kesinleştirilmiş arasındaki sınır, pivot işleminin geri alınabilen veya telafi edilebilir son işlem olabileceği anlamına gelir. Ya da saga’daki ilk yeniden denenebilen işlem olabilir.
Yeniden denenebilir işlemler, pivot işlemi izler. Yeniden denenebilir işlemler idempotenttir ve geçici hatalar meydana gelse bile saga'nın nihai durumuna ulaşabilmesini sağlamaya yardımcı olur. Destanın sonunda tutarlı bir duruma ulaşmasına yardımcı olurlar.
Saga uygulama yaklaşımları
İki tipik saga uygulama yaklaşımı koreografi ve orkestrasyondur. Her yaklaşımın iş akışını koordine etmek için kendi zorlukları ve teknolojileri vardır.
Koreografi
Koreografi yaklaşımında hizmetler olayları merkezi bir denetleyici olmadan değiştirir. Koreografide her yerel işlem, diğer hizmetlerdeki yerel işlemleri tetikleyen alan olaylarını yayımlar.
koreografi kullanarak bir destan gösteren 
| Koreografinin faydaları | Koreografinin dezavantajları |
|---|---|
| Az sayıda hizmeti olan ve koordinasyon mantığı gerektirmeyen basit iş akışları için iyidir. | Yeni adımlar eklediğinizde iş akışı kafa karıştırıcı olabilir. Her bir saga katılımcının hangi komutlara yanıt verdiğini izlemek zordur. |
| Koordinasyon için başka hizmet gerekmez. | Saga katılımcıları arasında döngüsel bağımlılık riski vardır çünkü birbirlerinin komutlarını kullanmaları gerekir. |
| Sorumluluklar saga katılımcıları arasında dağıtıldığından tek bir hata noktası sunmaz. | Tümleştirme testi zordur çünkü tüm hizmetlerin bir işlemin benzetimini yapmak için çalıştırılması gerekir. |
Orkestrasyon
Düzenlemede, merkezi bir denetleyici veya düzenleyici tüm işlemleri işler ve katılımcılara olaylara göre hangi işlemin gerçekleştirileceklerini bildirir. Orkestratör, saga isteklerini yürütür, her bir görevin durumunu depolar ve yorumlar ve telafi edici işlemleri kullanarak hata kurtarmayı yönetir.
| Düzenlemenin avantajları | Orkestrasyonun dezavantajları |
|---|---|
| Karmaşık iş akışları veya yeni hizmetler eklediğinizde daha uygundur. | Diğer tasarım karmaşıklığı için koordinasyon mantığının uygulanması gerekir. |
| Orchestrator akışı yönettiğinden döngüsel bağımlılıklardan kaçınıyor. | Düzenleyici iş akışının tamamını yönettiğinden hata noktasına neden olur. |
| Sorumlulukların net bir şekilde ayrılması hizmet mantığını basitleştirir. |
Sorunlar ve dikkat edilmesi gerekenler
Bu düzenin nasıl uygulaneceğine karar velarken aşağıdaki noktaları göz önünde bulundurun:
Tasarım düşüncesinde değişim: Saga desenini benimsemek farklı bir bakış açısı gerektirir. Birden çok mikro hizmette işlem koordinasyonu ve veri tutarlılığı üzerinde odaklanmanızı gerektirir.
Hata ayıklama destanlarının karmaşıklığı: Hata ayıklama destanları, özellikle katılan hizmetlerin sayısı arttıkça karmaşık olabilir.
Geri alınamaz yerel veritabanı değişiklikleri: Veriler geri alınamıyor çünkü saga katılımcıları ilgili veritabanlarında değişiklikler işliyor.
Geçici hataların ele alınması ve idempotentlik: Sistem, geçici hataları etkili bir şekilde ele almalı ve idempotentliği, yani aynı işlemin tekrarlanmasının sonucu değiştirmemesini sağlamalıdır. Daha fazla bilgi için bkz. İdempotent ileti işleme.
Sagaların izlenmesi ve takip edilmesi gereksinimi: Bir saga’nın iş akışını izlemek ve takip etmek, operasyonel denetimi sürdürmek için temel görevlerdir.
Telafi işlemlerinin sınırlamaları: Telafi işlemleri her zaman başarılı olmayabilir ve bu da sistemi tutarsız bir durumda bırakabilir.
Destanlardaki olası veri anomalileri
Veri anomalileri, saga’lar birden çok hizmette çalıştığında ortaya çıkabilen tutarsızlıklardır. Her hizmet katılımcı verileri olarak adlandırılan kendi verilerini yönettiğinden, hizmetler arasında yerleşik yalıtım yoktur. Bu kurulum, kısmen uygulanan güncelleştirmeler veya hizmetler arasındaki çakışmalar gibi veri tutarsızlıklarına veya dayanıklılık sorunlarına neden olabilir. Tipik sorunlar şunlardır:
Kaybolan güncellemeler: Bir saga, başka bir saga tarafından yapılan değişiklikleri dikkate almadan verileri değiştirdiğinde, güncellemelerin üzerine yazılmasına veya kaybolmasına yol açar.
Kirli okumalar: Bir saga veya işlem, başka bir saga tarafından değiştirilmiş verileri okuduğunda, ancak bu değişiklik henüz tamamlanmamışsa.
Belirsiz veya tekrarlanamayan okumalar: Saga içindeki farklı adımlar, okumalar arasında güncellemeler gerçekleştiğinde tutarsız veriler okur.
Veri anomalilerini ele almak için stratejiler
Bu anomalileri azaltmak veya önlemek için aşağıdaki karşı önlemleri göz önünde bulundurun:
Anlamsal kilitleme: Bir saga'nın telafi edilebilir işlemi, bir güncellemenin sürmekte olduğunu belirtmek için bir semafor kullanıyorsa uygulama düzeyinde kilitler kullanın.
Değişmeli güncellemeler: Güncellemeleri, hangi sırayla uygulanırlarsa uygulansınlar yine aynı sonucu verecek şekilde tasarlayın. Bu yaklaşım, destanlar arasındaki çakışmaları azaltmaya yardımcı olur.
Kötümser yaklaşım: Kirli okumaları ortadan kaldırmak için, saga akışını veri güncellemeleri yeniden denenebilir işlemlerde gerçekleşecek şekilde yeniden sıralayın. Aksi takdirde, bir saga kirli verileri veya henüz commit edilmemiş değişiklikleri okuyabilirken, başka bir saga da aynı anda güncellemelerini geri almak için telafi edici bir işlem gerçekleştirebilir.
Yeniden okuma değerlerini : Güncelleştirmeleri yapmanızdan önce verilerin değişmeden kaldığını onaylayın. Veriler değişirse geçerli adımı durdurun ve gerektiğinde saga'yı yeniden başlatın.
Sürüm dosyaları: Bir kayıtta gerçekleştirilen tüm işlemlerin günlüğünü koruyun ve çakışmaları önlemek için bunların doğru sırada gerçekleştirildiğinden emin olun.
Değere göre Risk tabanlı eşzamanlılık: Olası iş riskine göre uygun eşzamanlılık mekanizmasını dinamik olarak seçin. Örneğin, düşük riskli güncellemeler için saga düzenini, yüksek riskli güncellemeler için ise dağıtılmış işlemi kullanın.
Bu desen ne zaman kullanılır?
Şu durumlarda bu düzeni kullanın:
- Sıkı bir bağlama olmadan dağıtılmış bir sistemde veri tutarlılığı sağlamanız gerekir.
- İşlem dizisindeki işlemlerden biri başarısız olursa geri almanız veya telafi etmeniz gerekir.
Bu düzen aşağıdaki durumlarda uygun olmayabilir:
- İşlemler sıkı sıkıya bağlıdır.
- Telafi işlemleri önceki katılımcılarda gerçekleşir.
- Döngüsel bağımlılıklar vardır.
Sonraki adım
İlgili kaynaklar
Bu deseni uyguladığınızda aşağıdaki desenler uygun olabilir:
Koreografi düzeni, merkezi bir denetim noktasına güvenmek yerine sistemin her bileşeni bir iş işleminin iş akışıyla ilgili karar alma sürecine katılır.
Telafi İşlemi düzeni bir dizi adım tarafından gerçekleştirilen işleri geri alır ve bir veya daha fazla adım başarısız olursa tutarlı bir işlem tanımlar. Karmaşık iş süreçleri ve iş akışları uygulayan bulutta barındırılan uygulamalar genelliklebu
nihai tutarlılık modelini izler. Yeniden Deneme düzeni, uygulamanın başarısız işlemi saydam bir şekilde yeniden deneyerek bir hizmete veya ağ kaynağına bağlanmaya çalıştığında geçici hataları işlemesine olanak tanır. Bu desen, uygulamanın kararlılığını artırabilir.
Devre Kesici deseni, uzak bir hizmete veya kaynağa bağlandığınızda giderilmesi farklı süreler alabilen hataları ele alır. Bu düzen, bir uygulamanın kararlılığını ve dayanıklılığını artırabilir.
Sistem Durumu Uç Noktası İzleme düzeni, dış araçların belirli aralıklarla kullanıma sunulan uç noktalar üzerinden erişebildiği bir uygulamada işlevsel denetimler uygular. Bu düzen, uygulamaların ve hizmetlerin doğru performans sergilediğini doğrulamanıza yardımcı olabilir.