問題タブ [horizontal-scaling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
144 参照

amazon-web-services - AppHarbor および DB アドオンを使用してアプリケーションとデータストアを水平方向にスケーリングする方法

AWS と直接話している場合、いくつかのオプションがありますが、基本的には次のようにしてアプリをスケーリングします。

EC2 でのアプリ サーバーのスケーリング

CloudWatch と EC2 サービスの組み合わせを使用してパフォーマンス メトリクスを確認し、それに基づいて、必要に応じて EC2 アプリ インスタンスをスピンアップおよびスピンダウンします。

SQL および NoSQL データベースのスケーリング

これは DB によって少し異なりますが、AWS は多くのことを抽象化するため、AWSのサービスを使用している場合は、DB を使用してプログラムで水平方向にスケーリングする方法があります。

AppHarbor に関する質問

  • Appharbor はワーカーの概念を導入します。ワーカーは複数のインスタンスのようなもので、自動的に負荷分散されますか?

  • プログラムでワーカーを追加/削除できますか? もしそうなら、どの指標に基づいていますか?

  • アドオンを使用している場合、簡単にするために MongoLab と言いますが、複数の MongoLab データベースを使用してシャーディングを手動で管理する必要がありますか、それともアドオン プロバイダーがその抽象化を提供しますか?

  • 基本的に、AppHarbor の水平スケーリングのストーリーとは何ですか?

0 投票する
5 に答える
858 参照

web-applications - リアクティブプログラミング、スケーリング、Meteor

私たちは、新世代のエンタープライズ規模システム用に Meteor を評価しています。驚くべき組み込み機能の 1 つは、クライアントのすべてのデータ モデルがデータベースのモデルにバインドされ、サーバーが更新されると更新されることです。しかし、私はスケーラビリティについて心配しています。

何百万もの接続ユーザーを無効にするために必要なアーキテクチャは何でしょうか?

基本的な質問は、データベースがサーバーとクライアントのモデルにどのようにバインドされているかということだと思います。さらに推定すると、複数の Web サーバーが実行されていて、データベースが 1 つあるとします。サポートされていますか?もしそうなら、どのように?それを実現した基礎となるテクノロジーを誰かが説明できれば、それは大いに役立つでしょう.

これは、リアクティブ モデルを使用する Web アプリのスケーリングに関する一般的な質問であると思います。まず、それは本当です - そしてそれについての議論も素晴らしいです (それを実装するための最良の設計は何ですか?)。

第二に、特に Meteor の場合、よりモノリシックに見えるため (「すべてがあなたのために行われる」という意味で)、内部を見て (コードベース全体を読むことなく)、決定するのに役立つ可視性を探しています。

どうもありがとう、リオール

0 投票する
0 に答える
90 参照

architecture - サービスの水平スケーリング

多数のデータベース間でスケジュールされたタスクを処理するために使用されるサービスを備えたシステムがあり、スケジュールされたタスクはデータベースごとに構成されています。データベースの数が増え続けることによる作業負荷のため、システムを水平方向にスケーリングして、サービスの複数のコピーがそれぞれ別のサーバーにインストールされるようにする必要があります。処理が必要なデータベースのリストを含む共通データベースがあります。

データベースごとのワークロードが異なるため、サービスのインスタンスにデータベースを静的に割り当てたくありません。

私が探しているのは、サービスのさまざまなインスタンス間で処理するデータベースの選択をマーシャリングする方法です。

提案してください、ありがとう

0 投票する
2 に答える
2962 参照

c# - Windowsサービスのスケールアウト

現在、会社で実行されているWindowsサービスをスケールアウトする方法についての情報を探しています。.NET 4.0を使用しており(将来的には4.5にアップグレードできます)、これをWindowsServer2012で実行しています。

サービスについて
サービスの仕事は、ログテーブル(Oracleデータベースを使用)の新しい行のクエリ、情報の処理、他の5つのテーブル(トラッキングテーブルと呼びましょう)の一連の行の作成および/または更新です。 )、ログテーブルを更新して繰り返します。

ロギングテーブルには大量のXMLがあり(1行あたり最大20 MBになる可能性があります)、他の5つのトラッキングテーブルで選択して保存する必要があります。新しい行は、1時間あたり最大500,000行の割合で常に追加されます。
トラッキングテーブルのトラフィックははるかに高く、最小のテーブルの90,000の新しい行から、最大のテーブルの潜在的に数百万の行まで、1時間ごとに発生します。これらのテーブルにも更新操作があることは言うまでもありません。

処理中のデータについて、
これらのオブジェクトがどのようにグループ化および処理されているかに基づいて解決策を見つけるには、このビットが重要だと思います。データ構造は次のようになります。

  • レポートは、選択して処理する必要のあるログデータです
  • メッセージごとに、平均5つのレポートがあります。これは、場合によっては1から数百の間で変化する可能性があります。
  • メッセージには他のコレクションや他の関係がたくさんありますが、それらは質問とは無関係です。

現在、16コアサーバーの負荷をほとんど管理していないWindowsサービス(完全な仕様は覚えていませんが、このマシンは獣だと言っても過言ではありません)。私は、このすべてのデータを処理し、他のインスタンスに干渉しないマシンをスケールアウトして追加する方法を見つけるという任務を負っています。

現在、各メッセージは独自のスレッドを取得し、関連するレポートを処理します。データを処理するときにDBクエリの数を最小限に抑えるために、MessageIdでグループ化されたレポートをバッチで処理します。

制限事項

  • この段階で、適切と思われるアーキテクチャを使用して、このサービスを最初から書き直すことができます。
  • インスタンスがクラッシュした場合、他のインスタンスは、クラッシュしたインスタンスが残った場所をピックアップできる必要があります。データが失われることはありません。
  • この処理は、データベースに挿入されるレポートから可能な限りリアルタイムに近い必要があります。

そのようなプロジェクトを構築する方法についての意見やアドバイスを探しています。サービスはステートレスである必要があると思いますか、それともすべてのインスタンスのキャッシュを何らかの方法で同期する方法はありますか?すべてのインスタンス間で調整し、それらが同じデータを処理していないことを確認するにはどうすればよいですか?どうすればそれらの間で負荷を均等に分散できますか?そしてもちろん、インスタンスがクラッシュして完了しないのを処理するにはどうすればよいですか?

編集
無関係な情報を削除しました

0 投票する
1 に答える
255 参照

mysql - アプリケーション サーバーを水平方向にスケーリングするために、1 つの MySQL サーバーと通信する複数のレール エンジン

複数の Rails エンジンが単一の mySQL サーバーに書き込みを行う、このような図を見たことがあります。

1) これは可能ですか? それとも、Rails は各アプリケーション サーバーが 1 つのデータベース サーバーに書き込むことを望んでいるのでしょうか?

2) これが可能である場合、どのように達成されますか? アプリケーション サーバーと書き込みデータベース サーバーの間にキューとスケジューラはありますか?

0 投票する
1 に答える
106 参照

database - すぐに使用できる自動水平スケーリングを備えたデータベース

次のような DBMS を探します。

  1. 箱から出してすぐに水平方向にスケーリングでき、手書きの「接着剤」はまったくまたはほとんどありません
  2. いくつかのインデックスのいずれかでレコードをクエリできます
  3. 保守と拡張が容易です (つまり、新しいサーバーを追加するだけで、DBMS が独自にデータを再配布します)

目標は、再設計し、最終的に現在のソリューション (Oracle RAC ベース) から移行することです。古いソリューションの問題は、Oracle 自体ではなく、設計とコードの品質が低いことです。

私たちのデータについて。ノードとイベントの 2 種類のレコードがあります。どちらも db に追加され、削除されることはありません。約 2e9 ノードと 5e11 イベントがあります。すべてのイベントは 1 つのノードにバインドされます。必要なクエリは次のとおりです。

  1. いくつかのプロパティ n1、n2、n3 によるノードのクエリ
  2. node_id によるノードのクエリ
  3. 時間間隔とそのメイン プロパティ e1 でイベントをクエリする
  4. node_id によるイベントのクエリ

もちろん、新しいノードとイベントを挿入する必要があります。クエリ 1 ~ 4 の数は 1 日に数千であり、それほど増加することはありませんが、すべてのデータにアクセスできる必要があります。1 日あたりの新しいイベントの数は、ノードの数とほぼ同じです。1 日あたりの新しいノードの数は、最大で数百です。

データは挿入後に常に一貫性があり、削除されることはないため、一貫性のためにトランザクションや結合は必要ありません。別の postgres サーバーを使用して (および手動でクエリをディスパッチして) 実装することもできましたが、より良い方法はありますか? 私たちのタスクに適した (SQL または NoSQL) オープンソース データベースを検討します。また、特定の言語に縛られることもありません。優先順位は、適切なクエリ速度を維持しながらスケーリングを容易にすることです。

0 投票する
1 に答える
249 参照

cassandra - Cassandra は、1 秒あたり 100 回を超える読み取り/書き込み操作を維持する必要があるデータベースの候補として適していますか?

現在、私たちのシステムは PostgreSQL を使用していますが、その機能の限界を押し上げているようです。一部のテーブルは、1 秒あたり 100 回を超える読み取り/書き込み操作を処理する必要があるため、おそらく複数のマシン間で水平方向にスケーリングする必要があります。

GAE の Big Table の使用経験が豊富です。Big Table には、クエリの豊富なオプションがありました。たとえば、リスト データ フィールドに対するクエリが可能でした。Cassandra は Big Table に基づいているはずですが、私の理解が正しければ、Cassandra の場合、実際には Cassandra の上にインデックス テーブルを使用および維持するレイヤーをカスタム コーディングする必要があります。

インデックス テーブル、ジグザグ マージ結合などを維持するための独自のカスタム ロジックを構築する必要のない、利用可能なオープン ソース データベースがあれば素晴らしいことです。

カサンドラはここで良い候補ですか? または、より良いと考えられるものはありますか?