Türkçe

Dağıtık işlemlere ve İki Aşamalı Onay (2PC) protokolüne derinlemesine bir inceleme. Mimarisini, avantajlarını, dezavantajlarını ve küresel sistemlerdeki pratik uygulamalarını öğrenin.

Dağıtık İşlemler: İki Aşamalı Onay Protokolüne (2PC) Derinlemesine Bakış

Günümüzün giderek birbirine bağlı dünyasında, uygulamaların genellikle birden çok, bağımsız sistemde depolanan verilerle etkileşime girmesi gerekir. Bu, tek bir mantıksal işlemin birkaç veritabanında veya hizmette değişiklik yapılmasını gerektirdiği dağıtık işlemler kavramını ortaya çıkarır. Bu tür senaryolarda veri tutarlılığını sağlamak çok önemlidir ve bunu başarmak için en iyi bilinen protokollerden biri İki Aşamalı Onay (2PC)'dir.

Dağıtık İşlem Nedir?

Dağıtık işlem, birden çok, coğrafi olarak dağınık sistemde gerçekleştirilen ve tek bir atomik birim olarak ele alınan bir dizi işlemdir. Bu, işlem içindeki tüm işlemlerin başarılı olması (onaylanması) veya hiçbirinin başarılı olmaması (geri alınması) gerektiği anlamına gelir. Bu "ya hep ya hiç" ilkesi, tüm dağıtık sistemde veri bütünlüğünü sağlar.

Tokyo'daki bir müşterinin bir havayolu sisteminde Tokyo'dan Londra'ya bir uçak bileti rezervasyonu yaptığı ve aynı anda farklı bir otel rezervasyon sisteminde Londra'da bir otel odası ayırdığı bir senaryo düşünün. Bu iki işlem (uçak bileti rezervasyonu ve otel rezervasyonu) ideal olarak tek bir işlem olarak ele alınmalıdır. Uçak bileti rezervasyonu başarılı olursa ancak otel rezervasyonu başarısız olursa, sistem ideal olarak müşteriyi Londra'da konaklama olmadan mahsur bırakmamak için uçak bileti rezervasyonunu iptal etmelidir. Bu koordineli davranış, dağıtık bir işlemin özüdür.

İki Aşamalı Onay (2PC) Protokolüne Giriş

İki Aşamalı Onay (2PC) protokolü, birden çok kaynak yöneticisi (örneğin, veritabanları) arasında atomikliği sağlayan dağıtık bir algoritmadır. Merkezi bir koordinatör ve belirli bir kaynağı yönetmekten sorumlu birden çok katılımcı içerir. Protokol, iki ayrı aşamada çalışır:

1. Aşama: Hazırlık Aşaması

Bu aşamada, koordinatör işlemi başlatır ve her katılımcıdan işlemi onaylamaya veya geri almaya hazırlanmasını ister. İlgili adımlar aşağıdaki gibidir:

  1. Koordinatör Bir Hazırlık İsteği Gönderir: Koordinatör tüm katılımcılara bir "hazırlık" mesajı gönderir. Bu mesaj, koordinatörün işlemi onaylamaya hazır olduğunu ve her katılımcıdan bunu yapmaya hazırlanmasını istediğini işaret eder.
  2. Katılımcılar Hazırlanır ve Yanıt Verir: Her katılımcı hazırlık isteğini alır ve aşağıdaki eylemleri gerçekleştirir:
    • İşlemi onaylayabileceğinden veya geri alabileceğinden emin olmak için gerekli adımları atar (örneğin, yineleme/geri alma günlükleri yazma).
    • Koordinatöre, ya "onaylamaya hazır" ("evet" oyu) ya da "onaylayamıyor" ("hayır" oyu) olduğunu belirten bir "oy" geri gönderir. "Hayır" oyu, kaynak kısıtlamaları, veri doğrulama hataları veya diğer hatalardan kaynaklanabilir.

Katılımcıların, "evet" oyu verdikten sonra değişiklikleri onaylayabileceklerini veya geri alabileceklerini garanti etmeleri çok önemlidir. Bu genellikle değişiklikleri kararlı depolamaya (örneğin, diske) kaydetmeyi içerir.

2. Aşama: Onaylama veya Geri Alma Aşaması

Bu aşama, hazırlık aşamasında katılımcılardan alınan oylara göre koordinatör tarafından başlatılır. İki olası sonuç vardır:

Sonuç 1: Onaylama

Koordinatör tüm katılımcılardan "evet" oyu alırsa, işlemi onaylamaya devam eder.

  1. Koordinatör Bir Onaylama İsteği Gönderir: Koordinatör tüm katılımcılara bir "onaylama" mesajı gönderir.
  2. Katılımcılar Onaylar: Her katılımcı onaylama isteğini alır ve işlemle ilişkili değişiklikleri kaynağına kalıcı olarak uygular.
  3. Katılımcılar Onaylar: Her katılımcı, onaylama işleminin başarılı olduğunu doğrulamak için koordinatöre bir onay mesajı geri gönderir.
  4. Koordinatör Tamamlar: Koordinatör, tüm katılımcılardan onay aldıktan sonra, işlemi tamamlandı olarak işaretler.

Sonuç 2: Geri Alma

Koordinatör herhangi bir katılımcıdan tek bir "hayır" oyu alırsa veya bir katılımcıdan yanıt beklerken zaman aşımına uğrarsa, işlemi geri almaya karar verir.

  1. Koordinatör Bir Geri Alma İsteği Gönderir: Koordinatör tüm katılımcılara bir "geri alma" mesajı gönderir.
  2. Katılımcılar Geri Alır: Her katılımcı geri alma isteğini alır ve işlem için hazırlık olarak yapılan değişiklikleri geri alır.
  3. Katılımcılar Onaylar: Her katılımcı, geri alma işleminin başarılı olduğunu doğrulamak için koordinatöre bir onay mesajı geri gönderir.
  4. Koordinatör Tamamlar: Koordinatör, tüm katılımcılardan onay aldıktan sonra, işlemi tamamlandı olarak işaretler.

Örnek: E-ticaret Sipariş İşleme

Bir siparişin envanter veritabanını güncellemeyi ve ödemeyi ayrı bir ödeme ağ geçidi aracılığıyla işlemeyi içerdiği bir e-ticaret sistemi düşünün. Bunlar, dağıtık bir işleme katılması gereken iki ayrı sistemdir.

  1. Hazırlık Aşaması:
    • E-ticaret sistemi (koordinatör), envanter veritabanına ve ödeme ağ geçidine bir hazırlık isteği gönderir.
    • Envanter veritabanı, istenen öğelerin stokta olup olmadığını kontrol eder ve bunları rezerve eder. Ardından başarılı olursa "evet" veya öğeler stokta yoksa "hayır" oyu verir.
    • Ödeme ağ geçidi, ödemeyi önceden yetkilendirir. Ardından başarılı olursa "evet" veya yetkilendirme başarısız olursa "hayır" oyu verir (örneğin, yetersiz bakiye).
  2. Onaylama/Geri Alma Aşaması:
    • Onaylama Senaryosu: Hem envanter veritabanı hem de ödeme ağ geçidi "evet" oyu verirse, koordinatör her ikisine de bir onaylama isteği gönderir. Envanter veritabanı stok sayısını kalıcı olarak azaltır ve ödeme ağ geçidi ödemeyi yakalar.
    • Geri Alma Senaryosu: Envanter veritabanı veya ödeme ağ geçidi "hayır" oyu verirse, koordinatör her ikisine de bir geri alma isteği gönderir. Envanter veritabanı rezerve edilen öğeleri serbest bırakır ve ödeme ağ geçidi ön yetkilendirmeyi iptal eder.

İki Aşamalı Onayın Avantajları

İki Aşamalı Onayın Dezavantajları

İki Aşamalı Onaya Alternatifler

2PC'nin sınırlamaları nedeniyle, dağıtık işlemleri yönetmek için çeşitli alternatif yaklaşımlar ortaya çıkmıştır. Bunlar şunları içerir:

İki Aşamalı Onayın Pratik Uygulamaları

Sınırlamalarına rağmen, 2PC hala güçlü tutarlılığın kritik bir gereksinim olduğu çeşitli senaryolarda kullanılmaktadır. Bazı örnekler şunları içerir:

İki Aşamalı Onay Uygulama

2PC uygulaması, aşağıdakiler dahil çeşitli faktörlerin dikkatli bir şekilde değerlendirilmesini gerektirir:

Dağıtık İşlemler İçin Küresel Hususlar

Küresel bir ortamda dağıtık işlemler tasarlarken ve uygularken, çeşitli ek faktörlerin dikkate alınması gerekir:

Sonuç

Dağıtık işlemler ve İki Aşamalı Onay (2PC) protokolü, sağlam ve tutarlı dağıtık sistemler oluşturmak için temel kavramlardır. 2PC, atomikliği sağlamak için basit ve yaygın olarak benimsenen bir çözüm sunarken, özellikle engelleme ve tek arıza noktası etrafındaki sınırlamaları, Sagalar ve nihai tutarlılık gibi alternatif yaklaşımların dikkatli bir şekilde değerlendirilmesini gerektirir. Güçlü tutarlılık, kullanılabilirlik ve performans arasındaki ödünleşimleri anlamak, özel uygulama ihtiyaçlarınız için doğru yaklaşımı seçmek için çok önemlidir. Ayrıca, küresel bir ortamda çalışırken, dağıtık işlemlerin başarısını sağlamak için ağ gecikmesi, saat dilimleri, veri yerelleştirme ve mevzuata uyumlulukla ilgili ek hususların ele alınması gerekir.