LoginSignup
18

More than 5 years have passed since last update.

Protocol Buffers はもう古い? 爆速プロトコル SBE とメッセージングライブラリ Aeron!

Last updated at Posted at 2016-12-12

先日、Akkaの最新ドキュメントをチェックしてみたところ、何やら、Akka Remotingをリニューアルしているらしく、新版のコードネームは「Artery」というらしいです。

Akka Remoting (codename Artery)

ちなみに、従来の Akka Remoting は、Nettyを使って、実際のデータ転送部分は実現していました。

Artery では、このデータ転送部分の実装は、メッセージングライブラリである Aeron を使っており、この Aeron が Simple Binary Encoding (SBE) を使用しています。

stack diagram

Artery には、次のような特徴があります。

  • TCP ではなく UDP ベースの実装
  • 高スループット、低レーテンシー
  • ユーザメッセージから内部制御メッセージを分離して安定性を向上させ、与えられたサブチャンネルを使った、ヘビーなトラフィック発生時の失敗の検知を抑制する
  • 自由な配置
  • 小さなメッセージによる干渉を避けるための大きなメッセージを使った分離されたサブチャンネルのサポート
  • 小さなメッセージのためのオーバーヘッドを削減するための通信時のアクターパスの圧縮
  • バイトバッファを直接使った高速なシリアライゼーション・デシリアライゼーションのサポート
  • 実装の仕様のイベントによるユーザログを汚さない、実装の問題のデバッグを助けるための内蔵されたフライトレコーダー
  • 大規模システムのローリングアップデートをサポートのための、Akkaのメジャーバージョン間で提供されるプロトコルの安定性

そして、 Artery で利用されている Aeron の特徴は、信頼性の低いメディアプロトコル上で動作することを前提としており、 UDP 以外でも、 InfiniBand なども想定されているようです。
また、実際の処理は、メディアドライバーという形で、プロトコル毎のサポートを実装しています。
現在は、 Java と C の実装があり、今回見つけることができませんでしたが、FPGA版もあるようです。

次に、 Aeron で利用されている SBE の特徴は次のようなものになります。

  • 低レイテンシー
  • Protocol Buffers よりも 16〜25倍高いスループット
  • Java、C++、.NETの実装

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18