1

e コマース サイトをホストするためのクラウド サービスを研究しています。そして、私は彼らが物事をどのようにスケーリングできるかについてのいくつかの基本を理解しようとしています.

AWS、Rackspace などのドキュメントから収集できるものから:

セットアップ 1: Web サーバー (AWS - EC2、Rackspace - Cloud Server) のインスタンスを取得できます。次に、そのインスタンスを成長させてより多くのリソースを確保したり、そのインスタンスのレプリカを作成してより多くのトラフィックを処理したりできます。そして、これらのインスタンスにローカルにデータベースをインストールできるようです。

セットアップ 2: Web サーバー (AWS - EC2、Rackspace - Cloud Server) のインスタンスを作成できます。データベース (AWS - RDS、Rackspace - Cloud Database) のインスタンスを作成することもできます。したがって、Web サーバー インスタンスは、単一のアクセス ポイントを介してデータベース インスタンスと通信できます。

インスタンスという用語を使用するときは、単一​​のアクセス ポイントを介してアクセスできるレプリカを考えているだけで、データはバックグラウンドで各レプリカ間で同期されます。これは間違ったイメージかもしれませんが、私が今得た最高のものです。

セットアップ 2 がどのように拡張可能かを理解できます。Web サーバー インスタンスはソース コードにすぎないため、まったく変更されません。そのため、すべての http 要求はさまざまな Web サーバー インスタンスに分散され、負荷が分散されます。また、データ クエリには単一のアクセス ポイントがあり、さまざまなデータベース インスタンスに分散され、負荷が分散されます。すべてのデータ書き込みは、アプリケーション/ウェブサーバー インスタンスに対して透過的なすべてのデータベース インスタンス間で同期されます。

しかし、セットアップ 1 の場合、各 Web サーバー インスタンス内でローカルにデータベースがセットアップされている場合、他の Web サーバー インスタンスに対してローカルな他のデータベース間でデータを同期するにはどうすればよいでしょうか? 各 Web サーバーのインスタンスは互いに通信できないため、複数のインスタンスをスピンアップしてアプリをスケーリングするにはどうすればよいでしょうか? この設定は主に、データベース内のデータが変更されない静的コンテンツを含むサイト向けですか? では、注文がデータベースに書き込まれる e コマース サイトでは、このアーキテクチャは現実的ではないのでしょうか? または、各 Web サーバー インスタンスを取得してローカル データベースをマスター コピーに更新する方法はありますか?

このような単純な質問で申し訳ありません。非常に単純であるか、正しいドキュメント/ページを見つけることができなかったため、ドキュメントには明確に記載されていないと思います。

お時間をいただきありがとうございます!

更新: 質問をここに移動しました:

https://webmasters.stackexchange.com/questions/32273/cloud-architecture

4

2 に答える 2

1

セットアップ #1 に関しては、そのとおりです。ロード バランシングを使用して各マシンでデータベース全体を複製する場合、ノード間のデータの複製について心配する必要があります。これは複雑になり、パフォーマンスが低下します。一貫性を犠牲にするか、すべてを 1 つの大きなデータベースに同期する必要があり、クラスタリングの効果が失われます。また、スループットが向上した場合、サーバーの追加は手動操作であり、何時間もかかる可能性があるため、オンデマンドでスループットに対応できないことに注意してください。

セットアップ 2 に関連して、アプリケーションのスケーリングは簡単で、クラウド プロバイダーが自動的に行いますが、データベースがボトルネックになることはご承知のとおりです。クラウド プロバイダーがアプリケーションをスケールアップし、それらすべてのアプリケーション インスタンスが同じデータベースと通信する場合、アプリケーションのスループットは向上しますが、データベースはすぐに容量不足になります。クラウド上に MySQL クラスターをセットアップすることでこれを解決することが提案されていますが、これは有効なオプションですが、スループットが突然増加した場合は、複雑な MySQL クラスターを再構成する必要があることに注意してください。自動スケーリングはありません。あなたのデータのために。

これを行うもう 1 つの方法は、サービスとしてのクラウド データベースです。AmazonクラウドとRackSpaceクラウドの両方にいくつかのオプションがあります。あなたはRDSについて言及しましたが、最終的には自動スケーリングのない1つのデータベースインスタンスに限定されるため、同じ問題があります. もう 1 つの MySQL データベース サービスはXeround です。、複数のデータベース ノードに負荷を分散し、それらのノード間の接続を管理し、パーティション間のデータを自動的に同期するロード バランサーがあります。単一のアクセス ポイントと、最大数千のデータベース ノードに要求を送信するラウンド ロビン DNS があります。したがって、これにより、単一のアクセス ポイントとデータベースのスケーラビリティに対するニーズが満たされる可能性があります。クラスターをセットアップしたり、スケール操作のたびにクラスターを変更したりする必要はありません。

于 2012-08-07T12:57:04.547 に答える
1

アプリケーション サーバーとして 1 つのサーバーをセットアップし、同じアベイラビリティ ゾーン (最初は 3 つですがスケーラブル) 内の AWS 上の別々のマシンのクラスター全体にデータベースをインストールしました。これを設定する方法は、「k-safe」レプリケーションを使用することです。これは、データがマシン全体に分散され、1 台のマシンが完全に消えてもサイトが機能し続けるように複製されるため、スケーラブルです。これにより、クエリを分散することもできます。
(別の構成オプションは、各データベース マシンにすべてのデータを複製することでした)

于 2012-07-18T03:01:25.007 に答える