Skip to content

etartar/SagaChoreographyPattern

Repository files navigation

.NET Core ile Microservice Choreography-Based Saga Pattern kodlaması yapılmıştır.

  • Distributed Transaction nedir ?

Distributed Transaction senaryolarında, microservice'ler arasında data consistency(veri tutarlığı) olayını yönetmeyi imkan veren bir pattern'dır. Her bir microservice bazı durumlarda shared bir veritabanına bağlanabilir. Ama bizim genellikle istediğimiz her microservicein kendisine ait bir veritabanı olması. Birden fazla microservice içeren sistemde örneğin siparişin oluşturulması stoğun düşmesi gibi her biri ayrı microservice de gerçekleşiyorsa biz bu durumlarda transactionları yönetmemiz lazım.

  • ACID Nedir?

Değişikliklerin veritabanına nasıl uygulanacağını belirten prensiplerdir. Transactionlar'ın ACID (atomicity, consistency,isolation,durability) olmalıdır.

Atomicity: Ya hep, ya hiç
Consistency: Dataların tutarlı olması. Veritabanını sürekli valid tutar.
Isolation: Transactionların birbirinden bağımsız olmasını ifade eder.
Durability: Dataların güvenli bir ortamda saklanmasını ifade eder.
  • Choreography-based saga

Local transaction sırasını kullanarak bir transaction yönetimi sağlar.

Uygulaması daha kolaydır. 
distributed transaction'a katılacak 2 ile 4 microservice arasında bir distributed transaction yönetimi için uygun bir implementasyon'dur.
Sisteme katılan her bir katılımcı karar vericidir. (başarılı veya başarısız)
Choreography implement etmenin bir yolu asynchronous messaging pattern kullanmaktır.
Her servis kuyruğu dinler, gelen event/message ile ilgili işlemi yapar, sonuç olarak başarılı veya başarısız durumunu tekrar kuyruğa döner
Point-to-point bir iletişim olmadığından serviceler arası coupling azalır.
Transaction yönetimi merkezi olmadığı için performance bottlenect azalır.
Compensable transaction : Bir transaction'ların yapmış olduğu işlemi tersine alan transaction'lardır. (zıt transaction)