Hermes での名前空間の管理
名前空間を使用して Kafka トピックをグループ化し、トピック管理とアクセス制御の仕様を簡素化します。
ServiceNow では、すべての Kafka トピックが名前空間にリンクされます。名前空間を使用して、論理的な方法でトピックを整理できます。たとえば、Kafka クラスターに基づいてトピックをグループ化できます。名前空間を使用して、どのドメインがドメインセパレーションされたインスタンスのどのトピックにアクセスできるかを設定することもできます。トピックの名前空間を使用して、ServiceNow ドメインにトピックを割り当てます。
名前空間レコード
名前空間レコードは、Kafka 名前空間 [sys_kafka_namespace] テーブルに格納されます。このテーブルには、各名前空間の関連トピックプリフィックスを含む名前空間レコードのリストが表示されます。kafka_namespace_admin ロールを持つアドミニストレーターは、Kafka 名前空間 [sys_kafka_namespace] テーブルに名前空間レコードを作成します。
名前空間とトピックのプリフィックス
トピックは、トピック名のプリフィックスに基づいて名前空間に割り当てられます。スケジュール済みジョブは、Hermes に新しいトピックがないか定期的にチェックします。見つかると、そのトピックの ServiceNow トピックレコードが作成され、そのトピックが名前空間にリンクされます。トピックに割り当てられたプリフィックスは、ServiceNow での名前空間の割り当ての基礎となります。
この図は、Kafka クラスター名のプリフィックスを使用して、ServiceNow でトピックをさまざまな名前空間に整理する例を示しています。
この例では:
- kafka_namespace_admin ロールを持つインスタンスアドミニストレーターは、ログアナリティクスグループ、実行グループ、および ServiceNow インスタンス内の別の子会社の名前空間レコードを作成します。
- インスタンスアドミニストレーターは、Kafka アドミニストレーターと協力して、Kafka クラスター名を名前空間プリフィックスとして使用して Hermes にトピックを複製します。
- 実行グループの Kafka クラスターには、
material_ordersという名前のトピックがあります。トピックは、名前空間のプリフィックスとしてfulfillmentを使用して Hermes に複製されます。fulfillment.material_ordersという新しいトピックが Hermes に作成されます。 - スケジュール済みジョブは、Hermes にある
fulfillment.material_ordersトピックを見つけ、トピックレコードを作成し、そのプリフィックスに合致する Fulfillment 名前空間にそのレコードを割り当てます。
プリフィックス一致ルール
トピック名のプリフィックスは、次のルールに従って名前空間と照合されます。
- 名前空間は、一致する最長の名前空間プリフィックスに基づいて選択されます。一致する名前空間がある場合、トピックレコードはその名前空間とその名前空間のドメインに割り当てられます。
- 一致する、より長い名前空間のプリフィックスがない場合は、デフォルトの名前空間の長さゼロのプリフィックスが一致します。トピックレコードは、グローバルドメインのデフォルトの名前空間に割り当てられます。
- デフォルトの名前空間が削除または変更されたため、一致する名前空間が存在しない場合、トピックレコードは作成されません。
名前空間設計に関する考慮事項
名前空間とトピックの作成を開始する前に、名前空間とトピックをどのように編成するかを計画します。名前空間にトピックを追加すると、関連付けられているトピックを削除せずに名前空間を削除することはできません。
- 各ドメインの名前空間がドメインセパレーションインスタンスに存在する
- ServiceNow ドメインごとに 1 つの名前空間を作成します。
- 名前空間を使用して、ドメインおよび Kafka インストール別にトピックを整理する
- 名前空間を使用して、別々の ServiceNow ドメインおよびトピックに属する両方のトピックを別々の Kafka インストールから分離します。
- 名前空間を構成した後、デフォルトの名前空間を削除または非アクティブ化することを検討する
- デフォルトの名前空間を維持すると、トピックプリフィックスの不一致など、構成の問題が発生するおそれがあります。この不一致があると、1 つのドメインで作成する必要があったトピックがグローバル ドメインで作成されることがあります。
デフォルトの名前空間を削除することで、トピックの作成場所をより厳しく制限することができます。たとえば、すべてのトピックに名前空間に一致するプリフィックスが必要であると判断した場合、デフォルトの名前空間を削除することで、一致するプリフィックスのないトピックが作成されないようにできます。
Hermes での名前空間とのドメインセパレーションの使用の詳細については、「Hermes メッセージングサービス のドメインセパレーション」を参照してください。