Serverless は、新たに登場したサーバーレス アーキテクチャです。これにより、開発者は操作、リソースの配信、デプロイメントについて心配することなく、コードに集中できるようになります。 この記事では、Python アプリケーションを変換して、アプリケーションがサーバーレス アーキテクチャの利点を継承できるようにすることで、コードの観点からサーバーレスを理解できるようにします。
既存のリソース:
遺伝子検査サービス 上記のリソースを使用して、2人の遺伝子サンプルを比較し、比較結果(直接の血縁関係の確率など)を出力します。 ディレクトリ構造は次のように構築します。
relationships.py コードは次のとおりです。
使い方は次のとおりです:
プロセスは比較的簡単です。遺伝子配列を表す 2 つのファイルがローカル ディスクから読み取られ、アルゴリズムが計算された後に結果が返されます。 私たちは以下のビジネス要件を受け取りました 2,000 人が子供を探していて、20 人が父親を探しているとします。 まず、唾液サンプルを採取し、専門機器で分析します。次にサンプル ファイルを生成し、ホストにアップロードします。サンプルファイルは全部で2020個あります。 ***上記のアルゴリズムを実行する必要があります
要件を完了するには、費やした合計時間を計算しましょう。
一連の計算を完了するには 22 時間かかり、これは遅すぎます。ただし、マシンには 8 つのコアがあるため、8 つのプロセスを実行して一緒に計算することができます。
完了するまでに 3 時間かかりますが、それでもまだ遅すぎます。 8 コアの計算能力が限界に達したと仮定した場合、どのように最適化できるでしょうか? 1.1.1 サーバーレス製品の紹介: UGC UCloud 一般的なコンピューティング AWS Lambda とは異なり、UGC では計算集約型のアルゴリズムを Docker イメージ (以下、「アルゴリズム イメージ」と呼びます) としてカプセル化できます。指定されたアルゴリズム リポジトリにアルゴリズム イメージをプッシュするだけで、UGC はアルゴリズム イメージをコンピューティング ノードの一部に事前にプルします。次の 2 つの形式を使用する場合:
特別に構築された HTTP リクエストが UGC API サービスに送信されると、「タスク スケジューラ」が、アルゴリズム イメージを正常に取得できたノードを選択し、そのノードへのリクエストをスケジュールするのに役立ちます。次に、アルゴリズム イメージ「コンテナ」を起動し、リクエストの HTTP 本文を標準入力 stdin の形式でコンテナに渡します。アルゴリズムが計算された後、アルゴリズムの標準出力 stdout と標準エラー stderr が tar パッケージにパッケージ化され、HTTP 本文の形式で返されます。このアルゴリズムの実行結果を取得するには、返された本体を tar パッケージとして解凍するだけです。 とはいえ、この製品を使用すると、数万個のコアを備えた小型の 8 コア マシンではなく、数万個のコンピューティング ノードに集中的な計算を実行できます。では、このような大量のコンピューティング リソースをどのように使用すればよいのでしょうか?プログラムには少し修正が必要です。 1.1.2 サーバーレスアーキテクチャの変換 2つの部分:
1. 変換アルゴリズムの入力と出力 ① 入力をstdinに変換する
これは、コンテンツを relationship.py の stdin にパイプし、次のように relationship.py で取得します。
②アルゴリズムの出力データをstdoutに書き込む
変換が完了しました。それは早いでしょう。 2. クライアントと同時実行 アルゴリズムミラー(タスク実行)のロジックを変更しました。それでは、タスクの送信を見てみましょう。 HTTPリクエストを構築し、返された結果を読み取る
非同期リクエストもサポートしています 前述したように、この Serverless 製品はアルゴリズムの標準出力を tarball にパッケージ化し、それを HTTP 本文に入れてクライアントに返すので、次の解凍関数を用意します。
tarballを解凍し、結果をresult.txtファイルに書き込みます。 2200個のサンプルファイルの絶対パスリストはget_sample_listメソッドで取得できると仮定します。 sample_2000_list、sample_20_list = get_sample_list() 2000サンプルと20サンプルの直積を計算するには、itertools.productを直接使用できます。
上記のコード スニペットを組み合わせて、メソッドをカプセル化します。
HTTP リクエスト送信の構築は計算集約的ではなく I/O 集約的であるため、コルーチン プールを使用して非常に効率的に処理します。
タスク200を送信するだけで、同時に実行するのは簡単です すべての変換が完了したので、簡単に分析してみましょう。 以前は、8 つのプロセスが計算集約型のアルゴリズムを実行していました。現在、私たちは計算集約型のアルゴリズムをサーバーレス製品に組み込んでいます。クライアントは I/O を集中的に行うため、コルーチンを使用して単一のマシンで非常に高い同時実行性を実現できます。欲張らず、200 の同時実行に基づいて計算します。 詳細な読み物:上記の場合、帯域幅がボトルネックになる可能性があります。 gzip を使用して HTTP 本文を圧縮できます。これは計算集約的な操作です。 8 つのコアの計算能力を効率的に活用するために、サンプル データを 8 つの部分に分割し、8 つのプロセスを開始し、コルーチンを使用してプロセス内でタスクを送信します。
つまり 一連のテストにはわずか 400 秒しかかかりません。これは、前の 7 日間と比べて改善された結果です。結果は驚くべきもので、グラフはより直感的になりました。 さらに、コンピューティング能力のボトルネックにはまだ達していません。同時実行タスクの数を増やすことができます。タスクを送信するマシンをもう 1 台追加すると、時間は 200 秒に短縮され、マシンが 4 台の場合は 100 秒、マシンが 8 台の場合は 50 秒になります... 最も重要なことは、変換されたアーキテクチャがサーバーレス アーキテクチャの利点も継承していることです。
1. サーバーがないので、運用・保守が無料です。 2. 高可用性- サーバーレス サービスは通常、クラウド コンピューティングの強力なインフラストラクチャに依存します。どのモジュールにも単一のポイントはなく、すべてのモジュールは可能な限りクロスアベイラビリティゾーンまたはクロススイッチの災害復旧です。また、今回使用したサービスには、一度同じタスクを送信すると、複数のノードでそのタスクが実行されるという興味深い仕組みがあります。コンピューティング ノードに障害が発生した場合でも、他のノードは正常に復帰できます。先に終わった人が先に戻ります。 3. 従量課金制 - 記事によると、各アルゴリズムの実行にはコアごとに 2 秒の CPU 時間がかかります。コストを直接計算してみましょう。
4. 公開が簡単- Docker をキャリアとして使用するため、言語に依存せず、迅速に公開できます。コードが記述されたら、画像をアップロードするだけです。グレースケールの場合、クライアントの imageName は異なるコードを区別するために異なるバージョンを指定します。 サーバーレス製品によって変換方法が異なる場合があります。エンジニアとしては、変換コストが低く柔軟性が高いため、この方法を好みます。どう思いますか?サーバーレス アーキテクチャや UGC に興味がある場合は、u_nknow WeChat を追加してディスカッション グループに参加できます。 |
<<: マルチメディア シングス プレーヤーが、より適切なオーディオおよびビデオ プレーヤーの選び方について語ります
WeChatは2011年に開始されて以来、1年半以上でユーザーベースが2億人に達しました。 WeCh...
創業20年のOnetechcloudが新年特別プロモーションを開始しました。香港CN2、米国CN2 ...
BlueHost – ブラックフライデーセール開始: 55% オフ!購入には月額 3.95 ドルしか...
【はじめに】古い商品ページの中には、時間の経過とともに商品情報が古くなり、コレクションから削除される...
月額 109 ドルからご利用いただける、10Gbps の帯域幅を備えた iwfhosting の独立...
ChinaHRの衰退から業界リーダーである51job.comの業績低下まで、伝統的な人材採用業界が改...
著者 |タン・リンこの記事では、大規模クラスター管理の難しさを解決し、優れた合理的なクラスター スケ...
SonderCloud Limited がプロモーションを実施しています: (1) 香港サーバー (...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますウェブサイ...
現在のインターネットでは、企業が自社のウェブサイトをうまく運営したい場合、強力な SEO なしではそ...
CloudShards は、Cloud Shards DBA Query Foundry, LLC ...
ウェブサイトを構築するために最初に必要なのはドメイン名です。ドメイン名の選択は、多くのウェブマスター...
ASO最適化とは、アプリストアのキーワードランキング検索最適化を指します。アプリストアのカスタムロジ...
クラウド コンピューティング革命の初期には、組織は使用した分だけ支払うことで、IT 支出をより効率的...
インターネットは、人々が愛を見つけるための重要な場所になりつつある中国国際放送、北京、2月11日のニ...