Not : Yazılım Mimarisi Microservices Architecture - Error Propagation yazısına da bakabilirsiniz.
Bu örüntü API Integration başlığı altına alınmış. Aslında ismi de cafcaflı olmasına rağmen Aggregator, Service Aggregator, Map-Reduce ile benzer şeyler yapıyor. Aslında isimlendirme tam bir keşmekeş.
Microservice Açısından Bakarsak
Microservice kullananların açıklaması şöyle
In Aggregator Pattern, there are 3 ways to implement it within Microservices application.1. Scatter Gather Pattern2. Chained Pattern3. Branch Pattern
Scatter Gather Pattern : Servisler paralel çağrılır
Chained Pattern : Önce birinci servis çağrılır, onun sonucuyla ikinci servis çağrılır
Branching Pattern : Scatter Gather Pattern ve Chained Pattern karışımı. Baz servisler paralel çağrılır, bazıları ise birbirlerine bağımlı olduğu için sırayla çağrılır.
Integration Pattern Açısından Bakarsak
Scatter Gather denilen şey Fan-Out/Fan-In ile aynı. Yani isteklerin paralel olarak yapılması ve bunların birleştirilip toparlanması.
Nasıl Çalışıyor?
Elimizde bir sürü veri kaynağından veri çekip bunları derleyip toparlayarak sunan bir servis olsun. Bu servis tetiklenince, iş uzun süreceği için istemciye bir tane Correlation ID döndürür. Bunun açıklaması şöyle
... returns to the initial system a correlation ID (CID), a random string that tells the system, "I received your request, here, save this CID somewhere, and when I have the result, I will give it to you along with that CID to make it possible for you to understand a reply to which request it is."
Daha sonra kullanması gereken tüm veri kaynaklarına mümkünse paralel olarak çağrı başlatır. Bu kısma fan-out deniliyor. Daha sonra gelen cevapları birleştirir ve CID ile birlikte istemciye döner. Bu kısma da fan-in deniliyor.
Ne Zaman Kullanılır?
Açıklaması şöyle
The pattern can be considered each time there is a rather long-running integration process that requires communication with more than one system.This raises a question of what “long-running” is. The answer lies in whether there is a human being waiting for the results. Generally, people can wait 1-2 seconds for a response before growing impatient. Hence, if the process takes 30 seconds or more, they should not be made to wait as this can only lead to dissatisfaction.
Hiç yorum yok:
Yorum Gönder