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 を追加してディスカッション グループに参加できます。 |
<<: マルチメディア シングス プレーヤーが、より適切なオーディオおよびビデオ プレーヤーの選び方について語ります
Cloudive はトルコに登録された会社で、KVM ベースのサービス、40G ネットワークへのアク...
現在、中国のクラウドコンピューティング市場は依然として爆発的な成長段階にあります。 Mobile C...
2013 年、Webmasters Conference は Entrepreneurs (Webm...
【朗報】SAP中国研究所と中国科学院瀋陽オートメーション研究所が共同で提出した「適応型再構成可能生産...
オンラインショッピングとなると、ほとんどの若者の最初の反応はタオバオに行くことです。膨大な購入者のト...
クラウドの普及が急速に進み、私たちの生活のあらゆる側面がつながり、現代の情報社会にとって極めて重要な...
[51CTO.com オリジナル記事] 2016年にファーウェイはエコシステムの概念を提唱した。 2...
長い期間の思考と計画を経て、私はついに ZhanBang.com の構築を開始することを決定しました...
オープンソース プロジェクトにより、Kubernetes はさらに強力になります。 Java、可観測...
Baidu の K-site の行動が数え切れないほど多くのウェブマスターを激怒させたことは疑いの余...
最適化に携わる人なら、コンテンツは王様、外部リンクは女王という格言を知っているでしょう。これは外部リ...
国内外の貿易電子商取引は急速に発展しており、インターネットに依存する電子商取引企業もウェブサイトに大...
Photonvps は全品 50% オフ。この機会をお見逃しなく。クーポンコード: HALFOFF ...
ウェブサイトのランキングは、外部リンクと完全に関連しています。すべてのSEO担当者は、外部リンクをウ...
SEO プロセスでは、外部リンクが大きな割合を占めます。ウェブサイトのランキングを向上させ、インクル...