問題タブ [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.
scalability - ユーザーのために「最後に見た」機能をどのように実装しますか?
Stack Overflow では、プロファイル ページに「最後に表示された」プロパティが一覧表示されます。これは、すべてのページ ビューで更新されるわけではないようです (明らかにパフォーマンス上の理由から)。トラフィックの多い Web アプリにどのように実装しますか? 特定のページだけ更新してくれませんか?または、ユーザーの最後の訪問を最後に記録した時間をキャッシュし、データベースを更新する前に特定の時間待機しますか? それともまったく違うもの?
concurrency - 関数型言語(特にErlang)はどのように/なぜうまくスケーリングするのですか?
関数型プログラミングの言語と機能の可視性が高まるのをしばらく見守っています。私はそれらを調べましたが、訴えの理由はわかりませんでした。
それから、最近、CodemashでのKevinSmithの「 BasicsofErlang」プレゼンテーションに参加しました。
私はプレゼンテーションを楽しんで、関数型プログラミングの多くの属性がスレッド化/並行性の問題を回避するのをはるかに簡単にすることを学びました。状態と可変性がないために複数のスレッドが同じデータを変更できないことは理解していますが、Kevin氏は(正しく理解していれば)すべての通信はメッセージを介して行われ、メッセージは同期的に処理されます(同時実行の問題を回避します)。
しかし、私はErlangが非常にスケーラブルなアプリケーションで使用されていることを読みました(Ericssonが最初にErlangを作成した理由のすべて)。すべてが同期処理されたメッセージとして処理される場合、1秒あたり数千の要求を効率的に処理するにはどうすればよいでしょうか。非同期処理に移行し始めたのはそのためではありません。複数のスレッドの操作を同時に実行し、スケーラビリティを実現できるようにするためです。このアーキテクチャは、より安全ですが、スケーラビリティの点で一歩後退しているようです。私は何が欠けていますか?
Erlangの作成者は、並行性の問題を回避するために意図的にスレッドのサポートを避けたことを理解していますが、スケーラビリティを実現するにはマルチスレッドが必要だと思いました。
関数型プログラミング言語は、本質的にスレッドセーフでありながら、どのように拡張できるのでしょうか。
iis - トラフィックの多い Web サイトでのリクエストのロギング
たとえば、myspace.com のようなウェブサイトは多くのヒットを受け取ります。これらすべてのリクエストをログに記録するには多くのスペースが必要になると想像できます。彼らはこれを処理しますか?
.net - .NET でロックのタイムアウトを要求する必要がありますか?
リリースイット!、Michael Nygard は、壊滅的なシステム障害の多くは、一連の不具合が原因であることが多いと説明しています。たとえば、2 つのスレッドがデッドロックします。スレッド プール内のスレッドが 2 つ少なくなったため、他のスレッドの負荷が増加し、デッドロックの可能性が高くなります。突然、サーバーがまったく応答しなくなります。これは、スレッド プールが使い果たされ、ロード バランサーが他のサーバー (すべて同じコードを実行している) にトラフィックを迂回させ、デッドロックの可能性を高めるためです。突然、ファーム全体がオフラインになります。
ほとんどの RDBMS サーバーはデッドロックを検出し、「敗者」を決定します (一方のトランザクションは中止され、もう一方は続行できます)。対照的に、C# では、lockステートメントはロックが取得されるまで無期限に待機します。
ただし、Monitor.TryEnter(lockObject, TimeSpan)を呼び出して、ロックまたはタイムアウトを要求することはできます。タイムアウトが経過し、ロックを取得できなかった場合は false を返します。これを using ステートメントでラップして、適切な構文を維持するものもあります。
私の質問は、常にタイムアウトを使用してロックを取得しますか? また、デッドロック シナリオと比べて、タイムアウトはどのような問題を引き起こすのでしょうか?
ruby-on-rails - Ruby on Rails のスケーラビリティ/パフォーマンス?
私はしばらくの間 PHP を使用しており、優れたフレームワークである CodeIgniter とうまく組み合わせて使用しています。私は新しい個人的なプロジェクトを開始していますが、前回、何を使用するか (PHP と ROR) を検討していたとき、特に Twitter 開発者がそれについて言わなければならなかったことを読んだ後、ROR にはスケーラビリティの問題があると聞いたので、PHP を使用しました。スケーラビリティは ROR でまだ問題になっていますか、それとも改善されていますか?
新しい言語を学びたいのですが、ROR は面白そうです。PHP は仕事を成し遂げますが、誰もが知っているように、その構文と構成はお粗末で、1 つの大きなハックのように感じます。
java - メインフレーム上の Java
私は、 JVM を実行する x86 ベースのサーバーを多数実行する大企業で働いています。
VMWare ESX の実験に成功し、データ センターをより有効に活用することができました。しかし、これらは依然として処理ユニットごとに多くの電力を消費します。
私は、メインフレームを復活させ、多数の JVM または仮想マシンのいずれかをホストできるようにするべきだと思いました。
誰もこれを試しましたか?良い費用対効果はありますか?
柔軟性を失いますか?たとえば、社内の別の場所にメインフレームがありますが、マシンの使用方法がかなり厳格なようです。多くの変更管理、長いリード タイムなどがあります。
java - Java と .NET でのスケーラブルな Web アプリ アーキテクチャの比較
Java および .NET でスケーラブルな Web/エンタープライズ アプリケーションを作成するための推奨手順は何ですか? 私は、少量のアプリから大量のアプリに移行するために何が必要かということにもっと興味があります (元のアーキテクチャに大きな欠陥がないことを前提としています)。たとえば、クラスタリング、負荷分散、セッション管理、キャッシングなどの各プラットフォームのオプションは何ですか。
java - Java スタンドアロン アプリケーションのスケーラビリティと高可用性
現在、Linux ボックスで Java 統合アプリケーションを実行しています。まずはアプリ概要から。
Java アプリケーションはスタンドアロン アプリケーションです (OracleAS、WebLogic、JBOSS などの Java EE アプリケーション サーバーにはデプロイされません)。スタンドアロンとは、デスクトップ アプリケーションではないことを意味します。ただし、メイン クラスのコマンド ラインから実行されます。ユーザーはこのアプリケーションを直接操作しません。メッセージはAPIを使用してキューにダンプされ、24時間年中無休で実行されているアプリケーションによって読み取られます。ユーザーはデスクトップ アプリと直接対話しないため、これをデスクトップ アプリとは見なしません (これがデスクトップ アプリとして認定する正しい理由かどうかはわかりません)。
Spring を使用し、WebSphere MQ および Oracle データベースに接続します。WebSphere MQ のキューをリッスンする Spring リスナー (Spring Message Driven POJO) を使用します。キューにメッセージがあると、アプリケーションは MQ からメッセージを読み取り、それをデータベースにダンプ (挿入/更新) します。
問題は次のとおりです。
- このアプリケーションを水平方向にスケーリングするにはどうすればよいでしょうか? より多くのボックスを配置して、この同じアプリケーションの複数のインスタンスを実行するだけということですが、それは実行可能なアプローチですか?
- Spring MDP から EJB MDB への移行を検討する必要がありますか? これにより、アプリケーション サーバーにデプロイされます。そうすることで何か追加の利点はありますか?
- アプリケーションを高可用性 (HA) にする要求がありますか? スタンドアロン アプリケーションの HA を実現するために導入できる、推奨される方法論または戦略は何ですか?