Analysis of cloud native event-driven elastic transcoding scheme
背景
容器技術が普及する以前から、イベント駆動技術はデータベース分野で広く利用されていました。その概念モデルはシンプルです。データが追加、変更、または削除されるたびに、イベントがトリガーされ、さまざまな処理が実行されます。イベント駆動方式は、非常に短い遅延で後続のアクションを完了できます。イベント駆動型アーキテクチャの核心は、システム上のさまざまなイベントに反応し、対応するアクションを実行することです。弾力的スケーリングは、ほぼすべてのクラウドプラットフォームに不可欠な要素となっています。Kubernetes では、HPA (Horizontal Pod Autoscaler) が最も一般的に使用されているアプリケーションのエラスティシティソリューションです。容器の水平スケーリングの核心は、リソース使用率と事前に設定されたしきい値の関係を基にスケーリングプランを決定することです。容器の水平スケーリング方式は、使いやすく豊富なリソース指標を備えていますが、即時的な柔軟性が求められるシナリオ、特にイベントソースに基づくオフライン処理には不十分です。ACK は ack-keda を提供し、イベント駆動型の柔軟性を実現しています。音声や映像のオフライントランスコーディング、イベント駆動型ジョブ、ストリーミングデータ処理などのシナリオに適用できます。
イベント駆動型エラスティシティの原理
ACK は ack-keda の拡張版を通じて、イベント駆動型の柔軟性を提供します。下図は ack-keda の基本原理を示しています。
ack-keda はイベントソースから定期的にデータを消費します。メッセージが蓄積されると、数秒でオフラインタスクのスケーリングをトリガーできます。次のサイクルでは、次回のバッチのジョブスケーリングが非同期で実行されます。ack-keda には以下の特徴があります。
豊富なイベントソース
ack-keda は、Kafka (ApsaraMQ for Kafka)、MySQL、PostgreSQL、RabbitMQ、Redis (ApsaraDB for Redis) などのデータソースをビルトインでサポートしています。同時に、カスタムイベントソースからのイベント取得や、ジョブディメンションおよび Pod ディメンションでの柔軟なスケーリングにも対応しています。
オフラインタスクの同時実行制御
大規模なオフライン処理では、基盤となる制御の安定性がより大きな課題に直面します。リソース、クォータ、API リクエストの全体的な制御が必要です。ack-keda は、単一バッチおよび全体のバッチに対するタスクの同時実行制御を提供し、システムの安定性を確保します。
タスク完了後のメタデータ自動クリーンアップ・タスクバックトラッキングのサポート
大規模なオフラインジョブの実行後、大量のメタデータが残ります。メタデータの蓄積は、API サーバーの安定性の低下やクラスターのパフォーマンスと安定性の低下を招き、他のビジネスに影響を及ぼす可能性もあります。ack-keda はタスク実行後にメタデータを自動的にクリーンアップし、メタデータの量を削減します。同時に、ack-keda は失敗したジョブの一部を保持することもでき、バックトラッキングや原因の特定が容易になります。
イベント駆動型エラスティックトランスコーディングの事例
この事例では、シンプルなトランスコーディングジョブを用意します。新しいタスクが届くと、以下のようなデータ {"type": "mp4", "state": "waiting", "createTimeStamp": "1610332940", "fileName": "World and peace", "endTimeStamp": "", "uuid": "1fae72ff-3239-42f5-af97-04711d8007e8"} を MongoDB に挿入します。この時点で、コンテナサービスのイベント駆動コントローラーがデータベースから "state": "waiting" ステータスのジョブを検索し、タスク数に対応する Job Pod を起動してトランスコーディングジョブを実行し、データ内の state フィールドを waiting から finished に変更します。同時に、ジョブ完了後は自動的にクリーンアップが行われ、API サーバーへのメタデータの負荷を軽減し、開発者の負担を大幅に軽減します。
1. イベント駆動型エラスティックコントローラー ack-keda のインストール
Alibaba Cloud の Container Service for Kubernetes コンソールにログインし、左側のサイドバーからアプリケーションマーケットをクリックして、ack-keda を検索します。
対象のクラスターを選択し、展開をクリックしてクラスターに展開します。
左側のサイドバーからワークロードを選択し、ステートレスサービスを選択して、kube-system 名前空間で ack-keda が正常に展開されたことを確認します。
2. MongoDB イベントソース駆動のエラスティシティサンプルの展開
1. MongoDB を展開する
2. MongoDB で新しいユーザーを作成する
3. TriggerAuthentication と ScaledJob を展開する
4. トランスコーディング対象のビジネスデータを挿入する
5. ジョブステータスを確認する
まとめ
この記事で紹介したトランスコーディングのシナリオは、日々の開発場面でよく遭遇する要件でもあります。ack-keda の使用は比較的簡単で、実際の効果も実用的なニーズを満たしています。最近、keda コミュニティを基に MongoDB イベントソースのサポートを追加し、コミュニティにプルリクエストを提出しました。現在、ビルトインのイベントソースはほとんどのイベント駆動シナリオに対応できています。詳細については、KEDA コミュニティをご参照ください。
容器技術が普及する以前から、イベント駆動技術はデータベース分野で広く利用されていました。その概念モデルはシンプルです。データが追加、変更、または削除されるたびに、イベントがトリガーされ、さまざまな処理が実行されます。イベント駆動方式は、非常に短い遅延で後続のアクションを完了できます。イベント駆動型アーキテクチャの核心は、システム上のさまざまなイベントに反応し、対応するアクションを実行することです。弾力的スケーリングは、ほぼすべてのクラウドプラットフォームに不可欠な要素となっています。Kubernetes では、HPA (Horizontal Pod Autoscaler) が最も一般的に使用されているアプリケーションのエラスティシティソリューションです。容器の水平スケーリングの核心は、リソース使用率と事前に設定されたしきい値の関係を基にスケーリングプランを決定することです。容器の水平スケーリング方式は、使いやすく豊富なリソース指標を備えていますが、即時的な柔軟性が求められるシナリオ、特にイベントソースに基づくオフライン処理には不十分です。ACK は ack-keda を提供し、イベント駆動型の柔軟性を実現しています。音声や映像のオフライントランスコーディング、イベント駆動型ジョブ、ストリーミングデータ処理などのシナリオに適用できます。
イベント駆動型エラスティシティの原理
ACK は ack-keda の拡張版を通じて、イベント駆動型の柔軟性を提供します。下図は ack-keda の基本原理を示しています。
ack-keda はイベントソースから定期的にデータを消費します。メッセージが蓄積されると、数秒でオフラインタスクのスケーリングをトリガーできます。次のサイクルでは、次回のバッチのジョブスケーリングが非同期で実行されます。ack-keda には以下の特徴があります。
豊富なイベントソース
ack-keda は、Kafka (ApsaraMQ for Kafka)、MySQL、PostgreSQL、RabbitMQ、Redis (ApsaraDB for Redis) などのデータソースをビルトインでサポートしています。同時に、カスタムイベントソースからのイベント取得や、ジョブディメンションおよび Pod ディメンションでの柔軟なスケーリングにも対応しています。
オフラインタスクの同時実行制御
大規模なオフライン処理では、基盤となる制御の安定性がより大きな課題に直面します。リソース、クォータ、API リクエストの全体的な制御が必要です。ack-keda は、単一バッチおよび全体のバッチに対するタスクの同時実行制御を提供し、システムの安定性を確保します。
タスク完了後のメタデータ自動クリーンアップ・タスクバックトラッキングのサポート
大規模なオフラインジョブの実行後、大量のメタデータが残ります。メタデータの蓄積は、API サーバーの安定性の低下やクラスターのパフォーマンスと安定性の低下を招き、他のビジネスに影響を及ぼす可能性もあります。ack-keda はタスク実行後にメタデータを自動的にクリーンアップし、メタデータの量を削減します。同時に、ack-keda は失敗したジョブの一部を保持することもでき、バックトラッキングや原因の特定が容易になります。
イベント駆動型エラスティックトランスコーディングの事例
この事例では、シンプルなトランスコーディングジョブを用意します。新しいタスクが届くと、以下のようなデータ {"type": "mp4", "state": "waiting", "createTimeStamp": "1610332940", "fileName": "World and peace", "endTimeStamp": "", "uuid": "1fae72ff-3239-42f5-af97-04711d8007e8"} を MongoDB に挿入します。この時点で、コンテナサービスのイベント駆動コントローラーがデータベースから "state": "waiting" ステータスのジョブを検索し、タスク数に対応する Job Pod を起動してトランスコーディングジョブを実行し、データ内の state フィールドを waiting から finished に変更します。同時に、ジョブ完了後は自動的にクリーンアップが行われ、API サーバーへのメタデータの負荷を軽減し、開発者の負担を大幅に軽減します。
1. イベント駆動型エラスティックコントローラー ack-keda のインストール
Alibaba Cloud の Container Service for Kubernetes コンソールにログインし、左側のサイドバーからアプリケーションマーケットをクリックして、ack-keda を検索します。
対象のクラスターを選択し、展開をクリックしてクラスターに展開します。
左側のサイドバーからワークロードを選択し、ステートレスサービスを選択して、kube-system 名前空間で ack-keda が正常に展開されたことを確認します。
2. MongoDB イベントソース駆動のエラスティシティサンプルの展開
1. MongoDB を展開する
2. MongoDB で新しいユーザーを作成する
3. TriggerAuthentication と ScaledJob を展開する
4. トランスコーディング対象のビジネスデータを挿入する
5. ジョブステータスを確認する
まとめ
この記事で紹介したトランスコーディングのシナリオは、日々の開発場面でよく遭遇する要件でもあります。ack-keda の使用は比較的簡単で、実際の効果も実用的なニーズを満たしています。最近、keda コミュニティを基に MongoDB イベントソースのサポートを追加し、コミュニティにプルリクエストを提出しました。現在、ビルトインのイベントソースはほとんどのイベント駆動シナリオに対応できています。詳細については、KEDA コミュニティをご参照ください。
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
