Serverless は、新たに登場したサーバーレス アーキテクチャです。これを使用すると、開発者は運用や保守、リソースの配信や展開を気にすることなく、コードに集中するだけで済みます。この記事では、Python アプリケーションを変換して、アプリケーションがサーバーレス アーキテクチャの利点を継承できるようにすることで、コードの観点からサーバーレスを理解できるようにします。 既存のリソース: 遺伝子検査サービス 上記のリソースを使用して、2人の遺伝子サンプルを比較し、比較結果(直接の血縁関係の確率など)を出力します。 relationships.py コードは次のとおりです。 使い方は次のとおりです: プロセスは比較的簡単です。遺伝子配列を表す 2 つのファイルがローカル ディスクから読み取られ、アルゴリズム計算後に最終的に結果が返されます。 私たちは以下のビジネス要件を受け取りました まず、唾液サンプルを採取し、専門機器で分析します。次にサンプル ファイルを生成し、ホストにアップロードします。サンプルファイルは全部で2020個あります。 ***上記のアルゴリズムを実行する必要があります 2000 * 20 = 40000(回) 要件を完了するには、費やした合計時間を計算しましょう。 40000 (回) * 2 (秒) = 80000 (秒) 計算をシリアルで完了するには 22 時間かかり、これは遅すぎます。ただし、マシンには 8 つのコアがあるため、8 つのプロセスを実行して一緒に計算することができます。 22.2 / 8 ≈ 2.76 (時間) 約3時間かかりますが、それでもまだ遅すぎます。 8 コアの計算能力が限界に達したと仮定すると、次にどのように最適化できるでしょうか? 1. サーバーレス製品の紹介: UGC UCloud 一般的なコンピューティング AWS Lambda とは異なり、UGC では計算集約型のアルゴリズムを Docker イメージ (以下、「アルゴリズム イメージ」と呼びます) としてカプセル化できます。指定されたアルゴリズム リポジトリにアルゴリズム イメージをプッシュするだけで、UGC がアルゴリズム イメージをいくつかのコンピューティング ノードに事前にプルします。次の 2 つの形式を使用する場合: 特別に構築された HTTP リクエストが UGC API サービスに送信されると、「タスク スケジューラ」が、アルゴリズム イメージを正常に取得できたノードを選択し、そのノードへのリクエストをスケジュールするのに役立ちます。次に、アルゴリズム イメージ「コンテナ」を起動し、リクエストの HTTP 本文を標準入力 stdin の形式でコンテナに渡します。アルゴリズムが計算された後、アルゴリズムの標準出力 stdout と標準エラー stderr が tar パッケージにパッケージ化され、HTTP 本文の形式で返されます。このアルゴリズムの実行結果を取得するには、返された本体を tar パッケージとして解凍するだけです。 とはいえ、この製品を使用すると、数万個のコアを備えた小型の 8 コア マシンではなく、数万個のコンピューティング ノードに集中的な計算を実行できます。では、このような大量のコンピューティング リソースをどのように使用すればよいのでしょうか?プログラムには少し修正が必要です。 2. サーバーレスアーキテクチャの変革 2つの部分: 1. 変換アルゴリズムの入力と出力 ① 入力をstdinに変換する ②アルゴリズムの出力データをstdoutに書き込む 2. クライアントと同時実行 アルゴリズムミラー(タスク実行)のロジックを変更しました。それでは、タスクの送信を見てみましょう。 非同期リクエストもサポートします。前述したように、この Serverless 製品はアルゴリズムの標準出力を tarball にパッケージ化し、それを HTTP 本文に入れてクライアントに返すため、次の解凍関数を用意します。 tarball を解凍し、結果を result.txt ファイルに書き込みます。 2200 個のサンプル ファイルの絶対パス リストは、get_sample_list メソッドを通じて取得できると仮定します。 2000サンプルと20サンプルの直積を計算するには、itertools.productを直接使用できます。 上記のコード スニペットを組み合わせて、メソッドをカプセル化します。 HTTP リクエスト送信の構築は計算集約的ではなく I/O 集約的であるため、コルーチン プールを使用して非常に効率的に処理します。 200 個のタスクを同時に送信するのは簡単です。 すべての変換が完了したので、簡単に分析してみましょう。 以前は、8 つのプロセスが計算集約型のアルゴリズムを実行していました。現在、私たちは計算集約型のアルゴリズムをサーバーレス製品に組み込んでいます。クライアントは I/O を集中的に行うため、コルーチンを使用して単一のマシンで非常に高い同時実行性を実現できます。欲張らず、200 の同時実行に基づいて計算します。 詳細な読み物: 上記の場合、帯域幅がボトルネックになる可能性があります。 gzip を使用して HTTP 本文を圧縮できます。これは計算集約的な操作です。 8 つのコアの計算能力を効率的に活用するために、サンプル データを 8 つの部分に分割し、8 つのプロセスを開始し、コルーチンを使用してプロセス内でタスクを送信します。 40000 * 2 = 80000 (秒) つまり、一連のテストを実行するのにかかる時間は 400 秒だけとなり、7 日間から 400 秒に短縮されます。結果は驚くべきもので、グラフはより直感的になりました。 さらに、コンピューティング能力のボトルネックにはまだ達していません。同時に送信できるタスクの数を増やすことができます。タスクを送信するマシンをもう 1 台追加すると、時間は 200 秒に短縮され、マシンが 4 台の場合は 100 秒、マシンが 8 台の場合は 50 秒になります... 最も重要なことは、変換されたアーキテクチャが、運用とメンテナンスが不要、高可用性、従量課金制、リリースが容易といったサーバーレス アーキテクチャの利点も継承していることです。 メンテナンスは不要です。サーバーが不要になったためです。 高可用性- サーバーレス サービスは通常、クラウド コンピューティングの強力なインフラストラクチャに依存します。どのモジュールも単一のポイントを持たず、すべてが可能な限りクロスアベイラビリティゾーンまたはクロススイッチの災害復旧となるように設計されています。さらに、今回使用したサービスには、同じタスクを一度送信すると、複数のノードで実行されるという興味深い仕組みがあります。コンピューティング ノードがハングした場合でも、他のノードは正常に復帰できます。先に終わった人が先に戻ります。 従量課金制— 記事によると、各アルゴリズムの実行にはコアあたり 2 秒の CPU 時間がかかります。コストを直接計算してみましょう。 簡単に公開可能- Docker をキャリアとして使用するため、言語に依存せず、迅速に公開できます。コードが記述されたら、画像をアップロードするだけです。グレースケールの場合、クライアントの imageName は異なるコードを区別するために異なるバージョンを指定します。 サーバーレス製品によって変換方法が異なる場合があります。エンジニアとしては、変換コストが低く柔軟性が高いため、この方法を好みます。どう思いますか?サーバーレス アーキテクチャや UGC に興味がある場合は、WeChat u_nknow を追加して、当社の技術交流グループに参加できます。 |
>>: Hadoop分散クラスタを構築し、ビッグデータに取り組む方法を教えます
Crissic はロサンゼルスのデータセンターにサーバーを立ち上げ、openvz + 従来のハードデ...
ライブストリーミングは、昨年から始まったビジネス関連業界のキーワードです。大きなプロモーションがある...
Hostus のブラック フライデー プロモーションが始まりました。6G メモリを搭載した超ハイエン...
新華網長春5月3日(記者 趙孟卓)新しい消費者保護法が施行されて1か月以上が経過した。多くのオンライ...
フォーラムでは、Web マスターは、Web サイトを最適化するときに URL を静的にする必要がある...
1. ブロックされたウェブサイトとは何ですか?ウェブサイトがブロックされると、ウェブマスターはそれを...
景文インターネットは、感染症対策と業務・生産再開における段階的な成果を祝い、優遇プロモーションを実施...
「フレンズ」の主演俳優たちが17年ぶりに再集結。このニュースは世界中の同番組ファンにとって新年のニュ...
SEO 業界の一員として、私は今日のインターネット情報爆発の時代において、私が属する業界もまた急速な...
12月20日、テンセントの2020 Techo Park開発者会議の「次世代統合ハードウェアおよびソ...
Hostcat は buyvm.net から、8 月にプロモーションされた特別版 VPS が 9 月...
モチャの死を聞いたリーリーは、モチャを知らなかったにもかかわらず、泣き崩れた。モチャの経験は悲しい。...
wowtechnologiesinc が所有する VPS ブランドである Virpus では、65%...
[[438978]]クラウドで従業員を支援ニールセンのCIO、パトリック・ディニーン氏は、ニールセン...
raksmartは、米国の老舗データセンターとしてよく知られているはずです。同社は、CN2 ONLY...