.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.
- Orchestration-based saga
Microservice'ler arasında tüm transaction merkezi bir yerden yönetilir. (Saga State Machine)
Uygulaması daha zordur..
4'den fazla microservice arasında bir distributed transaction yönetimi için uygun bir implementasyondur.
Asynchronous messaging pattern kullanmak uygundur.
Transaction yönetimi merkezi olduğu için performance bottleneck fazladır.