Java アーキテクチャをさまざまな製品に適用する方法
システムをセットアップするときは、通常、他のシステムとどのように対話するかを考慮する必要があります。そのため、まず、さまざまなシステムがどのように相互対話するのか、また、それを実装するためにどのようなテクノロジが使用されているのかを知る必要があります。
1. 異なるシステムおよび異なる言語間の対話
現在、異なるシステムおよび異なる言語間の一般的な対話では、WebService および Http リクエストが使用されます。 WebService、つまり「Webサービス」、略してWSとなります。文字通りに理解すると、実際には「Web ベースのサービス」です。しかし、サービスは双方のためのものであり、サービス需要者がいればサービス提供者が存在します。サービスプロバイダーはサービスを外部に公開し、サービス要求者はサービスプロバイダーが公開したサービスを呼び出します。より専門的に言うと、WS は実際には、異種システム通信を実現するために HTTP プロトコルに基づいて構築されたツールです。それは正しい!端的に言えば、WS は HTTP プロトコルに基づいており、データは HTTP を介して送信されます。最初は CXF を使用して WS を実装するための SOAP サービスを開発し、その後、REST サービスを使用して WS を実装しました (現在はこれがより頻繁に使用されており、私も最もよく使用しています)。 REST サービスは CXF に基づいて開発することもできますが、通常は springMVC または他の MVC フレームワークを直接使用して REST サービスを実装します。
しかし多くの人にとって、Web サービスというと、IBM が 10 年以上前に主導したさまざまな XML ベースのインタラクティブ技術を指すことが一般的であり、現在では一部の企業を除いて、それを使用している人はほとんどいません。広い意味では、Web サービスは Web サービスであり、すべてがサービスです。
2. 同じ言語を使用した異なるシステム間の対話
同じ言語を使用した異なるシステム間の一般的な対話では、RPC (リモート プロシージャ コール) または RMI (リモート メソッド) を使用します。 call) は外部サービスを提供せずに実装されており、上記は同じ言語間のやり取りにももちろん利用できますが、私は通常 RPC を使用します。
さまざまな製品のアーキテクチャ
3. 単一製品のアーキテクチャの進化
通常、必要に応じて製品は 1 つだけです。外部に対しては、通常、REST サービスを使用して実装されます。
#以下の内容は Zhihu からのものです
#1) 分散アーキテクチャの進化システム アーキテクチャの進化プロセス - 初期段階のアーキテクチャ
#初期段階では、小規模システム アプリケーション、データベース、ファイルなどのすべてのリソースが、一般に LAMP として知られる 1 つのサーバー上にあります。
2) システム アーキテクチャの進化 - アプリケーション サービスとデータ サービスの分離
良い時代は長くは続かず、システムへのアクセス数が再び増加すると、ピーク時に Web サーバー マシンへの負荷が比較的高いレベルに上昇することがわかりました。この時点で、Web サーバーの追加を検討してください。
3) システム アーキテクチャの進化 - キャッシュを使用してパフォーマンスを向上させる
機能: データベース内のデータの一部アクセスが集中する キャッシュ サーバーに保存されるため、データベース アクセスの数が減り、データベース アクセスの負荷が軽減されます。
4) システムアーキテクチャの進化 - アプリケーションサーバークラスタの利用
サブデータベースとサブテーブルの作業完了後、データベース システムへの負荷が比較的低くなり、毎日アクセス数が増えていくのを眺めながら幸せな生活を送り始めましたが、ある日突然、システムへのアクセスが制限され始めていることに気付きました。また遅くなります。このとき、最初にデータベースを確認しました。圧力はすべて正常でした。Web サーバーを確認した後、Apache が多くのリクエストをブロックし、アプリケーション サーバーは各リクエストに対して比較的高速であることがわかりました。リクエスト数が多すぎて順番待ちが発生し、応答速度が遅くなる
5) システム アーキテクチャの進化 - データベースの読み取りと書き込みの分離
#システム アクセス数の急速な増加をしばらく楽しんだ後、しばらくすると、システムが再び遅くなり始めたことがわかりました。今回はどのような状況ですか? 検索したところ、データベースの書き込みおよび更新操作のための一部のデータベース接続のリソース競合が非常に激しく、システムの速度が低下していることがわかりました。 down.
特徴: 複数のサーバーが負荷分散を通じて同時に外部にサービスを提供し、単一サーバーの処理能力とストレージ容量の制限の問題を解決します。
説明: クラスターの使用は、システムが高い同時実行性と大量のデータの問題を解決するための一般的な方法です。クラスターにリソースを追加すると、サーバーの負荷圧力がシステム全体のボトルネックになることがなくなります。
6) システム アーキテクチャの進化 - リバース プロキシと CDN の高速化
特徴: CDN とリバース プロキシを使用したシステムの高速化アクセス速度。
説明: 複雑なネットワーク環境と異なる地域のユーザーからのアクセスに対処するために、CDN とリバース プロキシを使用して、バックエンド サーバーの負荷を軽減しながらユーザー アクセスを高速化します。 CDN とリバース プロキシの基本原理はキャッシュです。
7) システム アーキテクチャの進化 - 分散ファイル システムと分散データベース
システムが稼働し続けると、データ、ボリューム、この時点で、データベースを分割してもクエリが少し遅いことがわかったので、サブデータベース
# の考えに従ってテーブルのパーティショニングに取り組み始めました。## 特徴: データベースは分散データベースを使用し、ファイル システムは分散ファイル システムを使用します。
説明: 大規模システムの増大するビジネス ニーズを満たす強力な単一サーバーはありません。データベースの読み取りと書き込みを分離しても、ビジネスが発展するにつれて最終的にニーズを満たすことができなくなります。分散データベースと分散データベースを使用する必要があり、サポートするファイル システムが必要です。分散データベースは、システム データベースを分割する唯一の方法です。単一テーブル データの規模が非常に大きい場合にのみ使用されます。データベース分割のより一般的に使用される方法は、異なる物理サーバーに異なるビジネス データベースをデプロイするビジネス サブ データベースです。優れた。8) システム アーキテクチャの進化 - NoSQL と検索エンジンの使用
特徴: システムには NoSQL データベースと検索エンジンが導入されています。検索エンジン。
説明: ビジネスがますます複雑になるにつれて、データの保存と取得の要件もますます複雑になります。システムでは、NoSQL やサブデータベースなどの非リレーショナル データベースを使用する必要があります。検索エンジンなどのクエリ技術。アプリケーション サーバーは、統合されたデータ アクセス モジュールを通じてさまざまなデータにアクセスし、多数のデータ ソースを管理するアプリケーションの手間を軽減します。9) システムアーキテクチャの進化 - 事業分割
10) システム アーキテクチャの進化 - 分散サービス
Q: 分散サービス アプリケーションはどのような問題に直面しますか? ?
(1) サービスの数が増えると、サービス URL の構成管理が非常に困難になり、F5 ハードウェア ロード バランサーに対するシングルポイントの負荷も増大します。 (2) さらに発展すると、サービス間の依存関係が非常に複雑になり、どのアプリケーションをどのアプリケーションより先に開始する必要があるのかさえ不明確になり、アーキテクトはアプリケーションのアーキテクチャ上の関係を完全に記述することができなくなります。 (3) サービスへの呼び出し数が増えると、サービスのキャパシティの問題が明らかになります。このサービスは何台のマシンをサポートする必要がありますか?いつマシンを追加すればよいですか? (4) サービスが増えて通信費も高くなり始めていますが、サービスの調整に失敗した場合はどこに問い合わせればよいのでしょうか?サービスパラメータの規則は何ですか? (5) サービスに複数の企業消費者がいる場合、サービスの品質を確保するにはどうすればよいですか?(6) サービスを継続的にアップグレードすると、常に予期せぬことが起こります。たとえば、キャッシュが正しく書き込まれず、メモリ オーバーフローが発生します。障害は避けられません。コア サービスが障害を起こすたびに、広範囲に影響が及び、失敗の影響を制御するにはどうすればよいでしょうか?サービスは機能的にダウングレードできますか?それとも資源の劣化?
大規模Webサイトの技術アーキテクチャの中核原則と事例分析の始まりのようですが、著者がうまくまとめてくれたので再掲します。
4. 製品ライン構成
上記の事業分割もあります。ここで製品ラインを構築する必要がありますが、必要なのはデータ層、一般的なビジネス ロジック層、およびその前にあるさまざまなアプリケーション層とインターフェイス層だけであり、外部システム (外部企業のシステム) にサービスを提供する必要はありません。以前は、通常、分散アプリケーションを構築するために EJB を使用することを選択していましたが、現在では、dobbo、thrift、avro、hessian などの RPC フレームワークを使用して分散アプリケーションを構築し、異なるアプリケーションとデータ ソース間の対話を実現できるようになりました。この構造モデルでは、他の企業にサービスを提供する必要があり、外部システムに残りのサービスを提供する専用のアプリケーションを作成できます。一般に、ほとんどのインターネット サービスは数十、場合によっては数百の内部サービスにアクセスする必要があり、それらの間の通信方法は通常 RPC です。つまり、リモート メソッドにアクセスするのと同じように、パラメータを入力して結果が返されるのを待ちます。これは、複雑なシステムを構築する最も簡単な方法です。
以下に示すように、モデル、ファイル システム、キャッシュは表示されないため、誰でも理解できます。
以上がJava アーキテクチャをさまざまな製品に適用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。
