あなたのイベントメッシュの状態を問い合わせるために



このブログ記事では、GraphSQLの拡張可能なAPIモデルのパワーをどのように活用するかについて説明します.安event mesh イベントブローカーの相互接続されたネットワークは、世界中のどこでも切り離されたアプリケーション、雲サービスと装置の間でイベントを分配して、どんな雲、端またはオン構内環境ででも動いています.
ここにイベントメッシュの高レベルのアーキテクチャがあります.

この図では、次のネットワークがありますSolace PubSub+ Event Brokers PREM、パブリッククラウドで、プライベートクラウドでも展開.それらはダイナミックメッセージルーティングと呼ばれるプロトコルを通して一緒にリンクしますDMR ). DMRについて理解する重要なことは、イベントが経路またはルーティング規則を事前に定義する必要なしに行く必要がある場所にルーティングされるだけであるということです.
例えば、あなたがいるならApache Beam グーグルクラウドデータフローhttps://cloud.google.com/dataflow ) イベントを生み出すマイクロサービスGoogle Cloud Platform そして、あなたはAWSのマイクロサービスにルーティングされるようにしたい、AWSのすべてのマイクロサービスはビームを通してビーム\データフローイベントに興味を表現することですTopic Subscription ’.

残りのフルAPIを管理する/監視PubSub +イベントブローカー


イベントメッシュのコアコンポーネントはイベントブローカです.SolaceのPubSub +イベントブローカーはmulti-protocol 複数のフォームファクタに含まれるイベントブローカーhardware appliances , software , and as a service . イベントブローカーは、イベントメッシュにクライアント接続を処理し、イベントメッシュ内の隣接ノードにデータをルーティングします.
すべてのPubSub +イベントブローカーは、Solace要素管理プロトコルと呼ばれる残りのフル管理インターフェイスを公開しますSEMP ) – これは、イベントブローカーのさまざまな内部の統計情報と管理機能へのアクセスを提供します.
たとえば、ブローカーに対してSEPクエリを実行することで、どのIPアドレス/ユーザーがブローカーに接続されているかを把握できます.別のクエリでは、どのトピックのサブスクリプションをブローカーでアクティブに理解を与える.

イベントメッシュの抽象化レイヤとしてのGraphSQL


SORACEには、SELEPのPubSub + MonitorとPubSub + InsightなどのSpecial APIのような監視ソリューションが用意されています.また、SEPASP APIの上に構築され、ログを集めています.
Semp APIを利用すると、イベントメッシュのすべてのノードを定期的にポーリングでき、統計情報をデータベースに格納できます.その後、GraphSQLサーバーを使用してデータベースの結果を前面に表示し、次のような質問に答えることができる表現型のAPIを構築できます.
  • どのノードに指定されたトピックでアクティブなサブスクリプションがありますか?
  • どのユーザーが特定のトピックを購読しているのですか?
  • 私のイベントメッシュのどのリンクが最もトラフィックを経験しているか.
  • どのトピックが最もイベントメッシュを介して購読されている?
  • サンプル実装


    私は、イベントメッシュのノードを質問して、データベースにそれを格納する基本的なノード・アプリケーションを書きましたPrisma – 強力なJavaScriptのORMライブラリ.私も、グラフを通してPrismaでテーブルを公開するGraphSQLサーバを書きました.ユーティリティは現在、クライアントとトピックのサブスクリプションを格納し、公開するが、より多くのユースケースをカバーするために簡単に拡張することができます.

    あなたはgithubレポ/セットアップ命令を見つけることができますhere .
    ここでいくつかのサンプルのクエリとは、このアプリケーションのスタックを使用して得ることができる結果です

    どのノードが私のトピックから購読されますか?


    
    query{
    findClientsForSubscription(topicString: "my/topic")
    {
       subscription
       clients {
         nodeName
       }
    }
    }
    
    
    結果:
    
    {"data": {
      "findClientsForSubscription": [
      {
        "subscription": "my/topic",
        "clients": [
         {
           "nodeName": "Cloud Broker"
         },
         {
           "nodeName": "Local Broker"
         }
        ]
       }
      ]
     }
    }
    
    

    どのユーザとノードが私のトピックを購読しますか?


    
    Query{
    findClientsForSubscription(topicString: "my/topic"){
      subscription
      clients {
        nodeName
        userName
      }
    }
    }
    
    
    レスポンス
    
    {"data": {
      "findClientsForSubscription": [
        {
          "subscription": "my/topic",
          "clients": [
            {
              "nodeName": "Cloud Broker",
              "userName": "local-user"
            },
            {
              "nodeName": "Local Broker",
              "userName": "default"
            }
          ]
        }
      ]
    }
    }
    
    

    結論


    イベントメッシュは、動的に目的の目的地と他の場所にイベントをルーティングする強力なプラットフォームです.GraphSQLは、あなたのイベントメッシュについての特定の質問に対する答えを見つけるのを助けることができる非常に強力な質問言語です.
    郵便Using GraphQL to Query the State of Your Event Mesh 最初に現れたSolace .