Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
18
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

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

先日、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の実装
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
18
Help us understand the problem. What are the problem?