クラウドネイティブシナリオでサーバーレスアプリケーションプログラミングモデルを体験する

クラウドネイティブシナリオでサーバーレスアプリケーションプログラミングモデルを体験する

背景

Alibaba Cloud Serverless Kubernetes (ASK) は、Alibaba Cloud が開始したサーバーレス Kubernetes コンテナ サービスです。基礎レイヤーは ECI (Elastic Container Instance) に基づいており、ECS ノードを購入せずに安全で分離されたコンテナ アプリケーションを直接作成できます。 ASK は Kubernetes の一貫性テストに合格しており、コミュニティ Kubernetes と完全に互換性のあるユーザー エクスペリエンスを提供します。

Knative は、Kubernetes をベースにしたオープンソースのサーバーレス アプリケーション オーケストレーション フレームワークです。その目標は、クラウドネイティブでクロスプラットフォームのサーバーレス アプリケーション オーケストレーション標準を開発することです。 Alibaba Cloud Knative は ASK をベースにしています。コミュニティ Knaitve と完全に互換性がある一方で、FC および ECI ワークロードの統合アプリケーション オーケストレーションも提供し、イベント駆動型および自動弾力性をサポートし、統合されたサーバーレス アプリケーション プログラミング モデルを提供します。

建築

次回は、弾幕サービスのデモを通して紹介します。デモには主に、ホームページ、イベント駆動、メッセージ処理の 3 つの部分が含まれています。

HomePage は主に箇条書きコメントの送受信に使用されます。イベント駆動型は、イベントを受信し、フィルタリングして転送するために使用されます。メッセージ処理。集中砲火メッセージを処理するために使用されます。 HomePage とメッセージ処理は、それぞれ Knative Serving を通じて FC と ECI にデプロイされ、イベント駆動は Knative Eventing を通じて ECI にデプロイされます。

弾幕サービスデモの主なプロセスを図に示します。ユーザーはフロントエンドを通じてホームページに集中メッセージを送信します。その後、HomePage は Kafka に大量のメッセージを送信します。イベント駆動型システムは、集中砲火メッセージを受信し、それをメッセージ処理にルーティングして処理します。弾幕処理が終わると、弾幕結果がテーブルストレージに送信されます。最後に、フロントエンドは弾幕の結果を取得し、ページに表示します。

次に、barrage サービスのデモの展開を開始します。操作には次のものが含まれます。

まずメッセージ処理をデプロイし、次にイベント駆動をデプロイし、次にホームページをデプロイし、デプロイが完了したら、箇条書き画面サービスにアクセスします。

ステップ1: メッセージ処理を展開する

このサービスは、イベント ドライバーによって送信された弾丸チャット要求を受信し、要求の数に基づいて自動的にスケールアップおよびスケールダウンし、弾丸チャット メッセージが処理された後に結果をテーブル ストレージに送信するために使用されます。デプロイ前に、まずワークロードがないことを確認し、デプロイ後の結果を観察できるようにします。

クラスターの質問を選択します。クラスター管理ページの左側のナビゲーション バーで、[ワークロード] > [ステートレス]を選択します。デフォルトの名前空間を選択し、現在ワークロードがないことを確認します。

次に、Knative を介して、ECI タイプのワークロードにエラスティック メッセージ処理をデプロイします。ここでは yaml 形式でデプロイします。 yaml の内容は次のとおりです。

  1. apiVersion:serving.knative.dev/v1kind:Servicemetadata:name:test-barrage-processspec:template:metadata:annotations:autoscaling.knative.dev/maxScale:"100"autoscaling.knative.dev/minScale:"0"k8s.aliyun.com/eci-image-snapshot-id:imc-uf636kjjx8xr4e75npexlabels:danmu.role:"manager"spec:containerConcurrency:2serviceAccountName:barrage-install-sacontainers:-args:-/managerenv:-name:OTS_ENDPOINTvalue:https://barrage.cn-hangzhou.tablestore.aliyuncs.com-name:TABLE_NAMEvalue:barrage-name:OTS_INSTANCENAMEvalue:barrage-name:OTS_KEYIDvalue:xxx-name: OTS_SECRET 値: xxx - 名前: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - 名前: ROLE 値: manager - 名前: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - 名前: TRACE_NAME 値: "process" - 名前: PARENT_SPAN 値: "barrage-sender" - 名前: SUB_SPAN 値: "process" - 名前: TRACING 値: "http://tracing-analysis-dc-sh.aliyuncs.com/adapt_g2it2kg78n@5cf06035aec2eb9_g2it2kg78n@53df7ad2afe8301/api/traces" イメージ: registry-vpc.cn-shanghai.aliyuncs.com/knative-sample/barrage-manager:forrester-yuanyi_4cd77c84-20210618215458 名前: ユーザーコンテナ ポート: - コンテナポート: 8000 名前: http1

主なパラメータの説明:

minScale と maxScale: サービスに設定されている Pod の最小数と最大数を示します。
containerConcurrency: 設定されたポッドの最大同時リクエスト数を示します
OTS_ENDPOINT: 設定されたテーブルストレージアクセスアドレスを示します
TRACING: 設定されたコールリンク アドレスを示します。次に、サービスをデプロイします。

クラスター管理ページの左側のナビゲーション バーで、 [アプリケーション] > [Knative]を選択します。
[サービス管理] タブの右上隅で、 [テンプレートを使用して作成] をクリックします。デフォルトの名前空間を選択し、上記の YAML コンテンツをテンプレートに貼り付けて、「作成」をクリックします。

ステップ2: イベント駆動型を展開する

イベント駆動型は、イベントを受信し、イベント ストリームをフィルター処理および転送するために使用されます。ここでは、Kafka イベント ソースをイベント ドライバーとして使用して、Kafka からの集中メッセージを受信し、集中メッセージをメッセージ処理にルーティングします。 yaml を通じてデプロイします。 yaml の内容は次のとおりです。

ステップ3: ホームページを展開する

このサービスは、フロントエンドの箇条書きメッセージを受信し、その箇条書きメッセージを Kafka に送信し、テーブル ストレージから箇条書きメッセージの結果を受信するために使用されます。 Knative 関数モードでデプロイすると、サービス、関数、カスタム ドメイン名が FC に自動的に作成されます。操作の前に、まず FC に弾幕サービス、機能、カスタムドメイン名がないことを確認します。

FC コンソールにログインし、上部のメニュー バーから [地域 (上海)] を選択します。

サービスと機能ページを開き、箇条書きのメッセージサービスと機能がないことを確認します。

左側のナビゲーション バーで[カスタム ドメイン名]をクリックし、ドメイン名情報がないことを確認します。

カスタムドメイン名ページを開き、カスタムドメイン名がないことを確認します

次に、Knative を通じて HomePage を FC タイプのワークロードにデプロイします。ここでは yaml 形式でデプロイします。 yaml の内容は次のとおりです。

  1. apiVersion:serving.knative.dev/v1kind: Servicemetadata: name:demo-barrage アノテーション:workload.serving.knative.aliyun.com/class: "fc"spec: template: metadata: アノテーション:fc.revision.serving.knative.aliyun.com/code-space: "image" fc.revision.serving.knative.aliyun.com/role-arm: "acs:ram::xxxx:role/knative-fc" fc.revision.serving.knative.aliyun.com/domain: '{"domain":"barrage.demo.knative.top","path":"/*"}' spec: containers: - image: registry.cn-shanghai.aliyuncs.com/knative-sample/barrage-main:forrester-yuanyi_4cd77c84-20210618214527 env: - 名前: OTS_ENDPOINT 値: https://barrage.cn-hangzhou.ots.aliyuncs.com - 名前: TABLE_NAME 値: barrage - 名前: OTS_INSTANCENAME 値: barrage - 名前: OTS_KEYID 値: xxx - 名前: OTS_SECRET 値: xxx - 名前: KAFKA_SERVER 値: "106.15.11.179:9093,47.100.131.71:9093,47.102.44.91:9093" - 名前: KAFKA_USER 値: "alikafka_pre-cn-xxx" - 名前: KAFKA_PWD 値: "xxx" - 名前: KAFKA_TOPIC 値: "barrage-info" - 名前: TRACING 値: "http://tracing-analysis-dc-sh.aliyuncs.com/adapt_g2it2kg78n@5cf06035aec2eb9_g2it2kg78n@53df7ad2afe8301/api/traces" - 名前: TRACE_NAME1 値: "sender" - 名前: TRACE_NAME2 値: "receiver" - 名前: TRACE_NAME3 値: "result" - 名前: PARENT_SPAN 値: "barrage-sender" - 名前: SUB_SPAN1 値: "sender" - 名前: SUB_SPAN2 値: "result"

主なパラメータの説明:

fc関連のパラメータ設定には、fcタイプのワークロードのデプロイ、イメージを介したデプロイ、アクセスドメイン名をbarrage.demo.knative.topとして指定することが含まれます。
テーブルストレージアクセスアドレスを設定します: OTS_ENDPOINT
Kafka 関連のパラメータ設定: Kafka サービス アドレス、箇条書きメッセージ トピック
コールリンクアドレス設定: TRACING
それではサービスをデプロイしましょう。

コンテナ サービス管理コンソールにログインします。
クラスター管理ページの左側のナビゲーション バーで、 [アプリケーション] > [Knative]を選択します。
[サービス管理]タブの右上隅で、 [テンプレートを使用して作成] をクリックします。デフォルトの名前空間を選択し、上記の YAML コンテンツをテンプレートに貼り付けて、「作成」をクリックします。
デプロイが完了したら、Function Compute コンソールで確認します。

Function Compute コンソールにログインします。
上部のメニューバーで、[地域] を選択します。
左側のナビゲーション バーで、 [サービスと機能]をクリックします。 「サービスと機能」を選択すると、弾丸スクリーン サービスがデプロイされていることがわかります。 「サービスと機能」ページを開くと、ホームページがデプロイされていることがわかります。

ステップ4: サービスへのアクセス

上記のサービスが展開されました。次に、カスタム ドメイン名を通じてサービスにアクセスします。 http://barrage.demo.knative.top

次に、弾幕を張ります。ここでは、送信する集中メッセージ、同時メッセージの数、および期間をカスタマイズできます。ここでは、送信にデフォルトの設定を使用します。

メッセージ、同時実行数、期間を設定し、[送信]をクリックします。

集中砲火メッセージが絶えず表示されているのがわかります。

まとめ

Alibaba Cloud Knative は、Serverless Kubernetes 上のコンテナと関数の統一されたプログラミング モデルを提供し、統一された Serverless アプリケーション プログラミング モデルを実現します。興味のある学生はぜひご連絡ください。

<<:  Kafka のプロデューサー、コンシューマー、ブローカーの基本概念

>>:  SUSE: オイラーオープンソースコミュニティと連携してクラウドネイティブの実装を加速

推薦する

最適化 ≥ ユーザーエクスペリエンス? 私にとって SEO とは何でしょうか?

2009年、私は誰もが羨む公務員という楽な仕事を正式に辞め、ウェブマスター業界に飛び込みました。私が...

ブランドマーケティング戦略: 芝生を植えることは万能薬ではありません!

一連のデータから状況を垣間見ることができる。メディアの報道によると、バイトダンスの中国市場での年間広...

記事に対して最適化できるキーワードの数はいくつですか?

まず、ウェブサイト最適化におけるキーワードの選択について説明します。ウェブサイトの最適化では、キーワ...

「モバイル決済」、あなたのご都合に合わせてご利用ください! - A5 ウェブマスターネットワーク

みなさんこんにちは、私はXiaosiです。今、多くの人がインターネットファイナンスと金融インターネッ...

Linkerd 2.10 (ステップバイステップ) - Linkerd による分散トレース

[[406175]] Linkerd 2.10 の中国語マニュアルは継続的に改訂および更新されていま...

ケース分析: 医療業界の Web サイトがインデックスに含まれていないのはなぜですか?

ケース分析: 医療業界の Web サイトがインデックスに含まれていないのはなぜですか?今朝、あるネッ...

ユビキタスAIが映画やテレビ番組の制作に新たな変化をもたらす

今日では、AI とクラウド コンピューティングに関する議論は、ニッチなテクノロジーや投資の分野だけで...

セルフサービス Web サイト構築システムに参加することを選択するときに注意すべき点は何ですか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています多くの中小...

A5の署名削除の裏話

昨年6月28日のBaidu Kサイトから外部リンク拒否ツールのリリース、今年のGreen Radis...

ソフト記事効果によるキーワードランキング向上の分析

昨日の記事(新規ドメイン名に含まれるキーワードで即日9位を獲得した体験談)もぜひご覧ください。この記...

検索エンジンアルゴリズムの4つの主要要素の分析

検索エンジンのアルゴリズムは機密事項であり、日々調整されていると言われていますが、詳細は誰も知りませ...

Zhihu は Baidu Knows に「勝った」のか?

質問がある場合、「 Baidu Knows」または「 Zhihu 」を使用して検索しますか?本記事で...

衝撃を受けた:田舎娘のSEOに対する理解

ウェブサイトの構造は SEO の基礎です。ウェブサイト内の最適化は、大きく分けて 2 つの部分に分け...

キーワードピラミッドとウェブサイト構造の間に橋を架ける方法

ウェブサイトのキーワードは、ロングテールキーワード、メインキーワード、コラムキーワードなどに分けられ...