http://colobu.com/2016/02/24/kafka-connect/#more
Kafka 0.9+增加了一個新的特性Kafka Connect,可以更方便的創建和管理數據流管道。它為Kafka和其它系統創建規模可擴展的、可信賴的流數據提供了一個簡單的模型,通過connectors可以將大數據從其它系統導入到Kafka中,也可以從Kafka中導出到其它系統。Kafka Connect可以將完整的數據庫注入到Kafka的Topic中,或者將服務器的系統監控指標注入到Kafka,然后像正常的Kafka流處理機制一樣進行數據流處理。而導出工作則是將數據從Kafka Topic中導出到其它數據存儲系統、查詢系統或者離線分析系統等,比如數據庫、Elastic Search、Apache Ignite等。
Kafka Connect特性包括:
- Kafka connector通用框架,提供統一的集成API
- 同時支持分布式模式和單機模式
- REST 接口,用來查看和管理Kafka connectors
- 自動化的offset管理,開發人員不必擔心錯誤處理的影響
- 分布式、可擴展
- 流/批處理集成
流數據平台
基於Kafka, LinkedIn等一些大公司已經建立起架構類似的、可擴展的流數據平台。它包含兩個功能,數據集成和流處理。
Kafka Connect則是為數據集成而生。
多年來,Kafka已經成為處理大數據流的平台標准,成千上萬的公司在使用它。程序員在構建它們的平台的時候也遇到一些問題:
- Schema管理
- 容錯
- 並行化
- 數據延遲
- 分發擔保
- 運營與監控
這些棘手的問題都要程序員去處理,如果有一個統一的框架去完成這些事情,將可以大大減少程序員的工作量,因此Kafka 0.9中提供了這一特性,負責處理這些問題。
Kafka背后的公司confluent鼓勵社區創建更多的開源的connector,將Kafka生態圈壯大起來,促進Kafka Connnect的應用。
Kafka Connnect有兩個核心概念:Source和Sink。 Source負責導入數據到Kafka,Sink負責從Kafka導出數據,它們都被稱為Connector。
當前Kafka Connect支持兩種分發擔保:at least once (至少一次) 和 at most once(至多一次),exactly once將在未來支持。
當前已有的Connectors包括:
Connector Name | Owner | Status |
HDFS | confluent-platform@googlegroups.com | Confluent supported |
JDBC | confluent-platform@googlegroups.com | Confluent supported |
Debezium - CDC Sources | debezium@gmail.com | Community project |
MongoDB Source | a.patelli@reply.de a.topchyan@reply.de |
In progress |
MQTT Source | tomasz.pietrzak@evok.ly | Community project |
MySQL Binlog Source | wushujames@gmail.com | In progress |
Twitter Source | rollulus@xs4all.nl | In progress |
Cassandra Sink | Cassandra Sink | Community project |
Elastic Search Sink | ksenji@gmail.com | Community project |
Elastic Search Sink | hannes.stockner@gmail.com | In progress |
Elastic Search Sink | a.patelli@reply.de a.topchyan@reply.de |
In progress |
Apache Ignite Sink | Apache Ignite Project | Community project (Planned for Apache Ignite 1.6 Release) |
Connectors的發布和開發可以參照官方文檔。如果以前你通過producer API/consumer API寫了一些導入導出的功能,不妨嘗試一下換成Kafka Connect,看看是否簡化了你的代碼,提高了應用可擴展和容錯的能力。
參考文檔