09 Nisan 2018 Güncellemesi : Günümüzde verilerinizi Kafka'da işlemek için Kafka'nın olay akışı veritabanı olan ksqlDB'yi de kullanabilirsiniz . ksqlDB, Kafka'nın Streams API'sinin üzerine inşa edilmiştir ve "akışlar" ve "tablolar" için birinci sınıf destekle birlikte gelir.
Tüketici API'si ile Akışlar API'si arasındaki fark nedir?
Kafka's Streams API ( https://kafka.apache.org/documentation/streams/ ), Kafka'nın üretici ve tüketici müşterilerinin üzerine inşa edilmiştir. Kafka tüketici istemcisinden önemli ölçüde daha güçlü ve aynı zamanda daha etkileyici. Kafka Streams API'nin bazı özellikleri şunlardır:
- Tam olarak bir kez işleme anlamını destekler (Kafka sürümleri 0.11+)
- Akış birleştirmeleri , toplamalar ve pencereleme dahil olmak üzere hataya dayanıklı durum bilgisi olan (ve tabii ki durum bilgisi olmayan) işlemeyi destekler . Başka bir deyişle, uygulamanızın kullanıma hazır işlem durumunun yönetimini destekler.
- Destekler olay zamanlı işlem yanı sıra dayalı işlenirken işleme zamanında ve yenmesi zamanlı
- Akış işlemenin veritabanları ile buluştuğu yerde hem akışlar hem de tablolar için birinci sınıf desteğe sahiptir; pratikte, çoğu akış işleme uygulaması, ilgili kullanım durumlarını uygulamak için hem akışa hem de tabloya ihtiyaç duyar, bu nedenle bir akış işleme teknolojisi iki soyutlamadan herhangi birine sahip değilse (örneğin, tablolar için destek yoksa) ya sıkışmışsınızdır ya da bu işlevi kendiniz elle uygulamalısınız (bunda iyi şanslar ...)
- En son işlem sonuçlarını diğer uygulamalara ve hizmetlere göstermek için etkileşimli sorguları ('sorgulanabilir durum' olarak da adlandırılır) destekler
- Daha etkileyici mi: ile bu gemi (1) bir fonksiyonel programlama tarzı DSL gibi operasyonlarla
map
, filter
, reduce
hem de (2) bir zorunluluk tarzı İşlemci API örneğin karmaşık olay işleme (CEP) yapmak için ve (3) hatta birleştirebilirsiniz DSL ve İşlemci API'si.
Bkz http://docs.confluent.io/current/streams/introduction.html için daha ayrıntılı ama aynı zamanda alt düzey Kafka tüketiciye farklılıkları anlamak için yardımcı olmalıdır Kafka Akım Arayüzü, hala ileri düzeyde giriş müşteri. Bir de var Kafka Akışları API için Docker tabanlı öğretici , ben blogged hakkında bu hafta başlarında.
Öyleyse, Kafka Streams API'si, Kafka'dan mesajlar tükettiğinden veya Kafka'ya mesaj ürettiğinden nasıl farklıdır?
Evet, Kafka Streams API hem verileri okuyabilir hem de Kafka'ya veri yazabilir.
Tüketici API kullanarak kendi tüketici uygulamamızı yazıp gerektiği gibi işleyebildiğimiz veya tüketici uygulamasından Spark'a gönderebildiğimiz için neden buna ihtiyaç var?
Evet, kendi tüketici uygulamanızı yazabilirsiniz - bahsettiğim gibi, Kafka Streams API, Kafka tüketici istemcisini (artı üretici istemciyi) kullanır - ancak Streams API'nin sağladığı tüm benzersiz özellikleri manuel olarak uygulamanız gerekir. . "Ücretsiz" olarak aldığınız her şey için yukarıdaki listeye bakın. Bu nedenle, bir kullanıcının daha güçlü Kafka Streams API'sinden ziyade düşük seviyeli tüketici istemcisini seçmesi oldukça nadir görülen bir durumdur.