Apache Kafka 向けストリームコネクト の使用

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む8読むのに数分
  • Apache Kafka 向けストリームコネクトApache Kafka 環境を ServiceNow インスタンスに接続します。

    Apache Kafka は、複数のシステム間でデータを交換するための統一された方法を提供する分散イベントストリーミングプラットフォームです。Apache Kafka 向けストリームコネクト は Kafka 環境を ServiceNow インスタンスにリンクし、インスタンスと外部システム間でデータをストリーミングできるようにします。

    注:
    Apache Kafka 向けストリームコネクトオートメーションエンジンにはサブスクリプションとApache Kafka 向けストリームコネクトサブスクリプションが必要です。詳細については、「https://www.servicenow.com/products/automation-engine.html」を参照してください。

    メリット

    • Kafka イベントを大規模に公開して処理します。ServiceNow インスタンスから Kafka 環境にイベントを公開し、外部システムからの Kafka イベントを低レイテンシで大量に使用します。

    • Kafka イベントを生成および消費するフローを構築します。Stream Connect は フローデザイナー と統合され、ローコードで Kafka メッセージを公開および処理できます。
    • Kafka 環境からデータをインポートし、既存の強力な変換エンジン (RTE) または変換マップ構成を使用してそのデータを処理します。
    • 独自のスクリプトを使用して Kafka トピックからのデータを処理するコンシューマーを構成します。
    • 統計情報とパフォーマンス測定基準の詳細なレポートを使用して、コンシューマーのパフォーマンスを監視します。

    コンポーネント

    Stream Connect には以下のコンポーネントがあります。

    プロデューサー

    プロデューサーはイベントを Kafka 環境に公開します。Stream Connect には 2 つのプロデューサーがあります。

    • フローデザイナー の Kafka プロデューサーステップ
    • ProducerV2 API
    コンシューマー

    コンシューマーは Kafka 環境からイベントを読み取って処理します。Stream Connect には複数のコンシューマーがあります。

    • フローデザイナー での Kafka メッセージトリガー
    • 抽出変換ロード (ETL) コンシューマー
    • 変換マップコンシューマー
    • スクリプトコンシューマー
    トピックとトピックの名前空間

    イベントはトピックに編成されて保存されます。1 つのトピックには同じタイプのイベントが格納されます。トピックはパーティションに分割されます。イベントにはキーがあります。同じキーを持つイベントは同じパーティションに格納されます。

    トピックはトピックの名前空間にリンクされます。名前空間を使用して、論理的な方法でトピックを整理できます。たとえば、取得元の Kafka クラスターに基づいてトピックをグループ化できます。名前空間を使用して、どのドメインがドメイン分離されたインスタンスのどのトピックにアクセスできるかを設定することもできます。詳細については、「Managing namespaces and topics in Hermes」を参照してください。

    サブスクリプション

    サブスクリプションは、コンシューマーに関連付けられたレコードです。メッセージを消費する Kafka トピックの名前やトピックが持つパーティションの数など、コンシューマーに関する構成情報が格納されます。サブスクリプションレコードは、Kafka ストリームがアクティブ化されると作成されます。

    各サブスクリプションレコードにあるいくつかの測定基準を使用すると、トピックからコンシューマー読み取りを行うパフォーマンスを表示できます。詳細については、「Kafka サブスクリプションと統計情報の表示」を参照してください。

    パーティショングループ

    パーティショングループは、一連のトピックパーティションです。たとえば、トピックに 6 つのパーティションがある場合、各グループに 2 つのパーティションがある 3 つのパーティショングループに分割できます。

    Kafka コンシューマージョブ

    トピック内に新しいイベントがないか Hermes を定期的にチェックするジョブ。ジョブは空きパーティショングループを選択し、そのサブスクリプションを取得します。サブスクリプションでトピック名が得られ、ジョブはそのトピックのメッセージのパーティションをチェックします。

    Kafka ストリーム (次の画像には表示されていません)

    Kafka ストリームは、コンシューマーのデータストリームを定義するレコードです。フローデザイナー で Kafka メッセージトリガーを使用している場合、Kafka ストリームが自動的に作成されます。別のコンシューマーを使用している場合は、手動で作成する必要があります。

    Kafka 環境を ServiceNow インスタンスにリンクするために、Stream Connect は Hermes メッセージングサービス を使用します。Hermes メッセージングサービス を使用すると、インスタンスで大量の Kafka イベントを生成して消費できます。Kafka 環境とインスタンス間のデータフローを管理します。詳細については、「Hermes Messaging Service」を参照してください。

    次の図は、Stream Connect の主要なコンポーネント、ServiceNow とサードパーティアプリケーションとの関連性、Hermes を介して Kafka 環境に接続する方法を示しています。

    図 : 1. Stream Connect コンポーネントの概要
    Stream Connect コンポーネントと、Kafka、ServiceNow、および Hermes メッセージングサービス との関連性を示す図。

    Stream Connect および フローデザイナー

    Stream Connect を使用して Kafka イベントを生成および消費するフローを構築し、 フローデザイナー. Stream Connect には、Kafka イベントを消費するためのフロートリガーと、Kafka イベントを生成するためのアクションステップがあります。

    Kafka メッセージトリガーを使用して、Kafka イベントを処理するフローを作成します。Kafka からデータを消費してテーブルに挿入するフローを構築するか、スポークを使用してサードパーティ環境にデータを伝達することができます。

    フローがアクティブ化されると、トリガーが有効になります。アクティブ化されると、指定された Kafka トピックにメッセージがあるときはいつでもトリガーがフローを開始します。Kafka メッセージトリガーを使用する場合は、Kafka ストリームまたはサブスクリプションレコードを作成する必要はありません。フローがアクティブ化されると、どちらも自動的に作成されます。フローがアクティブである限り、トピックからメッセージが読み取られます。

    Kafka プロデューサーステップを使用して、Kafka 環境のトピックにイベントを公開するアクションを作成します。たとえば、このステップを使用して ServiceNow 内のインシデントの更新に関するメッセージを作成し、そのメッセージを Kafka 環境のトピックにプッシュすることができます。

    ETL、変換マップ、およびスクリプトコンシューマー

    既存の RTE または変換マップ構成を使用して、Kafka 環境からデータをインポートします。抽出変換ロード (ETL) コンシューマーおよび変換マップコンシューマーは、Kafka メッセージからのペイロードの取得、データの変換、テーブルのレコードの挿入または更新を効率的に行えるようにして、データのインポートを簡素化します。予定されているデータインポートから Stream Connect を使用する方法に切り替え、同じ構成でデータを処理できます。

    スクリプトコンシューマーを使用して、Kafka 環境からデータを処理することもできます。スクリプトコンシューマーは、メッセージ内のデータが構造化されていない場合、またはコードを使用したデータルックアップが必要な場合など、より高度なユースケース用です。

    抽出変換ロード (ETL) コンシューマーの構成変換マップコンシューマーの構成、または スクリプトコンシューマーの構成 を行う場合は、Kafka ストリームの作成 も行う必要があります。

    ProducerV2 API

    ProducerV2 API を使用して Kafka トピックにイベントを公開します。

    Stream Connect Message Replication

    Kafka 環境間および ServiceNow Stream Connect メッセージレプリケーションを使用してデータをレプリケートできます。

    Stream Connect Message Replication を使用すると、インスタンスから直接メッセージのレプリケーションを設定 ServiceNow および管理できます。MID サーバーを使用してデータ レプリケーションを実行するため、追加のレプリケーション サービスを構成またはホストする必要はありません。また、必要な証明書が自動的に生成されるため、メッセージ レプリケーションのセットアップが簡略化されます。

    詳細については、「Stream Connect Message Replication」を参照してください。

    未処理および未配信のメッセージ

    メッセージを配信できない場合、メッセージは Kafka 未配信メッセージ [sys_kafka_delivered_messages] テーブルに格納されます。スケジュール設定済みジョブである Kafka プロデューサー再試行は、定期的にこのテーブルを読み取り、メッセージを再配信しようとします。

    タイムアウトによりメッセージのバッチを処理できない場合、メッセージは Kafka 未処理メッセージ [sys_kafka_unprocessed_messages] テーブルに格納されます。メッセージバッチのタイムアウトは、com.glide.kafka_consumer.timeout プロパティで設定できます。デフォルト値は 60 秒です。このテーブルはローテーションされているため、レコードは自動的に消去されます。

    ドメイン分離

    Stream Connect トピックの名前空間を使用して、どのドメインがドメイン分離されたインスタンスのどのトピックにアクセスできるかを設定します。トピックを ServiceNow の名前空間にグループ化してから、名前空間を特定のドメインにリンクします。詳細については、「ドメイン分離と Apache Kafka 向けストリームコネクト」を参照してください。