Data Streaming
03/02/2023
Last updated
Was this helpful?
03/02/2023
Last updated
Was this helpful?
Ignite, bir Ignite cluster’ına büyük miktarlarda sürekli veri akışı enjekte etmek için kullanılabilen bir Data Streaming API sağlar. Data Streaming API, ölçeklenebilir(scalable) ve hataya dayanıklı(fault tolerant) olacak şekilde tasarlanmıştır ve Ignite'a aktarılan veriler için at least once
semantiğini destekler, yani her giriş en az bir kez işlenir.
Veriler, cachele ilişkili bir data streamer aracılığıyla bir cache’e aktarılır. Data streamer’lar, verileri otomatik olarak buffer’a alır ve daha iyi performans için batchler halinde gruplandırır ve birden çok node’a paralel olarak gönderir.
Data Streaming API'si aşağıdaki özellikleri sağlar:
Bir data streamera eklenen veriler otomatik olarak partitionlanır ve nodelar arasında dağıtılır.
Verileri colocated bir şekilde aynı anda işleyebilirsiniz.
Clientlar, akış halindeyken veriler üzerinde eşzamanlı SQL sorguları çalıştırabilir.
Bir data streamer, belirli bir cachele ilişkilendirilir ve cache’e veri akışı için bir interface sağlar.
Tipik bir senaryoda, bir data streamer nesnesi oluşturulur ve cache’e veri akışı yapmak için onun methodlarından biri kullanılır ve Ignite, gereksiz veri hareketini önlemek için veri girişlerini, partitioning kurallarına göre gruplandırarak, data partitioning ve colocation ile ilgilenir.
Belirli bir cache için data streamer aşağıdaki gibi kullanılabilir;
Yeni veri eklemeden önce özel bir iş mantığı yürütmek gereken durumlarda bir stream reciever kullanılabilir. Bir stream reciever, verileri cache’e depolanmadan önce colocated olacak şekilde işlemek için kullanılır. Bir stream recieverda uygulanan mantık, verilerin depolanacağı node’da yürütülür.
Bir stream reciever verileri cache’e otomatik olarak koymaz.
Put(…)
methodlarından birinin kullanılması gerekir.
Bir stream transformer, streamdeki verileri güncelleyen bir stream reciever’ın kullanışlı bir implementasyonudur. Stream transformerlar, colocation özelliğinden yararlanır ve depolanacağı node’daki verileri günceller.
Aşağıdaki örnekte, text streaminde bulunan her bir farklı sözcük için bir sayacı artırmak üzere bir stream transformer kullanılmakta;
Stream visitor, streamdeki her key/value pairini ziyaret eden stream reciever’ın başka bir implementasyonudur. Visitor cache’i güncellemez. Bir pair’in cache’te saklanması gerekiyorsa, put(…)
methodlarından biri kullanılmalıdır.
Data streamer thread pool, data streamerlardan gelen mesajları işlemek için ayrılmıştır.
Varsayılan pool boyutu max(8, toplam çekirdek sayısı)
. Poolboyutunu değiştirmek için IgniteConfiguration.setDataStreamerThreadPoolSize(…)
kullanılır.