2015-10-02 39 views
8

Geçtiğimiz günlerde, iki aşamalı taahhütlerin kötü olduğu, ancak her zaman yan not olarak birçok kez okudum. Yani onunla asla iyi bir açıklama yapılmadı. CQRS Journey Chapter 5 Örneğin İki fazlı işlemler hangi sorunlara yol açabilir?

:

İkinci olarak, iki faz engellemeye çalışıyoruz uzun vadede çünkü onlar her zaman sorunlara neden taahhüt.

Veya sayfa 563 üzerinde Implementing Domain-Driven Design yılında

: taahhüt

ikinci ReadRecorts() iki faza ihtiyaç olmadan bunları yayımlamak, olayları çoğaltmak için altyapı tarafından kullanılır ...

Birden çok veritabanı sunucusu arasında tutarlılığı sağlamak için iki aşamalı taahhütlerin uygulandığını düşünmüştüm.

İki fazlı işlemler kullanılırken hangi sorunlar oluşabilir? Onları önlemek için neden daha iyi?

+1

Bkz. Http://www.enterpriseintegrationpatterns.com/docs/IEEE_Software_Design_2PC.pdf – Matt

cevap

8

En büyük sorun, 2 fazlı taahhüt protokolünün engellenmesi nedeniyle ölçeklenebilirliktir. 2PC, katılımcı taraflar arasında dikkatli bir koordinasyon gerektirir: Özellikle tarafların her biri hazırlık aşamasını ve taahhüdünü kabul etmek zorundadır. Bir taraf taahhüt vermeye hazır olduğunu kabul ettikten sonra, işlem koordinatörü taahhüt veya geri alma mesajını gönderene kadar engellenmelidir. Taraflardan herhangi biri bir ağ üzerindeyse, ağ gecikmesi, düğümler arasındaki iletişim için bir darboğaz oluşturur. Ayrıca, bir taraf bir defaya mahsus işlemeye hazır olduğunu kabul ettikten sonra, bu işlemin, aralarında düşmüş olsa bile, daha sonra işlem yapabilmesi gerektiğini kabul etmiştir. Bu, kalıcı depolama alanına (daha sonra işlem geri alındığında bile) kontrol noktasını gerektirir ve ayrıca büyük olasılıkla verimi sınırlar.