


クラスター アーキテクチャでは、サーバーは独自の役割を実行する必要がありますか?つまり、データベースサーバー、メモリサーバー、画像サーバーなどに分かれています。
プロジェクトの背景:
読み取りは書き込みより多く、比率は約 4:1、ユーザー数は 100 万人以上、同時実行数は約 4,000 (高または低、高から 10,000、低から 1,000)
複数のサーバーのパフォーマンスはほぼ同じであり、負荷分散は基本的に各サーバーに均等に分散できます
負荷分散を通じてユーザーと1対1で直接向き合ってほしい(つまりABCDに直接アクセスできる)。
それぞれの役割 (A と B がメモリ サーバー、C がデータベース、D が画像処理サーバーであると仮定) を実行させ、ユーザー アクセスをレイヤーごとに受け入れさせます。
アドバイスをください
返信内容:
プロジェクトの背景:
読み取りは書き込みより多く、比率は約 4:1、ユーザー数は 100 万人以上、同時実行数は約 4,000 (高または低、高から 10,000、低から 1,000)
複数のサーバーのパフォーマンスはほぼ同じであり、負荷分散は基本的に各サーバーに均等に分散できます
負荷分散を通じてユーザーと1対1で直接向き合ってほしい(つまりABCDに直接アクセスできる)。
それぞれの役割 (A と B がメモリ サーバー、C がデータベース、D が画像処理サーバーであると仮定) を実行させ、ユーザー アクセスをレイヤーごとに受け入れさせます。
アドバイスをください
別れた方が良いですよ。
分離していなければ、マシンのリソースを最大限に活用できるように思えますが、実際はそうではありません。さまざまな種類のサービスが一緒にデプロイされるため、サーバー環境が複雑になり、問題が発生しやすく、見つけにくくなり、パフォーマンスの最適化にも役立ちません。
サービスの種類が異なると、リソースに対する要求も異なります。メモリ サーバーはメモリに重点を置きますが、イメージ サーバーはディスクに重点を置きます。これらを一緒に導入すると、メモリのボトルネックが発生するとイメージ サーバーにも影響が生じます。ディスクリソースの無駄遣いになります。
したがって、それらは個別にデプロイされ、各サービスが配置される環境はシンプルで、必要に応じてリソースを割り当てることができます。
それぞれが独自の役割を果たします。分散クラスターの概念には、システムのさまざまな部分が含まれます。最初の解決策は負荷分散のみを実現し、文字通りの意味によれば、各マシンが対応するアプリケーションとデータベース サービスをインストールすることになるようですが、この場合、データ同期とファイル同期の問題により悲惨な結果になるため、古典的な解決策を採用します。機能的なハードウェアの下請けアーキテクチャ (あなたが言及した 2 番目のもの) の方がより適切な方法です。
アクセス層: ユーザーのニーズの受け入れと配布、負荷分散サービスのインストール、ネットワーク、メモリ、CPU に優先順位を付けるためのサーバーの構成を担当します。
アプリケーション キャッシュ レイヤー: ビジネスおよび使用頻度に応じてアプリケーション データをキャッシュします。このレイヤーの大部分はページ キャッシュです。ネットワーク、IO の優先順位。
アプリケーション層: アクセス層からの配布の受け入れ、要件の処理、および特定のプロジェクト アプリケーションのインストールを担当します。サーバーは、メモリ、CPU、IO を優先するように構成されています。 (サービス指向システムの場合、論理層、サービス層、永続化層などにさらに細分化される場合があります。特定のプロジェクトを詳細に分析してください)。
データ キャッシュ レイヤー: プロジェクトの背景に応じて、データベース インデックスをこのレイヤーに配置できます。また、ビジネス ニーズや特定のハードウェア構成に従って一部のデータ ディクショナリ テーブルを配置することもできます。ハードディスクとIOが優先されます。
データ層: データベース サービスとファイル ストレージ サービスをインストールします。データベース サービスは、説明に基づいて読み取りと書き込みを分離するように構成できます。データ量が比較的多い場合は、データベースのサブデータベース設定も考慮する必要があります。ハードディスクとIO優先度を設定します。
上記のすべてのサーバーに加えて、各層のサーバーはアクティブ/スタンバイの原則に従って耐災害性を備えている必要があります。
もちろん、ハードウェアの範囲外のアーキテクチャはすべて空の話です。どのような種類のサーバーがあるかはわかりませんが、可能な限り同様の構成を変更し、それに応じて適切な変更を加えてください。十分なマシンがないため、仮想マシンを分割することを検討できますが、パフォーマンスを最大化するための特定の構成の構成方法は、ストレス テストとその後のチューニングによって異なります。
2番目のオプションを採用することをお勧めします。
全員が分離するのは良くないと思います。サーバーがクラッシュした場合、プログラムが最初に保証しなければならないのは、サーバーの複雑さを増すために 1 つのサーバー上で複数のプログラムを実行することです。問題は、個々のサービスが実際にはサーバー上で無関係であるということです。分散と分散を行うサーバーが 4 つある場合は、サービスの拡張と転送が容易になります。すべてを 1 台のサーバーで実行できますが、分散システムのような拡張性はなく、パフォーマンスがボトルネックになります。全体として、最初のオプションは 2 番目のオプションよりもはるかに柔軟だと思います
被験者が報告するサービスレベルについては、別途に行う必要があります。
主に 2 つの考慮事項があります:
- サービスの種類が異なれば、要件やさまざまなマシン リソースの消費も異なり、マシンは必要に応じてカスタマイズできます。上の階の他の生徒もこう言ってました
- さらに、さまざまなサービスを組み合わせると、特に潜在的に影響を与える可能性のあるサービスを展開すると、メンテナンスのコストが増加し、システムが不安定になります。極端な例として、テスト環境と運用環境を一緒に展開してテストを調整することを検討することもできます。実稼働環境に影響を与える環境パラメータは、実際には最も避けるべきことです。
- まず第一に、ビジネス層はサービス層が安全で安定していると常に想定できるわけではなく、サービス層の障害に対するサーキット ブレーカー メカニズムを許容する必要があります。
- 次に、すべてのサービスが 1 つのマシン上に配置されます。1 つのマシンがハングアップした場合 (たとえば、ディスクがいっぱい、メモリがいっぱい、CPU が爆発したなど)、すべてのサービスがハングダウンします。飛散しても個々のサービスに損害が生じるだけです。
- 初期段階では、運用保守コストも考慮して、Web サーバーとバックエンド サービスを統合する場合があります。後半のトラフィックとプレッシャーの増加後、私たちは間違いなく分業と専門化の方向に取り組み続けます。
それは必要です。もちろん、サーバーはそれぞれの役割を果たさなければなりません。サーバーは分散方式で展開する必要があります。交通の圧力に直面しても横方向に拡張します。災害復旧サーバーも必要です。 1 つのサーバーに障害が発生した場合、他のサーバーが引き継ぎます。
この問題の本質は、水平方向のスケーラビリティにあります。負荷分散を通じてのみ ABCD にアクセスできる場合、スケーラビリティを放棄することになります。
そのため、独立したサービスについては ABCD を分離することをお勧めします
その後、システムのどの部分がボトルネックになっているかを分析し、負荷分散、マシンの拡張、分散などを行う必要があります。
別居するのが最善です
あなたのアプリケーションは常に成長しています
今はこの段階に達しています
今は別居しなくても
将来的には別れるでしょう。

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

PHPは死んでいません。 1)PHPコミュニティは、パフォーマンスとセキュリティの問題を積極的に解決し、PHP7.xはパフォーマンスを向上させます。 2)PHPは最新のWeb開発に適しており、大規模なWebサイトで広く使用されています。 3)PHPは学習しやすく、サーバーはうまく機能しますが、タイプシステムは静的言語ほど厳格ではありません。 4)PHPは、コンテンツ管理とeコマースの分野で依然として重要であり、エコシステムは進化し続けています。 5)OpcacheとAPCを介してパフォーマンスを最適化し、OOPと設計パターンを使用してコードの品質を向上させます。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトの要件に依存します。 1)PHPは、Web開発に適しており、学習しやすく、豊富なコミュニティリソースですが、構文は十分に近代的ではなく、パフォーマンスとセキュリティに注意を払う必要があります。 2)Pythonは、簡潔な構文と学習が簡単なデータサイエンスと機械学習に適していますが、実行速度とメモリ管理にはボトルネックがあります。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
