Dendrite、Matrixプロトコルを実装した通信サーバー

Dendriteは、 Matrixチームが開発している通信サーバーであり、Matrixサーバーコンポーネントの第2世代実装として位置づけられています。

Pythonで記述されたSynapseリファレンスサーバーとは異なり、DendriteコードはGoで開発されています。 両方の公式実装は、Apache2.0ライセンスの下で配布されます。

Rumaプロジェクトの一環として、マトリックスサーバーの別のバージョンがRust言語で開発されており、MITライセンスの下で配布されています。

新しいサーバーは、高い効率性、信頼性、拡張性を実現することを目指しています。

デンドライトについて

Dendriteはパフォーマンスの面でSynapseを上回っており、動作に必要なメモリ量がはるかに少なく、複数のノード間で負荷分散を行うことで拡張性も高い。

Dendriteアーキテクチャは水平スケーリングをサポートしており、マイクロサービスという形でコントローラを分離することに基づいています。各マイクロサービスのインスタンスは、データベース内に独自のテーブルを持ちます。

ロードバランサーは、マイクロサービスに呼び出しを送信する責任があります。 スレッド(goルーチン)は、コード内の操作を並列化するために使用されます。これにより、すべてのCPUコアのリソースを個別のプロセスに分割せずに使用できます。

Dendriteは、モノリシックモードとマルチコンポーネント(ポリリス)モードの2つの動作モードをサポートしています。

  • モノリシックモードでは、 すべてのマイクロサービスは実行可能ファイルにリンクされ、プロセスで実行され、相互に直接対話します。
  • マルチコンポーネントモードの場合 (クラスター)、マイクロサービスは、異なるノードに多様性がある場合でも、個別に起動できます。 マルチコンポーネントモードでのコンポーネントの相互作用は、内部HTTPAPIとApacheKafkaプラットフォームを使用して実行されます。

開発は、Matrixプロトコルの仕様に基づいて、Synapseを使用した一般的なsytestテストと新しいComplementスイートのXNUMXセットのテストを使用して実行されます。

現在の開発段階では、Dendriteはクライアント/サーバーAPIテストの56%、フェデレーションAPIテストの77%に合格しており、実際の機能カバレッジはクライアント/サーバーAPIで70%、フェデレーションAPIで95%と推定されています。

ベータ版段階は、Dendriteが初期展開の準備が整い、定期的な新リリースによる開発段階に移行できることを示しています。リリース間では、データベースのストレージスキームが更新されます(リポジトリからフラグメントをインストールする場合とは異なり、更新後もデータベースの内容は失われません)。

下位互換性を損なう、データベース構造を変更する、または構成の変更を必要とする変更は、メジャーリリースでのみ提供されます。

現在、小規模なホームサーバーやP2Pノードの構築には、PostgreSQL DBMSと組み合わせたDendriteのモノリシックモードの使用が推奨されています。SQLiteは、同時実行処理に関する未解決の問題があるため、現時点では推奨されていません。

Dendriteにまだ実装されていない機能には、メッセージの確認、既読通知、プッシュ通知、OpenID、メール連携、サーバーサイド検索、ユーザーディレクトリ、ユーザー無視リスト、グループおよびコミュニティの作成、ユーザーのオンラインプレゼンスの評価、ゲスト入力、サードパーティネットワークとの連携などがあります。

チャットルームの操作に関する基本機能(作成、招待、認証ルール)、ルーム内の参加者のフェデレーションの手段、オフラインから戻った後のイベントの同期、アカウント、プロファイル、ダイヤル表示、ダウンロードおよびアップロード編集ファイル(Media API)は、メッセージ、ACL、タグ付け、エンドツーエンドの暗号化デバイスおよびキーリストに使用できます。

分散型通信を組織するためのMatrixプラットフォームは、トランスポートプロトコルとしてHTTPS + JSONを使用し、WebSocketsまたはCoAP + Noiseに基づくプロトコルも利用できることを思い出してください。このシステムは、相互に通信し、共通の分散型ネットワークに統合できるサーバーのコミュニティとして構成されています。

メッセージは、メッセージ送信参加者が接続されているすべてのサーバーに複製されます。メッセージは、Gitリポジトリ間でコミットが伝播するのと同様の方法で、サーバー間で伝播します。

出典:https://matrix.org


Googleで優先ソースとして追加する