この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 12540|答える: 0

PayPalはわずか8台の仮想マシンで1日に数十億件の取引にスケールします

[リンクをコピー]
掲載地 2019/09/25 16:11:58 | | | |
従来、1日に10億件の取引を処理するシステムは数百台のVMを必要としますが、PayPalはわずか8台のVMですべてをこなし、90%のCPU使用率で高速応答を提供します。これはPayPalがこれまでにない取引密度であり、プロセスの完了に必要な時間は10分の1に短縮されるため、組織は成長に対応しながら計算インフラを拡大しつつコスト削減を助けています。 これはどのように行われるのでしょうか?



PayPalはシステムをAkkaベースのActorモードに移行しました。 記事『Squbs: PayPal』はアプリ構築において新しいリアクティブアプローチを採用しています(ハイパーリンクのログインが見えます。PayPalは手続きの詳細を説明しています。 彼らは現在、Squbsをオープンソース化しGitHubに公開しています(ハイパーリンクのログインが見えます。)。

プロジェクトが手を動かすアプローチが必要な場合、ステートフルサービスモデルは依然として十分な注目を集めていません。 ステートフルサービスについてさらに知りたい方は、今すぐスケーラブルなステートフルサービス構築を続ける理由を読むことをお勧めします(ハイパーリンクのログインが見えます。この記事はケイティ・マッカフリーのスピーチに基づいています。 この記事で納得できないなら、Akkaの競合であるErlangを非常に高スループットで実現しているWhatsAppもあります。Facebookの190億ドル規模のWhatsAppアーキテクチャです(ハイパーリンクのログインが見えます。)。

上記の記事を推奨する理由は、PayPalがアーキテクチャの詳細な紹介を提供しておらず、なぜAkkaを選んだのか、そしてAkkaへの移行の利点により多くの時間を割いているからです。 しかし、この記事は「定番の道を外れる」という実践に対して価値ある励ましと実演を提供しています。

サービスのために大量の仮想マシンを使うことの何が悪いのでしょうか?

  • 非常に低スループットで極めて小さな仮想マシンでサービスを実行しましょう。 アクターベースのリアクティブシステムの最大の利点は、計算資源をより効率的に活用できることであり、これによりシステムサイズを大幅に削減し、従来の「単純で粗末な」自動スケーリングを回避できます。
  • ネットワークやルーティングインフラに大きな負担をかけます。 サービスがより相互接続されているため、リクエストは多数のネットワークホップを経由する必要があり、遅延が増加しユーザー体験が悪化します。
  • 大きいほど高価になります。 数百台の仮想マシンを持つサービスは、管理、監視、非効率なキャッシュの面で高いコストを伴います。
  • 小さいほど機敏になります。 数百台の仮想マシンにサービスを展開するのは時間のかかるプロセスです。
  • 各仮想マシンでより多くのCPUを活用しましょう。 CPUはこれ以上高速化できないため、各仮想マシンでより多くのCPUをより効率的に活用できるインフラが必要です。
  • マイクロサービスは、保守が容易で構築が速い緩やか結合型ナノサービスで構築される必要があります。 誰も多くの層を持つ複雑なシステムを扱いたくはなく、コードの層を深く掘り下げることなく、異なるサービスの役割をより明確に把握する必要があります。


これらの要素を踏まえ、PayPalは以下のシステムを構築したいと考えました:

  • スケーラブルで、数百のノードに水平的にスケールできるだけでなく、より多くのプロセッサにスケールアップして1日に数十億件のリクエストを処理する目標も達成できます。
  • レイテンシーが低く、非常に細かい細かさで制御可能です。
  • 失敗に直面しても、しなやかさを持ちましょう。
  • サービス境界の柔軟な調整。
  • プログラミングモデルや文化、そしてよりシンプルなフォールトやエラー処理メカニズムを通じて、スケーラビリティとシンプルさを促進します。


PayPalがより「薄い」スタックを使いたいと考えており、スタックに多くの技術や異なるレベルの可動部品が含まれるようにしたくないのは間違いありません。 一般的に、Akkaおよび状態ベースのシステムはこのニーズに適しており、大規模なコンポーネントのスタックを単一の技術に「分解」することが可能です。 PayPalがErlangよりAkkaを選んだのは、JavaがJava上で動作しているためです。 多くの人にとって、Erlangを一から学ぶのは現実的ではありません。

アッカと組み合わせれば、以下のことができます:

  • 説明しやすいコードを書く
  • テストしやすいコードを書く
  • エラーや故障のシナリオは、JVMを用いる従来のモードよりも自然に処理されます
  • より速く、より強靭でシンプルなコードを書いて、エラーをよりスムーズに処理し、バグの数を減らす


PayPalはすぐにAkkaを基にした独自のフレームワーク「Squbs」を書き、「Cubes」と韻を踏む形で使われました。 これにより、「キューブ」と呼ばれるナノサービスの構築のためのモジュール技術層を作成できます。 キューブは対称的であり、異なるキューブ間の依存関係も対称かつ緩やかで、Akkaが既に提供しているメッセージインターフェースのみを露出しています。

また、AKKAコードを導入する際にプログラマーが直面する困難についても説明しており、AkkaやScalaに精通した専門家を雇う必要がある場合もあります。

ほとんどのサービスは類似した目的を持っています:リクエストの受信、データベースの呼び出し・読み書き、他のサービスを呼び出し、ルールエンジンを呼び出し、キャッシュからデータを取得し、キャッシュに書き込むことです... その結果、Orchestrator PatternやPerpetual Streamのようなパターンを通じてサービスを抽象化することが可能です。

SqubsはPayPalがAkkaを基にしたリアクティブアプリケーションを構築する標準的な手法となっています。 もしチームがまだステートフルシステムを検討していないなら、PayPal、Facebook、Uber、Microsoftでうまく機能しているので試す価値はあるでしょう。







先の:Chromeを否定する理由が3つあります
次に:VSフォルダを作成し、解を生成する際にbinファイルの下に誰もいない
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com