· kaynak Cloudflare blog
Cloudflare, R2 üzerinde kurulu sunucusuz (serverless) event streaming servisi K2'yi duyurdu
Public beta aşamasındaki Cloudflare K2, üreticileri (producer) tüketicilerden (consumer) ayıran dayanıklı bir event streaming primitive'i; olayların sıralı günlüklerini uzun süreli saklama ile R2 object storage üzerinde tutuyor.

Cloudflare, sunucusuz (serverless) event streaming servisi K2'yi public beta olarak yayınladı. Cloudflare bloguna göre K2, şirketin Developer Platformu üzerinde dayanıklı bir event streaming primitive'i: üreticiler (producer) olayları bir stream'e yazar, stream bunları sıralı bir günlük olarak saklar ve tüketiciler (consumer) kendi hızlarında buradan okur — okumaları bir tüketici grubuna dağıtarak ya da her mesajı bağımsız olarak alarak.
K2 hangi sorunu çözüyor
Cloudflare sorunu, üreticilerle tüketicilerin hem ölçekte hem zamanda eşleşmek zorunda kaldıkları geleneksel Remote Procedure Call mimarileri üzerinden tanımlıyor. Üreticiler tüketicilerin işleyebileceğinden daha fazla veri gönderirse ya da bir下游 servis çevrimdışı olursa olaylar kaybolur. Sorun, birden fazla tüketici — örneğin e-ticaret işlem olaylarını okuyan bir analitik sistemi ve bir dolandırıcılık tespit servisi — aynı veriyi bağımsız olarak işlemek istediğinde daha da büyür. K2 iki taraf arasına dayanıklı bir tampon koyarak yazma işlemlerini emerken okuyucuların kendi hızlarında tüketmesini sağlar. Uzun süreli saklamayı desteklediği için, tüketicinin uzun süre çevrimdışı kalması bile veri kaybına yol açmaz.
Edge için, R2 üzerinde inşa edildi
Cloudflare'ye göre K2 dahili bir ihtiyaçtan doğdu: stream processing motoru Basin Pipelines, pull tabanlı bir model kullanıyor ve önünde, kabul ettiği olayları asla düşürmeme taahhüdü nedeniyle olayları muhtemelen uzun süreler boyunca tutabilecek dayanıklı bir alım tamponuna ihtiyaç duyuyordu.
Bu, çoğu şirketin Apache Kafka'ya emanet edeceği bir iş, ama Cloudflare, Pipelines'ın 335'ten fazla şehre yayılan edge ağında çalıştığını, geleneksel dağıtık sistem yazılımlarının ise çoğu zaman burada çalışamadığını belirtiyor. Makineler küçük dilimler halinde sağlanıyor, görece kısa ömürlü oluyor ve ağ trafiği sık sık açık İnternet üzerinden geçiyor. Bunu dengeleyen güçler ise dünya genelinde kullanıcılara yakınlık ve güçlü yatay ölçeklenebilirlik.
Bu yüzden K2, Cloudflare'ın object storage hizmeti R2 üzerinde inşa edildi. R2, 11 tane (11 nines) dayanıklılık ve güçlü tutarlılığa sahip API'ler sunuyor; bu da K2'ye replikasyon ve konsensüsü storage katmanına itme imkânı veriyor — Cloudflare'ya göre bu, uygulama katmanını daha basit, daha ucuz ve daha performanslı hale getirirken hesaplamayı depolamadan ayırıyor ve her birinin bağımsız ölçeklenmesini sağlıyor.
Bir pürüz var: object storage'lar bir günlük için en doğal işlem olan append'i desteklemiyor. K2 bunun yerine yazma işlemlerini edge üzerindeki bir serviste bellekte biriktiriyor ve bunları, her birinin yazma ve okuma maliyetini amorti edecek boyutlarda tam segment dosyaları olarak flush ediyor. Sıralama ve kesinlikle artan offset'ler, ayrı bir koordinasyon servisi olmadan R2'nin atomik operasyonlarıyla sağlanıyor. Bunun bedeli üretim gecikmesi: bu ilk sürümde 99. persentilde kabaca bir saniye. Cloudflare, ayrıntılı teknik bir yazının yakında geleceğini söylüyor.
K2, Queues mu Pipelines mı ne zaman kullanılmalı
Cloudflare zaten başka asenkron teslimat ürünleri sunuyor ve blog net ayrımlar çiziyor:
- Queues, pahalı veya zaman alan işlerin tek tek izlenmesi etrafında tasarlandı; yeniden denemeler, gecikmeler ve dead-letter queue'lar gibi mesaj başına mantığı destekliyor.
- K2, yüksek ölçekli veri hareketini, uzun süreli saklamayı ve fan-out tüketimini hedefliyor. Mesajlar batch halinde üretilip tüketiliyor; bu verimli işlemeyi mümkün kılıyor ama mesaj düzeyinde yeniden denemeyi dışlıyor ve kuyruklara göre daha yüksek üretici gecikmesi getiriyor.
- Basin Pipelines, nihai hedefin JSON olaylarını R2'ye veya Iceberg tablolarına aktarmak olduğu durumlar için uygun; K2 ise özel işleme veya diğer hedeflere yazma için daha iyi bir seçim.
Başlarken
Stream'ler cf CLI, Wrangler, dashboard veya API ile oluşturulabiliyor. Olaylar bir HTTP API'si veya Worker binding üzerinden üretiliyor ve K2 veriyi bayt olarak temsil ettiğinden herhangi bir format veya encoding kullanılabiliyor. Tüketim tarafında abonelikler (subscription) işi tüketiciler arasında paylaştırarak okuma paralelliğini sağlıyor ve her tüketici kendi aboneliğini poll ediyor.
Neden önemli
Event streaming büyük ölçüde Kafka'yı veya onun yönetilen eşdeğerlerinden birini işletmek anlamına geliyordu — iyi donanımlı makinelerden oluşan stabil kümeler varsayan sistemler. K2, dayanıklı ve sıralı bir günlüğün sunucusuz yapı taşlarından — edge hesaplama artı object storage — nasıl oluşturulabileceğinin çalışan bir kanıtı. Geliştiriciler için, işletilecek broker olmadan ve saklama maliyetleri ucuz object storage'a bağlı olarak Cloudflare platformuna Kafka biçimli bir primitive ekliyor. Kabaca bir saniyelik p99 üretim gecikmesi, onu gecikmeye hassas iş yükleri için birebir bir alternatif yapmıyor; ancak analitik pipeline'ları, fan-out tüketim ve ani yük üreten sistemleri tamponlama için sunduğu ayrışma — artı R2'den miras alınan dayanıklılık garantileri — onu sunucusuz araç takımının kayda değer yeni bir girdisi yapıyor.
- #cloudflare
- #event-streaming
- #serverless
- #object-storage
- #kafka