チュートリアルとは
本来は個別指導、家庭教師、指導書などを意味する言葉で、パソコンの場合、特定のソフトやハードを初めて使う人向けに、機能や使い方の概要を教える機能を指します。 操作手順がアニメーション表示されたり、利用者が実際のソフトと同じ操作を画面上で練習できるなどの機能があります。
僕はお笑いコンビの方も好きです。がそれはさておき
結論
コレ
https://debezium.io/documentation/reference/tutorial.html
docker composeでやりたい場合はコレ
https://github.com/debezium/debezium-examples/tree/master/tutorial
RedHatの人がブログも書いてますね
https://rheb.hatenablog.com/entry/debezium-intro
〜 完 〜
というのでは味気ないので
一応どういうチュートリアルなのか、噛み砕きます。
というより、僕がこのチュートリアルを触ってみた感想と気になったところの説明のブログですね。これは。
Dockerを使って動きを確かめることが出来る
dockerさえあれば確かめられる。podmanでも可。
Debezium側がサンプル用のimageを作ってくれているので以下を仕込んでいく
- ZooKeeper
- Kafka
- MySQL
- Kafka Connect(Debeziumのコネクタプラグイン同梱)
docker imageたちはこちらにあります
https://github.com/debezium/docker-images
composeしたものはこちら
https://github.com/debezium/debezium-examples/tree/master/tutorial
気付いたと思いますが
これはもうKafkaですよね。DebeziumはKafkaを前提としたツールというかライブラリです。厳密にはKafka ConnectのプラグインとしてDebeziumというものがあるという位置付けです(Source Connector)。
ここにも書いてある。
https://debezium.io/documentation/reference/features.html
アーキテクチャはこういうもの
https://debezium.io/documentation/reference/architecture.html
このチュートリアルでDebeziumがやっていること
- MySQLのbinlogをKafka Connectに登録されたDebezium MySQLコネクタでwatch
- データベースに変更があった場合に検知し、Kafkaブローカーにイベントを送信
というココの部分です。
Kafkaのtopicはどういう単位でできるのか
以下の形式でtopicが出来ます。超ざっくり言うと、KafkaのtopicはMQのqueueみたいな箱です。
${db_sever_name}.${db_name}
${db_sever_name}.${db_name}.${table_name}
このチュートリアルで言うと
DBサーバーは dbserver1、db(schema)は inventory。
テーブルはproducts、products_on_hand、customers、ordersなので以下のようなtopicが出来ます。
dbserver1
dbserver1.inventory.products
dbserver1.inventory.products_on_hand
dbserver1.inventory.customers
dbserver1.inventory.orders
つまり、例えば productsテーブルのCRUD操作のイベントをKafkaからサブスクライブしたい場合は dbserver1.inventory.products
を見れば良いという感じです(注: CRUDと言ってもデータの変更検知なのでSELECTはイベント発火されない)。
アーキテクチャの図にはSourceとSinkがあったけど…?
アーキテクチャの図を見るとSinkとしてElasticsearchなど何らかのストレージ(と言って良いんだろうか)に書き込みを行う流れでしたが、このチュートリアルだとそもそもSinkConnectorを設定していないので変更イベントを書き込むことは無いですね。
単純にKafkaブローカーにconsumerのcliでアクセスしてデータ変更イベントのjsonを眺めているだけです。Kafka Connect用のElaticsearch Connector(sink)を仕込むことでDebeziumからKafkaを介してElaticsearchにJsonデータを投入できるなどが出来るようになります。
まとめ
- DebeziumはKafka Connectに乗っかっている
- Kafkaのトピックはテーブル毎に出来る(テーブルの変更検知)
- Kafkaのトピックはスキーマ用も出来る(DDLなどの変更検知)
参考URL
https://debezium.io/documentation/reference/tutorial.html#starting-kafka-connect
https://docs.confluent.io/ja-jp/platform/6.0.1/connect/devguide.html#connect-devguide
https://github.com/debezium/debezium-examples/tree/master/tutorial
0 件のコメント:
コメントを投稿