介绍Debezium

什么是Debezium?

这个软件可以将对数据库表的更改存储到Kafka主题中,使应用程序能够以流式方式监视和接收更改内容。从2016年初开始,它由RedHat领导的开发。它似乎最初是作为实施微服务的解决方案而开发的,但它可以在与微服务无关的情况下使用。目前,它支持MySQL和MongoDB,但未来将支持PostgreSQL和Oracle。

構成図

DBMS记录更改内容到事务日志中。在MySQL中,这是二进制日志。然后,Kafka Connect服务通过连接器监视这些更改。一旦检测到更改,它会将更改内容以JSON格式序列化为”事件”,并将其记录到以表为单位创建的Kafka主题中。应用程序可以使用Kafka的消费者等方法连接到Kafka消息代理并监视主题。一旦接收到更改事件,应用程序可以将其用于其他处理。

我认为您可以查看常见问题解答(FAQ)以了解机制的详细信息。
http://debezium.io/docs/faq/

这是将2017年1月的信息翻译成日语的版本。
http://wp.me/p1mQkm-3A

特点

目前,有其他软件也可以将数据库更改内容进行流式处理,但是Debezium具有以下优点。

    • DB特有の処理をコネクタに隔離するアーキテクチャです。将来、様々なDBMSに対応する予定があります。

 

    • DBMSの中にDebeziumの設定を格納しないような設計思想となっています。

 

    • Debeziumを起動する前のテーブル変更も、トランザクションログが残っている限り検知できます。

 

    • KafkaメッセージブローカーとKafka Connectサービスは、それぞれクラスタ構成にして運用できます。

 

    • Debezium(Kafka)の停止中に行われたDBテーブルの変更は、復旧(再起動)後に拾われます。

 

    DBテーブルの内容と、その時点でのDBのテーブル構造の両方が常にイベントに入ってくるので、テーブルのDDLが運用中に変更されるようなケースでも、アプリケーションが追従しやすい仕組みになっています。(ただしそのために、毎回送られてくるJSONドキュメントが大きいのが難点)

我来试试

首先,建议你完成一遍教程。你可以在这里找到教程:http://debezium.io/docs/tutorial/

这是将2017年1月时点的内容翻译成日语的版本。
http://wp.me/p1mQkm-1i

教程虽然很长,但大致上会按照以下的方式进行。

    1. 按顺序启动Zookeeper、Kafka(消息代理)、MySQL服务器/客户端和Kafka Connect服务的Docker容器。

 

    1. 创建一个新的MySQL连接器来服务于Kafka Connect服务。

 

    1. 启动一个用于监听Kafka主题并向数据库表执行UPDATE和DELETE操作的容器,同时确认记录在主题中的内容。

 

    停止Kafka Connect服务,然后向数据库表发出几个查询,并在重新启动Kafka Connect服务后确认对服务停止期间数据库的更改是否反映在主题中。

如果你想要了解更加详细的信息,可以阅读各个数据库连接器的文档。

MySQL连接器
http://debezium.io/docs/connectors/mysql/

源码和社区

    • GitHubリポジトリ

 

    • https://github.com/debezium/debezium

 

    • JIRA

 

    https://issues.jboss.org/projects/DBZ/issues/DBZ-174?filter=allopenissues

请在JIRA上报告问题,不要使用GitHub的Issue。在发起Pull Request之前,请先在聊天或邮件列表中进行讨论。请务必阅读Contribute.md文件。

    • チャット

 

    • https://gitter.im/debezium/dev (開発作業用)

 

    • https://gitter.im/debezium/user (使い方が分からないなどの相談用)

 

    • メーリングリスト

 

    https://groups.google.com/forum/#!forum/debezium

邮件列表的活跃度相对较低,而开发者常常在聊天中阐述他们的观点。
在聊天中,不一定需要即时参与。你可以在自己方便的时候写下来然后就可以放置不管了。

bannerAds