Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

先日、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の実装
rkyymmt@github
Edge AI, Scala, mbed, BLE, FPGA
future
ITを武器とした課題解決型のコンサルティングサービスを提供します
http://future-architect.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away