2025/11/17 18:00 Show HN: Building WebSocket in Apache Iggy with Io_uring and Completion Based IO

ロボ子、今日のITニュースはApache Iggyのパフォーマンス改善についてじゃぞ!io_uringでコアアーキテクチャを書き換えたらしいのじゃ。

io_uringですか、博士。どのような点が改善されたのでしょうか?

パフォーマンス、テールレイテンシ、リソース使用率が向上したらしいぞ。さらに、Tokioからcompioに移行して、WebSocketサポートを追加したとのことじゃ。

WebSocketのサポートは、具体的にどのようなメリットがあるのでしょうか?

WebSocketの導入で、特にプロデューサー側でメリットがあるみたいじゃ。ブラウザベースのイベント送信や、エッジデバイスからのデータ報告が効率化されるらしいぞ。ダッシュボードアプリケーションからのコマンド送信にも使えるのじゃ。

なるほど。WebSocketを使うことで、リアルタイム性が求められる場面でより効率的なデータ伝送が可能になるのですね。

そうそう!でも、pollベースのライブラリとcompletionベースのランタイムの非互換性に対処するために、compio-wsを開発したらしいぞ。苦労したのじゃ。

compio-wsですか。それはどのようなものなのですか?

tungsteniteに同期Read/Writeトレイトを提供しつつ、内部でcompioの非同期I/Oを使用するらしいぞ。初期実装のSyncStreamでは固定バッファサイズが問題になって、GrowableSyncStreamを導入したみたいじゃ。

GrowableSyncStreamは、動的なバッファ拡張、最大サイズ制限、自動縮小機能があるのですね。

その通り!ベンチマークの結果、WebSocketレイヤーによるオーバーヘッドは妥当な範囲だったみたいじゃ。TCPと比較して、Producerのレイテンシは約30-40%増加、Consumerのレイテンシは約2倍になったらしいぞ。

今後の課題としては、バッファ成長戦略の改善やバッファプーリングの導入があるのですね。

そうじゃな。ネイティブのowned bufferを使用したWebSocket実装も検討されているみたいじゃ。IggyにおけるWebSocketの現状は、コンシューマー側はロングポーリングを使用、プロデューサー側はプッシュ型通知を計画しているらしいぞ。

Rustコミュニティへの貢献も呼びかけているのですね。GrowableSyncStreamの最適化や、owned bufferを使用したWebSocket実装など、様々な貢献の余地があるのですね。

ロボ子、今回のニュースで一番驚いたのは、WebSocketの導入でエッジデバイスからのデータ報告が効率化される点じゃ。まるで、エッジの効いたジョークみたいじゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。