3.2. Knative Eventing アーキテクチャー
OpenShift Container Platform 上の Knative Eventing を使用すると、開発者はサーバーレスアプリケーションと共に イベント駆動型のアーキテクチャー を使用できます。イベント駆動型のアーキテクチャーは、イベントを作成するイベントプロデューサーと、イベントを受信するイベント シンク またはコンシューマーとの間の切り離された関係の概念に基づいています。
Knative Eventing は、標準の HTTP POST リクエストを使用してイベントプロデューサーとコンシューマー間でイベントを送受信します。これらのイベントは CloudEvents 仕様 に準拠しており、すべてのプログラミング言語でのイベントの作成、解析、および送受信を可能にします。
以下を使用して、イベントをイベントソースから複数のイベントシンクに伝播できます。
Channel および Broker の実装は、Subscription および Trigger を使用してイベントのイベントシンクへの配信を管理します。イベントは、宛先のシンクが利用できない場合にバッファーされます。Knative Eventing は以下のシナリオをサポートします。
- コンシューマーを作成せずにイベントを公開する
- イベントを HTTP POST として Broker に送信し、SinkBinding を使用してイベントを生成するアプリケーションから宛先設定を分離できます。
- パブリッシャーを作成せずにイベントを消費
- Trigger を使用して、イベント属性に基づいて Broker からイベントを消費できます。アプリケーションはイベントを HTTP POST として受信します。
3.2.1. イベントシンク
複数のタイプのシンクへの配信を有効にするために、Knative Eventing は複数の Kubernetes リソースで実装できる以下の汎用インターフェースを定義します。
- アドレス指定可能なオブジェクト
-
HTTP 経由で
status.address.url
フィールドに定義されるアドレスに配信されるイベントを受信し、確認することができます。Kubernetes Service オブジェクトはアドレス指定可能なインターフェースにも対応します。 - 呼び出し可能なオブジェクト
- HTTP 経由で配信されるイベントを受信し、これを変換できます。HTTP 応答ペイロードで 0 または 1 の新規イベントを返します。返されるイベントは、外部イベントソースからのイベントが処理されるのと同じ方法で処理できます。