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

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:9分
  • ServiceNow® ストリームコネクト for Apache Kafka を使用して、Apache Kafka環境を ServiceNow インスタンスに接続します。

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

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

    メリット

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

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

    コンポーネント

    ストリームコネクトには以下のコンポーネントがあります。

    プロデューサー

    プロデューサーはイベントを Kafka 環境に公開します。ストリームコネクトには 2 つのプロデューサーがあります。

    • ワークフロースタジオ の Kafka プロデューサーステップ
    • ProducerV2 API
    コンシューマー

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

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

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

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

    サブスクリプション

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

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

    パーティショングループ

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

    Kafka コンシューマージョブ

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

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

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

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

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

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

    ストリームコネクトおよびワークフロースタジオ

    ストリームコネクトとワークフロースタジオを使用して、Kafka イベントを生成および使用するフローを構築します。ストリームコネクトには、Kafka イベントを消費するためのフロートリガーと、Kafka イベントを生成するためのアクションステップがあります。

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

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

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

    Avro 形式のメッセージのサポート

    スキーマをインポートして作成し、Apache Avro 形式でメッセージを送受信します。Avro 形式を使用することで、ペイロードのサイズを減らし、ローカルの Kafka インスタンスへの統合を簡素化できます。

    Avro スキーマを Confluent レジストリから直接インポートすることも、JSON ファイルまたは JSON 形式の文字列を使用して独自のスキーマを作成することもできます。スキーマは ServiceNow に保存され、プロデューサーとコンシューマーがプレーンテキストメッセージを Avro 形式に変換したり、その逆を行ったりすることができます。詳細については、「ストリームコネクトのスキーマ管理」を参照してください。

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

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

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

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

    ProducerV2 API

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

    ストリームコネクトメッセージレプリケーション

    Kafka 環境と ServiceNow の間のデータを、ストリームコネクトメッセージレプリケーションを使用して、レプリケートできます。

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

    詳細については、「ストリームコネクトメッセージレプリケーション」を参照してください。

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

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

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

    ドメインセパレーション

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

    プラグイン

    ストリームコネクトには、ServiceNow Stream Connect Installer [com.glide.hub.stream_connect.installer] プラグインが必要です。このプラグインにより、ストリームコネクトでメッセージベースのストリーミングデータを操作するためのライセンスコンポーネントが有効になります。