Event Streaming
- Türkçe karşılığı
- olay akışı
- Okunuşu
- ivent striming
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
Kısaca
Event streaming, olayları birçok uygulamanın gerçek zamanlı okuyup yeniden oynatabildiği ve işleyebildiği sürekli, sıralı, kalıcı bir log olarak kaydetmektir.
Event streaming nedir?
Event streaming, bir sistemde olan her şeyi, örneğin bir tıklamayı, bir ödemeyi, bir sensör okumasını ya da bir veritabanı değişikliğini bir olay (event) olarak ele alır ve bu olayları gerçekleştikçe sırayla kaydeder. Olaylar kalıcı, yalnızca eklemeli (append-only) bir logda tutulur ve istediği sayıda uygulama bu logu, ya olaylar geldiği anda ya da daha sonra, geçmişin herhangi bir noktasından okuyabilir.
Apache Kafka ve Apache Pulsar gibi platformlar olayları konulara (topic) düzenler; konular sunuculara yayılabilmesi ve paralel işlenebilmesi için bölümlere (partition) ayrılır. Sıra bir bölüm içinde garanti edilir; bu yüzden bir müşterinin kimliği gibi aynı anahtara sahip olaylar sırada kalır. Her tüketici logdaki kendi konumunu, yani offset'i izler. Bu sayede yeni bir servis baştan başlayıp aylarca geçmişi yeniden oynatabilir, hatalı bir tüketici de geri sarıp yeniden işleyebilir. Olaylar okunduktan sonra silinmek yerine, yapılandırılmış bir saklama süresi boyunca (saatlerden sonsuza kadar) tutulur.
Event streaming, kapı zili yerine güvenlik kamerası kaydına benzer: kapı zili yalnızca o anda evde olan kişiyi uyarır; bir kayıt ise ihtiyacı olan herkes tarafından canlı izlenebilir ya da sonra geri sarılabilir. Gerçek zamanlı analitikte, sahtekârlık tespitinde, etkinlik takibinde, change data capture yoluyla veritabanları ile veri ambarları arasında veri kopyalamada ve olay güdümlü mimaride mikroservisleri bağlamada kullanılır. Kafka Streams ve Apache Flink gibi akış işleme araçları, olaylar akarken onları filtrelemek, birleştirmek ve toplamak için akışları sürekli okur.
Event streaming sıklıkla mesaj kuyrukları ve event sourcing ile karıştırılır. Geleneksel bir mesaj kuyruğu, bir tüketici onayladığında mesajı siler ve her mesaj tek bir worker'a gider; bir olay akışı ise olayları saklar, böylece birçok tüketici onları bağımsız okuyabilir ve yeniden oynatabilir. Event sourcing, bir uygulamanın durumunu onu üreten olaylar dizisi olarak sakladığı bir mimari kalıptır; çoğu zaman bir olay logu kullanır, ancak event streaming olayları bütün bir kurumda taşımak ve işlemek için daha geniş altyapıdır.
Önemli noktalar
- Olaylar, kalıcı ve yalnızca eklemeli bir logda sırayla kaydedilir.
- Birçok tüketici aynı akışı bağımsız okur ve her biri kendi offset'ini izler.
- Akışlar, saklama süresi içinde herhangi bir noktadan yeniden oynatılabilir.
- Bölümler, her anahtar için sırayı korurken paralel işlemeye izin verir.
- Kuyruktan farklı olarak bir olayı okumak onu kaldırmaz.
Örnek
# Create a topic with 3 partitions
kafka-topics.sh --bootstrap-server localhost:9092 \
--create --topic page-views --partitions 3
# Write an event to the stream
echo '{"user": 42, "page": "/pricing"}' | \
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic page-views
# Read the stream from the very first event (replay)
kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--topic page-views --from-beginningSık sorulan sorular
Event streaming ile mesaj kuyruğu arasındaki fark nedir?
Mesaj kuyruğu her mesajı bir tüketiciye verir ve işlendikten sonra siler. Event streaming platformu ise olayları bir saklama süresi boyunca sıralı bir logda tutar; böylece birçok tüketici aynı olayları bağımsız okuyabilir ve daha sonra yeniden oynatabilir.
Kafka bir veritabanı mıdır?
Olağan anlamda değil. Kafka olayları kalıcı olarak saklar ve süresiz tutabilir, ancak akışları sırayla eklemek ve okumak için tasarlanmıştır; ad hoc sorgular ya da tekil kayıtları güncellemek için değildir. Bu yüzden genellikle veritabanlarının yanında çalışır.
Akış işleme (stream processing) nedir?
Akış işleme, dakikada sayfa görüntülemelerini saymak ya da şüpheli ödemeleri saniyeler içinde işaretlemek gibi, olaylar geldikçe üzerlerinde yapılan sürekli hesaplamadır. Zaten saklanmış veriler üzerinde periyodik çalışan toplu işlemenin (batch processing) tersidir.
İlgili sayfalar
- Mesaj KuyruğuBackend ve API'ler, s. 28Mesaj kuyruğu, bir servisten gelen mesajları bir başkası işlemeye hazır olana kadar saklayan ve sistemin parçalarını eşzamansız çalıştıran bir bileşendir.
- Pub/SubBackend ve API'ler, s. 35Pub/sub, yayıncıların konulara mesaj gönderdiği ve bir konunun her abonesinin, iki taraf da birbirini tanımadan bir kopya aldığı bir mesajlaşma kalıbıdır.
- Olay Güdümlü MimariYazılım Mimarisi, s. 29Olay güdümlü mimari, servislerin bir siparişin verilmesi gibi olaylar üreterek ve bunlara tepki vererek iletişim kurduğu bir yazılım tasarım tarzıdır.
- Event SourcingYazılım Mimarisi, s. 14Event sourcing, uygulama durumundaki her değişikliği değiştirilemez bir olay olarak saklayıp güncel durumu olayları yeniden oynatarak kuran tasarım desenidir.
- Data WarehouseVeritabanları, s. 7Data warehouse, birçok kaynaktan geçmiş veriyi toplayan ve ekiplerin büyük raporlama sorgularını hızla çalıştırdığı analitik amaçlı merkezi bir veritabanıdır.
- BackpressureBackend ve API'ler, s. 7Backpressure, yavaş tüketicinin hızlı üreticiye yavaşlaması için sinyal vermesini sağlayan, verinin işlenebileceğinden hızlı birikmesini önleyen mekanizmadır.
- KafkaBackend ve API'ler, s. 25Apache Kafka, olayları kalıcı, sıralı log'larda tutan dağıtık olay akışı platformudur; servisler onları yayımlar, gerçek zamanlı okur ya da yeniden oynatır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin