オープンソース MQTT ミドルウェア - BifroMQ 技術アーキテクチャの概要

今日のモノのインターネットの分野では、MQTT プロトコルは不可欠な重要な要素となっており、効率的でリアルタイムのデータ送信に対する中核的な技術サポートを提供します。しかし、市場に MQTT 機能を提供する現在のプロジェクトは、主に従来の既存の「すぐに使える」IoT デバイス管理プラットフォームに集中しているため、下位の実装に対する十分な注意と調査が不足しています。レベルの MQTT プロトコル。しかし、私たちは、MQTT プロトコルの特性には、モノのインターネットの分野に限定されるものではなく、より幅広い応用の可能性があると確信しています。この信念があるからこそ、私たちは長年の実践と技術の蓄積を経て、特に大規模な負荷に直面した場合の MQTT プロトコルの効率的な処理に焦点を当てたオープンソース プロジェクト BifroMQ を立ち上げました。

▌中立性と拡張性を兼ね備えたMQTTプロトコルミドルウェア

従来の IoT デバイス管理プラットフォームと比較して、BifroMQ は異なる設計コンセプトに準拠しています。当社は、「ワン パッケージ ソリューション」という従来のパラダイムを大胆に放棄し、高性能 MQTT プロトコルの必要性に焦点を当てました。私たちは、MQTT のプロトコル特性には、より幅広いアプリケーション パラダイムがあると強く信じています。そのため、BifroMQ は、MQTT プロトコルの可能性、特に大規模な負荷を処理する際の優れたパフォーマンスを最大限に発揮することに取り組んでいます。

MQTT 実装に組み込まれた統合ロジック (Kafka など) と比較して、BifroMQ は、MQTT 標準に準拠した方法でダウンストリーム システムと「ドッキング」する傾向があります。たとえば、共有サブスクリプション (Shared Subscription) メカニズムを通じて、統合ロジックが外部化され、より分離されたブリッジングと、高いメッセージ スループットを維持しながら異種システムにメッセージを転送する機能が実現されます。この設計コンセプトにより、BifroMQ は、さまざまなダウンストリーム システムに簡単に適応し、さまざまなビジネス シナリオのニーズを満たすことができる、高度にカスタマイズ可能なミドルウェアになっています。

▌大規模マルチテナントサーバーレスクラウドサービスの構築

BifroMQ の使命は、サーバーレス クラウド サービスのビジネス特性をサポートする大規模マルチテナントに適した MQTT メッセージ システムを構築することです。この使命は、MQTT プロトコルの特性に対する深い理解と、その幅広い応用に対する自信によって推進されています。従来のエンタープライズ レベルのアーキテクチャとは異なり、サーバーレス クラウド サービスは、オンデマンドのリソース割り当て、柔軟な拡張、および柔軟性の高いサービス構築を重視しています。このため、BifroMQ は、マルチテナント アーキテクチャとリソース共有メカニズムを通じて、サーバーレス ビジネスに「共有リソース、排他的なエクスペリエンス」という特性を提供します。

▌エンタープライズレベルの導入: 柔軟性と堅牢性の両方

BifroMQ の目標はマルチテナントのサーバーレス クラウド サービスを構築することですが、マルチテナント + 共有リソースは基本的にシングルテナントの専用リソースを抽象化したものです。当社の哲学に従って、BifroMQ はコア コンポーネントの自由な組み合わせと構成を通じて、一般的な「Shared Nothing」エンタープライズ レベルのクラスター展開を簡単にサポートします。実際、これは BifroMQ オープン ソース バージョンのデフォルトの展開モードでもあります。この柔軟性により、BifroMQ はさまざまなサイズやニーズのシステム アーキテクチャに適応できます。

 

▌BifroMQの構造解析

BifroMQ のアーキテクチャ設計は「第一原理」に基づいており、設計目標を達成するために必要なテクノロジを技術的な観点から分析し、これらのテクノロジを「有機的に」組み合わせて全体的な最適化効果を達成する方法を分析します。したがって、プロジェクトの構造とコード ロジックだけからその意味を完全に理解することは困難です。以下では、3 つの主要な観点から BifroMQ の全体的なアーキテクチャの概要を説明します。

▌分散クラスター管理に基づくモジュラーアーキテクチャ

まず、 MQTT プロトコル自体の実装ロジックに関係なく、BifroMQ の各機能サービス モジュールは、次の図に示すように、一連の分散された基盤となるクラスター構築機能 (ベースクラスター) に基づいて構築されます。

▲ BifroMQ 分散クラスタのモジュール型アーキテクチャ

Base-cluster によって構築されるクラスターは、論理的には Underlay Cluster と Overlay Cluster の 2 つの層に分割されます。アンダーレイ クラスターは「ホスト」クラスターと呼ばれ、BifroMQ の各ホストはオペレーティング システム上で実行されるサービス プロセス (プロセス) に対応します。ホスト クラスタは、ゴシップ クラス プロトコル (SWIM プロトコル) を使用してホスト メンバーシップ サービス (メンバーシップ) を実装し、オーバーレイ クラスタにホスト アドレスの抽象化を提供します。オーバーレイ クラスターは「エージェント」クラスターと呼ばれ、ホスト アドレスに基づいてエージェント レベルのアドレス抽象化 (エージェント アドレス) を提供します。BifroMQ では、Agent は特定の機能を実装する論理サービス (Service) に相当します。これらの論理サービス (base-rpc フレームワークを通じて均一に実装) には、クライアントとサーバーという 2 つの役割を持つモジュールが含まれており、エージェント クラスターの機能を使用してサービスの登録と検出を実現します。

このアーキテクチャの利点は次のとおりです。

1. 論理サービスは、サービスが存在するプロセスから切り離され、展開シナリオに応じてより柔軟なカプセル化と組み合わせが可能になります。

2. 論理サービスの「サービス ディスカバリ」は、従来の登録センターやネーム サービスに依存しないため、単一障害点による運用および保守のリスクが排除され、クラスタのスケールを自由に拡張できます。

▌モジュール式負荷の分離とコラボレーション

次に、プロトコル実装の観点から BifroMQ の構造を説明します。サーバーレスクラウドサービス構築の観点からアーキテクチャを設計する場合、負荷の分離と管理、つまり負荷のマルチテナントの観点から機能実現の合理性を考慮する必要があります。MQTT プロトコルのワークロードを分割して、各負荷が独立したサブクラスターの形式で存在できるようにし、これらのサブクラスターが連携して完全な MQTT 機能を構築します。BifroMQ の MQTT ロードに関連するモジュールは次のとおりです。

  bifromq-mqtt: MQTT プロトコルの長時間接続負荷の処理を担当します。

  bifromq-dist: 信頼性の高いアクセスと大規模なメッセージ ルーティングのための MQTT サブスクリプション ステータスの維持を担当します。

●   bifromq-inbox: CleanSession=false モードでサブスクライバ セッション メッセージへの信頼性の高いアクセスを担当します。

  bifromq-retain: Retain メッセージへの信頼性の高いアクセスを担当します。

これらのモジュール間の連携関係を次の図に示します。

▲BifroMQモジュール連携関係1

▲   BifroMQモジュール連携関係2

bifromq-dist、bifromq-inbox、bifromq-retain モジュールはすべて、base-kv の機能を最大限に活用して、キー ロードに対する分散型の強力な一貫性の永続性を実現していることに言及する価値があります。サーバーレス クラウド サービスの運用および保守シナリオでは、これは SLA を確保するために特に重要です。

▌中立性: 標準指向でスケーラブルな統合

前述したように、BifroMQ は MQTT 標準を実装するミドルウェアとして位置付けられており、中立性と統合性がより重視されています。MQTT 機能を含む他の「パッケージ IoT プラットフォーム」プロジェクトと同じレベルではありません。したがって、「BifroMQ に特定の機能があるか、それとも将来特定の機能をサポートするか」を判断する基準は非常に単純です。MQTT プロトコルで定義されているすべての機能が、bifromq プロジェクトがサポートする必要があるカテゴリに属しており、 MQTT プロトコル定義を超えるすべての機能は、独立したコンポーネントまたはサービスとして存在する傾向があり、MQTT 標準に準拠する方法で BifroMQ と統合されます。このアプローチは、大規模なクラウド サービスの構築に役立ち、関連テクノロジーの成熟を促進します。もちろん、BifroMQ の統合は、ミドルウェア自体と、主にプラグイン、API、メトリクスの 3 つのメカニズムを含むさまざまなビジネス システムとの統合にも反映されます。

▲ 典型的なシーン統合アーキテクチャ

 

  • ビジネスロジック統合を実現する主な手段はプラグイン機構です。bifromq は現在、次のプラグイン インターフェイス モジュールを定義しています。
    • bifromq-plugin-auth-provider: メッセージ トピックに基づいてクライアント認証と Pub/Sub 認証ロジックを実装します。
    • bifromq-plugin-event-collector: さまざまな MQTT 関連イベントによってトリガーされるビジネス ロジックを実装します。
    • bifromq-plugin-setting-provider: テナントレベルのランタイム設定変更管理ロジックを実装します。
  • これらのインターフェイスのリファレンス実装は、BifroMQ-Inside プロジェクトにあります。
  • API メカニズム (近日公開予定) は、サーバー側のサブスクリプション管理や切断などの基本的な管理操作を実装するための BifroMQ のランタイム HTTP 管理インターフェイスを提供します。
  • メトリクス メカニズムは、マイクロメーター ライブラリを使用してインジケーターの定義とサンプリングを実現しますが、収集エンドのタイプを制限しないため、ビジネス インテグレーターはカスタマイズできます (プロジェクトの build-plugin-demo モジュールを参照)。

 

▌概要_

要約すると、これは BifroMQ 技術アーキテクチャの全体的な紹介です。BifroMQ のさまざまなコンポーネントと設計原則を詳しく掘り下げる今後の一連の特集記事にご期待ください。

最後に、BifroMQ の技術アーキテクチャをより深く理解していただくために、9 月 21 日 (木) にBifroMQ オンライン生放送公開授業を開催いたしますので、上記の BifroMQ 開発者交流グループの情報にご注目ください。ライブブロードキャストを事前にロックして、大多数の仲間と話し、交換し、学びましょう!

 

おすすめ

転載: www.oschina.net/news/257113