Event Driven Architecture Desenleri Anlayın: Pub/sub, Cqrs ve Daha Fazla

Olay-Driven Mimarisi (EDA), dağıtılmış, ölçeklenebilir ve yanıtlayıcı sistemler için temel bir tasarım paradigması haline geldi.Bu dekoupling, her hizmeti kendi başına bağımsız olarak geliştirmeyi ve EDA'nın üretim, algılamasını ve tüketimini anlamayı amaçlayan bir etkinliktir.

Event-Driven Architecture Nedir?

Onun özünde, EDA, olayları birinci sınıf vatandaşlar olarak ele alır. Bir olay geçmişte olan bir şeyin bir mucize kaydıdır - örneğin, [[Dönetici:0)OrderPlaced) Kullanıcıya abone olur.[Dönetici[Dönetici:2 Kullanıcıya göre, ya da aranırıktırılmış[Dönder)) Apache Kafka, TavşanMQ veya AWS EventBridge, hangi bileşenleri bilmeden bu olayları bilerek üretirler.

Bu mimari geleneksel senkronizasyonlu istek-sorumlu modellerine karşı, bir hizmetin doğrudan başka bir hizmet aradığı ve yanıt için beklendiği bir şekilde duruyor: Bu model yalnızca sistem direncini artırır, ancak gerçek zamanlı hizmet yavaş veya mevcut olmayan, çağrıcı bloke edilir. EDA, üreticiler yangın olayları ve hemen hemen çalışmalarını devam ettirir.

EDA özellikle mikro hizmet ekosistemleri, poliglot ortamları ve yüksek aktarım, düşük gecikmeli veya işlem işleme gibi etkinlik odaklı iş akışları, IoT veri ingestion ve dolandırıcılık algılama gibi.

Event-Driven Architecture'daki Core Desenler

Publish/Subscription (Pub/Sub)

Publish/Subscription (Pub/Sub) modeli, en basit ve en yaygın olarak kabul edilen EDA modelidir. Bu modelde yayıncılar bir konuya veya kanala olayları yayarlar. Aboneler bu konulara ilgi duyuyor ve onlara yayınlanan tüm olayları alıyor. brokerin yürütücüleri ve aboneleri ve aboneleri ve aboneleri yok - bu gevşek darbenin özüdür.

Örneğin, bir e-ticaret platformu düşünün. Bir müşteri siparişi yerdiğinde, sipariş hizmeti bir İLFLT:0)OrderPlaced) Bu olay için "tahaplar" konusu.

Her abone olayı bağımsız olarak ve kendi hızıyla gerçekleştirir. Eğer bildirim servisi yavaşsa, sipariş servisini veya envanter hizmetini etkilemez. Bu model doğal olarak ölçeklendirmeyi destekler; diğer bileşenlere dokunmadan daha fazla envanter servisi örnekleyebilirsiniz.

Pub/SuburFLT:0)Apache Kafka[Dönemli, kalıcı ve tekrarlanabilir etkinlik akışları sağlar; [[Dönetici:2|Kahte/[Döneticileri ile)|ve konu değişimleri ile ilgili olarak; ve bulut-natif hizmetler ).AWS EventBridge

Komutan Sorgu Sorumluluk Segregation (CQRS)

Komut Sorgu Sorumluluk Segregation (CQRS), iş yükü belirsiz olduğunda performans sorunları için kullanılan bir modeldir - örneğin, farklı bir şema için de sorguya bulundurmanız gereken karmaşık bir yaz yolu.

CQRS tabanlı bir sistem, [[FONT|D:0)PlaceOrder) iş kurallarını doğrulayan ve bir etkinlik (örneğin, kendi masalarını dinlemek için bir yazı modeli tetikler.FortCreated).Bu olay, yazının veritabanını güncellemektedir.

CQRS'nin Faydaları şunları içerir:

Ancak, CQRS karmaşıklığını ekliyor çünkü olay tutarlılığı ve çoğu zaman iki taraf arasında olay odaklı senkronizasyon gerektirir.Dairenin ticaretini anlamak için mükemmel bir kaynaktır.Yaz tarafı mevcut bir devlet snapshot'ından ziyade bir dizi olayda bulunuyor.

Olay Sourcing

Olay Sourcing, devlet değişikliklerinin başlangıçtan itibaren bir kronolojik dizi olarak depolandığı bir modeldir, mevcut durumu tekrarlamak için aralıklarda anlık bir durum görüntüsü olarak değil.Bir veritabanında bir kayıt yazmak yerine, her mutasyon bir olay kaydına yeni bir olay ortaya çıkar.Mevcut durum, başlangıçtan itibaren tüm olayları yeniden oynatarak elde edilebilir - veya kurtarma için anlık görüntüler kullanarak.

Event Sourcing birkaç güçlü avantaj sağlar:

Ana ticaret-off depolama ve karmaşıktır. Olay mağazasını doğrudan sorgulayın, bu yüzden genellikle görüntülenen modelleri (Projeler) bu materyaliz. Olay Sourcing finansal muhasebe, bankacılık ve işbirliği belgesi düzenleme alanlarında yaygındır.

Event Streaming

Olay akışı olayları sürekli, sınırsız bir veri akışı olarak ele alır. Bu model gerçek zamanlı analitik, izleme ve ölçeklendirme için kullanılabilir. Olay akışında, olaylar birden çok üreticiden ve gerçek zamanlı olarak işlemeye ve verileri dönüştürerek işlenebilir.

Apache Kafka, olay akışı için gerçek bir standarttır. Örneğin, bir sürüş paylaşımı şirketi, sürücü erişilebilirliği ve sürücüyü güncellemek için GPS yerlerini yayınlayabilir.Geçmiş akış işleme çerçeveleri, Kafka Streams, Apache Flink ve Spark Streaming gibi karmaşık olay işlemeyi tam olarak sağlar. Örneğin, bir sürüş paylaşımı şirketi, GPS konumlarını fiyatlandırmayı hesaplamak, sürücü kullanılabilirliği tespit edebilir ve sürücüyü güncelleyebilir.

Etkinlik akışı, veri altyapısı seviyesindeki tüketicilerden veri üreticilerini bölmek istediğiniz veri ağlarından veri ağlarından veri ağlarından da temel alan veri ağlarından ve etkinlik odaklı mikro hizmetlerden kaynaklanmaktadır.

Diğer Önemli Desenler ve Kombinasyonlarda Desenler

Saga Desen

Dağıtım işlemleri, özellikle mikro hizmetler içinde, Saga modeli çok adımlı akışları yönetir.Bir bilgede her adım bir olay yayınlar veya bir eylem gerçekleştirir.Eğer bir adım başarısız olursa, bilge bir hizmet önceki adımları geri getirmek için olayları uyarır.

Reaktif Programlama

Kesinlikle bir mimari model olmasa da, reaktif programlama, EDA. Frameworks ile iyi uyum sağlayan bir programlama modelidir ve RxJS, Reaktör ve Akka Streams, geliştiricilerin tekrar baskı ile ilgili yüksek hacimli ve olay tabanlı mantık oluşturmalarına izin verir.Bu özellikle müşterilerde faydalıdır (örneğin, gerçek zamanlı UI güncelleştirmeleri) ve sunucu-side akışlarında.

Event İşbirliği

Olay İşbirliği, hizmetlerin ortak bir olay modeli paylaştığı ve yalnızca etkinliklerle iletişim kurduğu bir modeldir.Her hizmet kendi veri mağazalarına kendi veri depolarına kendi veri depolarına ait bilgileri ve projeleri tutar.Bu model, standartlaştırılmış bağlamlarla en üstlenen tasarımda sıklıkla kullanılır.

Doğru Deseni Seçin

Bir EDA modeli seçmek, belirli gereksinimlerinize bağlıdır.

Event-Driven Architecture Faydaları

Dekoupling ve ölçeklenebilirliğin acil avantajlarının ötesinde, EDA birkaç operasyonel ve iş avantajı sunar:

Meydanlar ve En İyi Uygulamalar

EDA güçlü ama pitfalls olmadan değil. Ortak zorluklar şunları içerir:

En iyi uygulamalar şunları içerir: basit başlayın - Pub/Sub ilk ve sadece CQRS veya Event Sourcing haklı olduğunda; iyi bir şema kayıt yaptırmaya yatırım; başarısız olaylar için ölü kuyrukları uygulayın; ve hataları düzenli olarak bilge mantık işlerinizi sağlamak için.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Event-Driven Architecture kalıpları - temelsel Pub/Sub'dan daha uzman CQRS, Event Sourcing ve etkinlik akışı - ölçeklenebilir, esnek ve duyarlı olan sistemler için sağlam bir araçta bulun. By decoupling yapımcıları ve tüketiciler tarafından, EDA, ekipleri bağımsız olarak dağıtılabilir ve gerçek zamanlı yeteneklerin kilidini açmaya olanak tanır. Ancak, bu yapılama ve şema yönetimine daha fazla bilgi kazandırır.