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.
- envanter servisi deducts sto.
- Fatura hizmeti müşteriyi suçluyor.
- Bildirim servisi bir e-posta onayı gönderir.
- Analitik hizmet raporlama olayı kaydeder.
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:
- [FONT:0)Performance:[Dönetici:[Dönetici:0)[[Dönetici:0)[[Dönem:[Dönem:[Dönetici:0) Oku-heavy iş yükleri, yazılardan içerik olmadan özel mağazalarda hizmet edilebilir.
- [FONT:0) Güvenlik:[Dönetici:[Dönetici:0)[[FONT:0) Güvenlik:[Dönetici:[Dönetici:[Dönetici: 9) Farklı izleyicilere komutlar ve sorguları açığa çıkarabilirsin; örneğin, bir komut kimlik doğrulama gerektirir, ancak bir kamu sorgusu okunurken.
- [FONT:0)Scalability:[Dönetici:[Dönetici:[Dönetici:0) Oku ve yazı tarafı farklı donanım veya kümelerde bağımsız olarak ölçeklenebilir.
- [FONT=0)Flexability:[Dönetici:[Döncükler)[[FONT=0))[[[FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=
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:
- [FONT:0)Complete denetim izi: Her değişiklik kaydediliyor, bir varlığın tam tarihini görmenize izin veriyor.
- [FONT:0)Debugging ve debugging:) Yeni iş mantığını yeniden üretebilmek için bir geliştirme ortamında olayları yeniden oynatabilirsiniz.
- [FONT:0]Temporal sorgular:[Dönetici:[Dönetici:0)[Dönderlik sorguları:[Dönder:[Dönetici:[Dönetici: 1) Devletin ne zaman herhangi bir noktada olduğunu sorabilirsiniz.
- [FONT:0) CQRS'yi benimsemenin nedeni:) Etkinlik mağazası, yazı modeli olarak hizmet eder ve gerçek zamanlı güncellemeler için olaylara abone olabilir.
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.
- [FONT:0]Koupling ve bağımsızlık:[Dönetici:[Dönetici:0)Yüksek dekole ve birçok tüketiciye ihtiyacınız varsa, Pub/Sub basit.Eğer CQRS'yi Event Sourcing ile birleştirin.
- [FONT=0]İstecilik ihtiyaçları: [DÜDÜSÜSÜSÜSÜSÜSÜSÜSÜŞÜNCÜSÜŞÜNÜ:0)İsviçre ihtiyaçlar:[DÜDÜDÜDÜye Olmayanlar İçin: [DÜye Olmayanlar İçin KAYNAKLAR: ARAPÇLAR:0)
- [FONT:0]Throughput ve geçncy:) Etkinlik akışı (Kafka) TavşanMQ gibi bir brokerle birlikte en iyi aktarım sağlarken, daha küçük mesajlar için daha düşük gecikme sunar.
- [FONT:0) Güvenilirlik:[Dönetici:[Dönetici:[Dönetici:0) Etkinlik Sourcing uygun endüstriler için idealdir.
- [FONT:0) Takım olgunluğu: [DÜDÜDÜDÜDÜDÜŞÜNÜŞÜNCÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ: 0:0)Üyelim: [DÜyelim: [DÜyetim: 1) CQRS ve Etkinlik Sourcing karmaşıklığını güçlendirin. Ekibinizin etkinliksel tutarlılığı, şema evrimi ve idempotency’i anlamasını sağlayın.
Event-Driven Architecture Faydaları
Dekoupling ve ölçeklenebilirliğin acil avantajlarının ötesinde, EDA birkaç operasyonel ve iş avantajı sunar:
- [FONT:0]Scalability:[Dönetici:[Dönetici: 0,3) Her bir bileşen kendi yüklerine bağımsız olarak ölçeklenir.Bir flash satış sırasında, fatura veya nakliye hizmetlerine dokunmadan sipariş servisini ve abonelerini ölçekleyebilirsiniz.
- [FONT:0]Flexability:[[Dönetici:0) Yeni bir tüketici (örneğin, yeni bir analitik boru hattı) üreticilerin hiçbir değişikliği gerektirmez. Bu, sistemi zamanla geliştirmeyi kolaylaştırır.
- [FONT:0) Gerçek zamanlı yanıtlayıcılık:[DÜT:1] EDA doğal olarak canlı panolar, bildirimler ve anlık güncellemeler gibi gerçek zamanlı kullanıcı deneyimlerini destekler.
- [FONT:0]Resilience:[Dönetici başarısız olursa, olaylar brokerde devam edilir ve yeniden oynatılabilir. Yapımcılar çalışmaya devam eder.Bu izolasyon, cascading başarısızlıklarını önler.
- [FONT:0)Observability:[Dönetici:[Dönetici:[Dönetici:0)) Etkinlik girişleri izleme, uyarılama ve debugging dağıtılmış izlerinin zengin bir kaynağı sağlar.
- [FONT:0)Data integration:[Döneticiler, depolar veya makine öğrenme hatlarının analitik için aktarılması, tüm organizasyon için gerçek kaynağı haline getirebilme.
Meydanlar ve En İyi Uygulamalar
EDA güçlü ama pitfalls olmadan değil. Ortak zorluklar şunları içerir:
- [FONT:0] Sürekli tutarlılık: [Döneticiler sabit verileri görebilirler. gecikmelere tahammül eden ve idempotent eller uygulayan iş süreçleri tasarlayabilirsiniz.
- [FONT=0)Complexity:[Dönetici:[Dönetici: 0 3)) Olay şemalarını, sürümlerini ve birden fazla olay akışını yönetmek korkutucu olabilir. şema kayıtlarını kullanın ve şemaları ileri-ortak olarak geliştirir.
- [FONT:0)Debugging ve izleme:[Dönemli olay akışları, dağıtılmış tracing (Jaeger, OpenTelemetri) ve log aggregasyon gibi gözlemlenebilir araçlara daha zor.
- [FONT:0)Data duplication:[Döneticiler kopyalanabilir; tüketicilerinizi idempotent yapmak, bir kez işlemenin aynı etkisi vardır.
- [FONT:0)Yadering:[Dönetici:[Dönder:) Tüm etkinlik akışlarının sıkı bir şekilde siparişe ihtiyacı yoktur, ancak tek bir varlığın devlet geçişleri, anahtar tarafından bölme (örneğin, varlık kimliği) ve brokerin bir bölüm içinde korumasını sağlar.
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.