Akış İşleme Nedir? Gerçek Zamanlı Veri İşlemenin Mantığı
Akış işleme, sürekli gelen verinin her kayıt geldiği anda işlenmesidir. Toplu işlemeden farkını, pencereleme mantığını ve kullanım alanlarını örnekle öğrenin.
Akış işleme nedir
Akış işleme (stream processing), sürekli üretilen veri kayıtlarının biriktirilmeden, geldikleri anda ya da çok kısa gecikmeyle işlenmesidir. Veri sonu olmayan bir akış olarak ele alınır: tıklama olayları, sensör ölçümleri, ödeme işlemleri ve log satırları sürekli akar, sistem de her kayda tepki verir.
Karşıtı toplu işlemedir (batch processing). Toplu işlemede veri bir süre birikir, sonra belirli aralıklarla topluca işlenir. Akış işleme, sonucun beklenmeyecek kadar değerli olduğu durumlarda tercih edilir; örneğin sahte işlem tespiti, anlık stok uyarısı ya da canlı panolar.
Akış işleme nasıl çalışır
Bir akış işleme hattı genellikle şu parçalardan oluşur: veriyi üreten kaynaklar, akışı taşıyan ve saklayan bir mesajlaşma katmanı ve kayıtları dönüştüren işleme motoru. Mesajlaşma katmanında Apache Kafka, işleme tarafında ise Apache Flink, Spark Structured Streaming ya da Kafka Streams gibi araçlar kullanılır.
İşleme motoru her kayda süzme, dönüştürme, zenginleştirme ve toplama işlemleri uygular. Sonuç başka bir akışa, veritabanına ya da bir uyarı sistemine yazılır. Hat sürekli çalıştığı için hata toleransı kritiktir: motor çöktüğünde kaldığı yerden, kayıp ya da çift işleme olmadan devam edebilmelidir.
Zaman, pencere ve geç gelen veri
Akışta "şu ana kadar toplam" sorusu çoğu zaman anlamsızdır, çünkü akış bitmez. Bu yüzden toplamlar zaman pencereleri üzerinden hesaplanır. Sabit pencere akışı eşit zaman dilimlerine böler; kayan pencere dilimleri üst üste bindirir; oturum penceresi ise kullanıcı hareketsiz kalana kadar süren etkinliği tek grupta toplar.
Zor kısım, olayın gerçekleştiği zaman ile sisteme ulaştığı zamanın farklı olmasıdır. Mobil bir cihaz bağlantısını kaybedip olayı sonradan gönderebilir. İşleme motorları bu geç gelen veriyi, belirli bir tolerans süresine kadar doğru pencereye yerleştirmek için "filigran" gibi mekanizmalar kullanır.
Bir örnek: ödeme dolandırıcılığı
Örneğin bir ödeme sistemi her işlemi bir akışa yazar. İşleme motoru aynı kartın kısa sürede farklı şehirlerde kullanıldığını kayan pencereyle tespit eder ve işlemi şüpheli işaretler. Aynı veri gece toplu çalışmada işlense, dolandırıcılık ancak para çıktıktan sonra fark edilirdi.
Bu örnek durum bilgisinin önemini de gösterir: motor, kartın önceki işlemlerini hatırlamak zorundadır. Bu hafıza "durum" (state) olarak tutulur ve hata anında yedeklenir. Durum büyüdükçe performans ve bellek yönetimi başlıca işletme konusu olur.
Akış işleme ile toplu işleme ne zaman seçilir
Karar, gecikme gereksinimi ve karmaşıklık dengesiyle verilir: • Sonucun hemen kullanılması gerekiyorsa akış işleme • Rapor günlük ya da haftalık okunuyorsa toplu işleme genellikle daha basit ve ucuzdur • Geçmiş verinin tamamı üzerinde karmaşık analiz gerekiyorsa toplu işleme • Hem anlık hem geçmiş analiz gerekiyorsa yaklaşımları birleştiren mimariler kullanılır
Akış sistemleri işletmesi daha zor sistemlerdir; tüm veri problemleri için varsayılan seçim olmamalıdır.
Mindset eğitimlerinde akış işleme
Spark Structured Streaming ile Akış İşleme, Kafka Streams ve ksqlDB ile Akış İşleme ve Apache Flink ile Gerçek Zamanlı Akış İşleme programları zaman, pencereleme, durum yönetimi ve hata toleransı modüllerini aynı kavramsal çerçevede, farklı araçlarla işler. Streaming Platform Yönetimi programı ise Kafka kümesinin kurulumunu, ölçeklenmesini ve izlenmesini kapsayan operasyon tarafına odaklanır. Veri mühendisleri ve platform ekipleri için araç seçimine yardımcı olan bir karşılaştırma zemini sunar.
İlgili Mindset programı
Spark Structured Streaming ile Akış İşleme
Sık sorulan sorular
Akış işleme ile gerçek zamanlı işleme aynı mıdır?
Çoğu zaman birbirinin yerine kullanılır ama tam aynı değildir. Akış işleme, veriyi sürekli akış olarak işleme yaklaşımıdır. Gerçek zamanlı ifadesi ise sonucun belirli bir süre içinde hazır olması beklentisini anlatır. Akış işleme bu beklentiyi karşılamanın en yaygın yoludur.
Kafka bir akış işleme aracı mıdır?
Kafka temel olarak olayları saklayan ve taşıyan dağıtık bir mesajlaşma platformudur. Akış işleme için Kafka Streams ve ksqlDB gibi eklentileri vardır, ayrıca Flink ya da Spark da Kafka'dan veri okuyup işleyebilir. Taşıma katmanı ile işleme katmanını ayırmak, mimariyi anlamayı kolaylaştırır.
Akışta verinin tam bir kez işlenmesi neden zordur?
Dağıtık sistemlerde ağ ya da düğüm hataları sonucu bir kayıt birden fazla kez teslim edilebilir veya kaybolabilir. "Tam bir kez" işleme güvencesi, kontrol noktaları ve işlemsel yazım gibi mekanizmalarla sağlanır. Bu mekanizmalar gecikme ve karmaşıklık maliyeti getirdiği için gereksinim gerçekten varsa seçilmelidir.
Akış işleme öğrenmek için hangi bilgi gerekir?
SQL, bir programlama dili ve dağıtık sistem temelleri yeterli bir başlangıçtır. Ardından olay zamanı, pencereleme ve durum yönetimi kavramlarına geçilir. Bazı araçlar SQL benzeri arayüz sunduğu için analitik bilen biri de basit akışları kurabilir.