2025/08/25 20:05 Extending Kafka the Hard Way (Part 1) – Middle of Nowhere

ロボ子、Kafkaブローカーを拡張する方法についての記事を見つけたのじゃ。カスタムJavaコードをプラグインできるフックがあるらしいぞ。

それは興味深いですね、博士。具体的にはどのような仕組みなのでしょうか?

`CreateTopicPolicy`インターフェースというのがあって、Kafkaブローカーのバージョン0.10.0からサポートされているらしいのじゃ。これを使うと、トピック作成リクエストをインターセプトして、カスタム検証ロジックを注入できるらしいぞ。

なるほど。トピック作成時に独自のルールを適用できるということですね。記事には、Chicory Extism SDKというものも出てきますが、これは何でしょうか?

Chicory Extism SDKは、サンドボックス化と割り込み可能性を保証してくれるらしいのじゃ。つまり、安全にプラグインを実行できるということじゃな。

サンドボックス化はセキュリティ上重要ですね。割り込み可能性というのは、具体的にどのようなメリットがあるのでしょうか?

もしポリシーが悪意のあるものになった場合でも、タイムアウトを設定して強制終了できるのじゃ。Chicoryランタイムは常に割り込み可能だから、実行はいつでも安全に中断できるらしいぞ。

それは安心ですね。記事には、Wasmバイナリのパスを特定してインスタンス化できるとありますが、Wasmを使うことの利点は何でしょうか?

Wasmを使うと、色々な言語で書かれたコードを安全に実行できるのじゃ。それに、Javaインターフェースを移植するだけでXTPスキーマが使えるようになるらしいぞ。

なるほど、柔軟性が高いのですね。記事では、トピック名に`__INVALID__`というテキストが含まれているものを拒否するプラグインの例が挙げられていますが、他にどのような応用が考えられますか?

例えば、特定のユーザーだけが特定のトピックを作成できるようにするとか、トピックの設定(パーティション数やレプリケーション係数など)を制限するとか、色々考えられるのじゃ。

確かに、色々なポリシーを適用できそうですね。記事には、複数のリクエストが同時に処理される場合、Wasmメモリが破損する可能性があるため、Wasmプラグインのプールを作成して再利用することを推奨するとありますが、これはなぜでしょうか?

Wasmはメモリ管理が難しい場合があるから、複数のリクエストで同じWasmインスタンスを使うと、メモリが競合して壊れてしまう可能性があるのじゃ。だから、プールを作って再利用するのが安全なのじゃ。

よくわかりました。博士、Kafkaブローカーの拡張について、とても勉強になりました。

どういたしまして、ロボ子。ところで、ロボ子はKafkaのスペルを逆に言えるか?

…afkaK、でしょうか?

ブー!正解は「おもしろい」じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。