debezium経験と踏み込み
2565 ワード
debezium
のメンテナンスと半年の使用.管理されていた単一のdebezium
クラスタには、10
個程度のdebeizum
タスクがある.あるライブラリのdebezium
で購読されたテーブルの数は数十個ほどあり、多くの経験が得られ、多くの穴を踏んだ.以下に、さまざまな問題と良い実践をリストします.ふみだめ
debezium
坑が多い!!最大の穴はkafka connect
のrebalance
です.新しいdebezium connector
がクラスタに送信されるたびに、クラスタのrebalance
がトリガーされる.クラスタ内部のconnector
タスクが再起動し始め、表面的にはタスクの再割り当てが見られ、debezium
インスタンスごとにタスクに均一に割り当てることができ、確かに優雅である.しかし、実際には、クラスタ内のすべてのconnector
の動作を再起動します.自身のdebezium
のいくつかの優雅でない特性のため、再起動はクラスタ内の複数のconnector
が停止する可能性がある.したがって、クラスタをトリガするrebalance
をできるだけ少なくする必要がある.しかし、この巨大な穴は実は避けられない.他のいくつかの大きな穴:
debezium
のhistory topic
は、複数のconnector
によって共用されてはならない.新しいconnector
がクラスタ内のconnector
で使用されているhistory topic
を使用している場合、クラスタ内のhistory topic
を使用しているconnector
は異常終了を放出します(これは0.5.xバージョンの場合、異常を放出しません!!).connector
の各ライブラリに対応し、connector
はdebezium
のあるライブラリにアクセスする必要があるテーブルのみを購読する.ライブラリのホワイトリストとテーブルのホワイトリストを設定することで実現できます.(1つのタスクが複数のライブラリを購読し、複数のテーブルが非常に不正であり、その後の新規テーブルのコストが非常に大きい)debezium connector
再起動は、毎回成功するわけではありません.つまり、connector
再起動は、タスクが停止する可能性があります.history topic
は非常に大きい可能性があり、connector
が再起動するとhistory topic
のすべてのデータが読み出され、history topic
のデータ量が非常に大きい場合、connector
は所定の時間内に起動できない可能性があり、connector
は異常起動に失敗した.3
このピットはrebalance
に遭遇すると、比較的深刻な問題が発生します.クラスタ内に複数のconnector
があり、複数のconnector
のhistroy topic
が大きい場合、rebalance
以降、これらのconnector
は再起動に失敗する可能性が高い.1
とrebalance
にも関係があります.debezium
クラスタ内のconnector
の数が多い場合、再起動するとhistory topic
が共用される異常が発生する可能性がありますが、実際には共用していません!!推奨
debezium
内でできるだけ多くのconnector
を運転しないでください.同じ数のマシンの場合、マルチクラスタの効果は単一クラスタのマルチサーバよりずっと良いです!connector
を個別のクラスタに移す.例えば、私の会社では、ライブラリ内の数十のテーブルを購読する必要があります.これにより、タスクの再起動が非常に遅くなり、タスクを停止するのに時間がかかります.他のconnector
と一緒に配置すれば、よくありません.debezium
をk8s
に配備することを推奨し、クラスタの拡張、縮小が便利です.connector
をk8s pod
に対応させて、互いに影響を及ぼさないように、本物のリソースを分離することを試みることができる.もちろんこれは~.~
を試したことがありません.たぶんこれだけでしょう.