問題タブ [scalability]
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.
amazon-ec2 - 動的な Ec2 インスタンス管理のための RightScale と Scalr に関するご意見
Ec2 で Web アプリを管理するための費用対効果の高いツールを探しています。Rightscale は大きな犬のように見え、料金を請求します。Scalr はより費用対効果の高いソリューションのように見えますが、実際の顧客体験を見つけるのは困難です..
私が探している重要な側面は、ロード バランサー (http および https) と、負荷が増加したときに追加の Web サーバーの容量を自動的にオンラインにし、負荷が低下したときにインスタンスを終了する方法です。
私が知る限り、多くの人がここで独自のものを展開しています。私たちはアプリをリリースしようとしていますが、あまりにも多くの重いシステム管理者の戦いを戦う必要はありません. パフォーマンスなどの重要性を考えると、これについて現場からアドバイスや経験を聞いていただければ幸いです.
scalability - 画像リクエストを別のウェブサーバーにリダイレクトする最良の方法は?
「画像サーバー」(画像リクエストを処理するための専用サーバー)を追加し、.gif、.jpg、.png などのすべてのリクエストをリダイレクトすることで、Web サーバーの負荷を軽減しようとしています。
私の質問は、リダイレクトを処理する最良の方法は何ですか?
- ファイアウォールレベルで?(iptables を使用してこれを実行できますか?)
- ロードバランサーレベルで?(ldirectord はこれを処理できますか?)
- Apache レベルで - 書き換えルールを使用していますか?
これを行うための最良の方法についての提案に感謝します。
- アップデート -
追加したいことの 1 つは、これらはサード パーティ向けにホストされているドメインであるため、すべての開発者がコードを変更してイメージを別のサーバーに向けることを期待することはできないということです。
sql - SQL データベース設計の初心者向けガイド
SQL ソリューションの設計方法を学ぶための良い情報源を知っていますか?
基本的な言語構文を超えて、理解するのに役立つものを探しています:
- 作成するテーブルとそれらをリンクする方法
- さまざまな規模に合わせて設計する方法 (小さなクライアント APP から巨大な分散 Web サイトまで)
- 効果的/効率的/エレガントな SQL クエリの書き方
model - リッチ ドメイン モデルのスケーリング
ドメイン駆動設計では、豊富なドメイン モデルを使用することが推奨されます。これは、すべてのドメイン ロジックがドメイン モデルにあり、ドメイン モデルが最高であることを意味します。ドメインモデル自体は理想的には永続性について何も知らないため(データベースなど)、永続性は外部の問題になります。
私は中規模のワンマン プロジェクト (Java の 10 万行以上) で実際にこれを使用してきましたが、多くの利点を発見しています。主に、データベース指向のアプローチに対してこれが提供する柔軟性とリファクタリング性です。ドメイン クラスを追加および削除し、いくつかのボタンを押すだけで、まったく新しいデータベース スキーマと SQL レイヤーが展開されます。
しかし、豊富なドメイン ロジックと、アプリケーションを支える SQL データベースがあるという事実とを調和させるのが難しいという問題に直面することがよくあります。一般に、これは典型的な「1+N クエリの問題」を引き起こします。つまり、N 個のオブジェクトをフェッチし、各オブジェクトに対して重要なメソッドを実行して、クエリを再度トリガーします。これを手動で最適化すると、一定数の SQL クエリでプロセスを実行できます。
私の設計では、システムがこれらの最適化されたバージョンをプラグインできるようにしています。コードを、数十のドメイン固有のクエリ (getActiveUsers など) を含む「クエリ モジュール」に移動することでこれを行います。ナイーブでスケーラブルではない) および SQL ベースの (展開で使用する) 実装。これにより、ホットスポットを最適化できますが、主な欠点が 2 つあります。
- ドメイン ロジックの一部を実際には属さない場所に効果的に移動し、実際には SQL ステートメントにプッシュすることさえあります。
- このプロセスでは、クエリ ログを精査してホットスポットの場所を特定する必要があります。その後、コードをリファクタリングし、コードをクエリに落としてレベルの抽象化を減らす必要があります。
ドメイン駆動設計とそのリッチ ドメイン モデルを、すべてのエンティティをメモリ内に保持することができず、データベース バックエンドに限定されるという事実と調和させる、より適切でクリーンな方法はありますか?
php - 大規模なプロジェクトに PHP はありませんか? なぜだめですか?
私は、大規模なプロジェクトに PHP を使用すべきではないと人々が述べている (提案も、議論も、提供もされていない) いくつかの投稿を読みました。
主に PHP 開発者として、2 つの質問をします。
- 「大規模プロジェクト」の定義は何ですか?
- なぜだめですか?PHP を使用する際の落とし穴とは
私は小さな開発チームを運営しており、経験から、品質の高い構築、組織、ドキュメント、コメント、およびカプセル化が最優先事項であることを知っています。私たちは独自のフレームワークとアプローチを使用して優れたプロジェクトを開発できますが、時間を無駄にしているのであれば、それ以上の投資はしたくありません。
考え?
ide - Mercurialプラクティス:IDEとスケーラビリティでの使用
もちろん、私はSCMツールの有用性を確信していますが、SCMツールの実験的なユーザーではありません。以前の仕事ではあいまいな商用ツールを使用し、現在の仕事ではPerforceを使用し、小さな個人的なプロジェクトでTortoiseSVNを少し試しましたが、検索やバックアップなどを行うために、いたるところに.svnフォルダーがたくさんあるのは嫌いでした。難しい。それから私は分散型SCMの興味を発見し、個人的な個人的なニーズのために、明らかに単純な(gitよりも)Mercurialの方法を選択しました。私はそれを適切に使用することを学び、ウィキの一部を読み、優れたPDFブックの真っ只中にいます。
たとえば、Mercurialの作業慣行では、「ローカルで複数のツリーを使用することを躊躇しないでください。Mercurialはこれを高速かつ軽量にします。」および「作業する機能ごとに、新しいツリーを作成します。」これらは興味深く賢明なアドバイスですが、ブランチが慎重に計画され(そして管理者によって処理される)「聖なる」中央リポジトリがあり、チェンジリストは(上級)ピアによってチェックされなければならない集中型SCMで私の小さな習慣を少し傷つけますビルドなどを壊してはいけません:-)新しいブランチでの作業を開始するにはかなりの時間がかかります...
したがって、上記に照らして2つの質問があります。
IDEなどのコンテキストで、多くのクローンを作成することはどの程度実用的ですか?プロジェクトに構成/設定ファイル、makefile、Antスクリプト、シェルスクリプトなどがあり、パスの更新が必要な場合はどうなりますか?(はい、おそらく悪い考えです...)たとえば、Eclipseでクローンをコンパイルして実行する場合は、Javaビルドパス、実行/デバッグターゲットなどを微調整して、さらに別のプロジェクトを実行する必要があります。 。Eclipseプラグインがそのタスクを容易にしない限り。ここの施設が恋しいですか?
その規模はどのようになりますか?大規模なコードベースではHgは問題ないことを読みましたが、私は困惑しています。私の仕事では、約200万行のJavaアプリケーション(まあ、いくつかは大きな共通カーネルの周りにあります)があり、コードだけで約110MBの重みがあります。古い(2004)Windowsワークステーションでクリーンコンパイルを実行すると、50MBのクラスファイルを生成するのに約15分かかります。3つのファイルを変更するためにプロジェクト全体のクローンを作成しているとは思いません。では、ここでの実践は何ですか?
私はまだこれらの質問が私の読書で扱われているのを見たことがないので、これが有用なスレッドになることを願っています。
database - どうやって結合しないの?
私は最近、DB クエリの結合がどのように速度を低下させるかについてよく読んでいます。明らかに、Google App Engine はそれらを許可していません。
しかし、結合のないアプリをどのように設計するのか疑問に思っています。たとえば、私はcontacts
とを持つアプリに取り組んでいorganizations
ます。連絡先は多くの組織に属することができ、組織は多くの連絡先を持つことができます。2 つのエンティティを接続する 3 番目のテーブルがなければ、どのようにその関係を持つことができるでしょうか...
GAE では多対多の関係を持てないということですか? 参加が必要な機能を除外しているだけですか?
各連絡先の組織 ID をスペースで区切ったリストを含むテーブルに TEXTorganizations
列を作成できると思います。contacts
それは少し奇妙に思えますが。
performance - 小さなファイルがたくさんある場合のファイルシステムのシーク パフォーマンス
XML API によって配信される小さなファイルがたくさんあるサーバーを構築しようとしています。ディレクトリやシーケンシャル ファイルのブロックを何度も繰り返し処理するわけではありません。不連続なデータのシークを何度も繰り返しているのです。
BSD UFS でのシーク時間は、個々のファイルの要求に対して時間の経過とともに低下しますか? ファイルシステムの i ノード制限がパーティション/スライスのサイズに基づいていることは理解していますが、ハード ドライブはデータの場所を検出する前に、ファイル要求ごとに i ノード テーブルをステップスルーする必要があります。シーク時間で最高のパフォーマンスを発揮するファイルシステムは?
別の方法として、2 ~ 4GB の「ブロブ」ファイルをセットアップし、それらに含まれるファイルをソフトウェア内から検索する別のシステムを用意することもできます。ソフトウェアの「inode テーブル」は、現在ログインしているユーザーなどに基づいて配信用に最適化できます。これらの「inode テーブル」は RAM にキャッシュされる可能性が高く、現在ログインしているユーザーにのみ関連するため、無駄なリソースが少なくなります。 .
これら 2 つのソリューションは、スケーラビリティとメンテナンスの観点からどのように評価されますか? 2 番目のソリューションを使用すると、どのようなパフォーマンスの向上が期待できますか?
performance - Web アプリケーションのスケーラビリティとパフォーマンス、アプローチ?
Web サイトのスケーラビリティとパフォーマンスの問題にうまく対処するために、どのような方法と技術を使用しましたか? 私は ASP.NET Web 開発者であり、SQL クラスタリングを使用した WCF を使用した .NET リモート処理を調査しており、他にどのようなアプローチが存在するか (「クラウド」など) に興味があります。どのような場合に、さまざまなアプローチを適用しますか (たとえば、おおよそ x 人の「アクティブな」ユーザーに対する方法 a)。
私が言いたいことの例、myspace のケース スタディ: http://highscalability.com/myspace-architecture