Kafka Connect
Kafka Connect, Kafka'yı veritabanları, anahtar-değer depoları, arama dizinleri ve dosya sistemleri gibi harici sistemlerle bağlamak için bir framework'tür.
Kavramlar
- Connectors ( Sources, Sinks ⇒ tekrar kullanılabilir bir kod parçası (Java JAR'ları) )
- Transforms ( Bir connector tarafından üretilen veya bir connectore gönderilen her iletiyi değiştirmek için basit mantık )
- Tasks ( Connector'ler + kullanıcı konfigürasyonları )
- Workers ( Task'lar tarafından yürütülür )
- Dead Letter Queue ( Connector hatalarını nasıl ele aldığınız )
- Converters ( Connect ile sistem arasında veriyi çevirmek için kullanılan kod )
Örnek Konektörler
- Elasticsearch Service Sink
- HDFS 2 Sink
- Amazon S3 Sink
- Replicator (Replicator, bir Apache Kafka cluster'ından başka birine topic'leri kolayca ve güvenilir bir şekilde replike etmenizi sağlar.)
- Jira
- MySQL Kaynağı
- Daha fazlası için...
Neden Kendi Entegrasyonlarınızı Yazmayasınız?
Her şey harika görünüyor, ancak muhtemelen "Neden Kafka Connect? Neden kendi entegrasyonlarımızı yazmıyoruz?" diye soruyorsunuz.
Apache Kafka'nın kendi oldukça yetenekli producer ve consumer API'ları ve C/C++, Java, Python ve Go dahil birçok dilde bulunan client kütüphaneleri vardır. Bu nedenle, veriyi bir sistemden almak ve Kafka'ya yazmak için kendi kodumuzu yazmamızın neden mantıklı olmadığını merak etmek mantıklıdır, değil mi? Bir topic'ten okuma ve onu hedef bir sisteme push'lamak için hızlı bir consumer kodu yazmak mantıklı olmaz mı?
Ancak sorun şudur ki, bunu düzgün bir şekilde yapacaksanız, failleri, restartları, loglamayı, esnek bir şekilde scale-in ve scale-out işlemlerini gerçekleştirmeyi ve ayrıca birden çok node üzerinde çalışmayı hesaba katmanız gerekmektedir. Ve bu, serialization ve veri formatları hakkında düşünmeden önce gelir. Elbette, tüm bunları yaptıktan sonra, muhtemelen Kafka Connect'e benzer bir şey yazmış olursunuz, ancak Kafka Connect etrafında var olan yıllarca süren geliştirme, test, production onayı ve community olmadan. Daha iyi bir connector yapmış olsanız bile, bu sorunu çözmek için kod yazmak için harcadığınız tüm zamandan değerli mi?
Esas soru şudur ki, Kafka ile harici veri sistemlerini entegre etmek çözülmüş bir problemdir. Belki özel durumlar için özel bir çözüm gerekebilir, ancak genel olarak Kafka Connect, bir veri sistemini Kafka ile entegre etmeniz gerektiğinde düşündüğünüz ilk şey haline gelecektir.