マイクロサービスは、あなたが知っている必要があります!(ユーレカ、ふり、リボン、Hystrix、Zuulの根底にある原理のコアコンポーネント)

ディレクトリ

ビジネス・プレゼンテーション・シーン

二、春の雲のコアコンポーネント:ユーレカ

三、春の雲のコアコンポーネント:装います

四、春の雲のコアコンポーネント:リボン

五、春の雲のコアコンポーネント:Hystrix

六、春の雲のコアコンポーネント:Zuul

セブン概要

 

 

アウトライン

疑いの余地は多くの本で、この技術を説明するためにブログ、春クラウドは現在、マイクロサービスアーキテクチャの分野のリーダーである、があります。しかし、ほとんどは、まだ多くの人が認識しないかもしれない、原理の多くは、基礎となる、使用に春のクラウド機能の説明のレベルのままです。したがって、手描き、春クラウドマイクロサービスアーキテクチャの基本原則についてあなたに話をたくさんしてこの論文。

実際には、春の雲は、家族のバケット技術スタックである成分を多く含んでいます。本論文では、いくつかのコンポーネントの中核で始まるその根底にはどのような作品を分析し始めます。それはユーレカ、リボン、装う、Hystrix、Zuulこれらのコンポーネントです。

 

まず、ビジネスシナリオは、導入された
ビジネスシナリオは、我々は次のようにプロセスがあり、その電気の供給業者は、現在、Webサイトを開発している有料受注の機能を実現するための前提とすることをあなたに伝え最初:

オーダーを作成した後、ユーザーはすぐにこの順序のために支払われている場合は、私たちは「有給」に注文状況を更新する必要があります

対応する商品在庫の控除

お知らせ、センター倉庫出荷

ユーザの現在に統合の増加に対応ショッピング

 

 

これらのプロセスに応じて、我々は、サービスの受注、在庫、サービス、倉庫サービス、統合サービスを持っている必要があります。:次のように全体のプロセスの一般的な考え方

ユーザーが注文の支払いを完了した後、注文は、サービスへの注文状況の更新を行きます

受注インベントリサービスコールサービスは、対応する機能を完了します

サービスを倉庫注文サービスコールは、対応する機能を完了します

受注一体型サービスコールサービスは、対応する機能を完了します

この時点で、全体の決済注文は、ビジネス・プロセスを終了します

 

この図下図、明確に示すこと、様々なサービス間の呼び出し元のプロセス:

 

グッド!あなたがビジネスシナリオを持っていたら、のは春クラウドマイクロサービスアーキテクチャを見てみましょう、そしてどのようにこれらのコンポーネントは、同様にその背後にある原則のそれぞれの役割として、一緒に働いています。

 

 

二、春の雲のコアコンポーネント:ユーレカ

あなたは注文サービスインベントリサービス、倉庫保管サービス、または統合サービスを呼び出したい、呼び出す方法:のは、最初の質問を考えてみましょうか?

オーダサービスインベントリサービスは、単にマシンああ上の人を知りませんでした!彼も誰に送信するかわからない、要求を開始することを望んでいる、無力!

この時、春の雲ユーレカのターンを果たしました。ユーレカは、登録と発見サービスを担当するレジストリ内のマイクロサービスアーキテクチャ、です。

 慎重に何を全体のプロセスを分析するための計画に、以下のこのグラフで見てみましょう:

 

 

上記のように、在庫サービスは、倉庫のサービスは、統合サービスは、ユーレカClientコンポーネント、ユーレカサーバー内の情報サービスの登録のための構成要素に責任を持っています。端的に言えば、それは自身のマシン上で、どのポートでリッスンユーレカサーバーを、伝えることです。ユーレカServerは、マシンの保存、レジストリを持って登録センターであり、ここで各サービスとポート番号

注文サービスもユーレカClientコンポーネントを持っている、ユーレカクライアントコンポーネントは、ユーレカサーバーを見つけるでしょう尋ねる:インベントリサービスマシンああ?どのポートああに聞きますか?サービスの倉庫?統合サービス?次に、あなたのローカルキャッシュにレジストリユーレカServerのアップから引き出されたこれらの情報を置くことができます。

注文サービス在庫サービスに呼び出したい場合はその後、あなたはどのマシンを尋ねるために、独自のローカルユーレカクライアントインベントリサービスを見つけることができませんか?どのポートを監視するには?応答を受け取った後、すぐに、過去にリクエストを送信するインタフェースの株式そのサービスインベントリ控除を呼び出すことができます!同様に、あなたがオーダーサービス倉庫サービス、統合サービス、また、その後のスーツにコールする場合。

要約すると:

ユーレカクライアント:この情報サービスはユーレカServerに登録する責任があります

ユーレカサーバー:レジストリを持って登録センターは、各サービスとポート番号マシンを保存しました

 

三つは、春の雲のコアコンポーネント:装う
今注文サービスは、私たちはその目録サービス、統合サービス、倉庫保管サービスを知っているだけでなく、どのポート番号でリスニング。しかし、新しい疑問が再び:あなたが他のサービスとのネットワーク接続を確立し、あなた自身のためのサービスコードの多くを書き込み、その後、複雑な要求を構築したいですか、そして過去にリクエストを送信し、その結果を最終的な応答は、多くのコードを書くために戻りましたそれに対処しますか?

これは、翻訳のコードスニペット上記のプロセスであり、のは、見てみましょうか、何を、この絶望的と無力感を理解!

ヒント、高エネルギーフロント:

コードの大部分の上お読みになった後、戻って冷たい、冷たい汗が感じませんでしたか?あなたは、実際にサービス間の呼び出しは、すべての手書きのコードならば、コードはそうこの事単に意志地球上の人々ができない、少なくとも数回の上記期間よりも多くするようになります。

ケースであることを、どのようにそれを行うには?ない心配を行い、装うはすでに良いエレガントなソリューションを提供してくれました。装うが、それを見てみる場合は、ご注文のサービス呼び出しコードインベントリサービスがChengshayangになりますか?

上記のコードを読んだ後、それは感じていますか?私は、全世界のクリーンを感じていないですし、生きる勇気を見つけるために!基礎となる接続設定要求を確立していない、コードを解析する応答は、直接FeignClient注釈インターフェイス、そのインターフェイスによって定義され、それを呼び出しています。人々装うクライアントのメモによると、あなたは、ジェンを開始し、応答を取得し、レスポンスを解析し、その上を目指して、基礎となる接続設定要求の確立とサービスを指定します。汚い仕事のこのシリーズは、人々はあなたのすべてがした与える装います。

 

 

質問があるので、どのように装うが、それとても魔法であるのですか?非常に単純な、重要なメカニズム装うは、動的プロキシの使用です。さんは分析する計画で、次のチャートを見てみましょう:

あなたがインターフェイス上@FeignClientコメントを定義した場合、すべての最初に、このインタフェースの装うは、動的プロキシを作成します。

あなたがそのインターフェイスを呼び出す場合次に、基本的にコアの中核である装うが作成された動的プロキシは、呼び出し、

装う、動的プロキシ動的にあなたがアドレス要求されたサービスを構築するために、あなたの@RequestMappingやインターフェイス上の他のノートに基づいて

最後に、このアドレスは、要求を開始し、応答を解析します

 

 

四、春の雲のコアコンポーネント:リボンが
完成し、装うが完了していません。新たな問題が今、再び、5機の在庫サービス展開の人々は、として次の場合:

192.168.169:9000

192.168.170:9000

192.168.171:9000

192.168.172:9000

192.168.173:9000

 

この時間のトラブル!人々がそれを要求されているどのマシンを知ってどのように装いますか?

そして、春クラウドリボンが便利です。リボンは、特にこの問題を解決するために設計されています。その役割は、負荷分散にあり、それはあなたが各マシンに要求を分散するためにも、リクエストごとにマシンを選択するのに役立ちます

リボン負荷がデフォルト古典的なラウンドロビンポーリングアルゴリズムを使用してバランスをとります。これは何ですか?サービスインベントリサービスの順序は10個の要求を開始した場合は簡単に言えば、あなたはその後、その後、最初の2機、3機、4機、5機の最初のマシンを聞いてみましょう再び - サイクル、最初のマシン、第二の機械。などなど。

また、リボンと装うとエウレカは次のように、作業を完了するために緊密な協力です。

まずリボンは、対応するサービスレジストリにユーレカクライアントから取得しますリスニングポート番号でのマシン上で展開されているすべてのサービスを知っているだろう。

そして、あなたはマシンを選択し、デフォルトのリボンラウンドロビンアルゴリズムを使用することができます

装うが、このマシンに焦点を当て構築し、要求を開始したことになります。

上記のプロセス全体、ヘルプの人々より深い理解に再びマップ:

五、春の雲のコアコンポーネント:Hystrix

マイクロサービスアーキテクチャでは、システムは、サービスの多くを持っています。この記事では、ビジネスのシナリオでは例として:3つのサービスでビジネス・プロセスを呼び出すためには、サービスの必要性。今、ハンドル要求への100件のスレッドと仮定注文サービスのみ自身のアップに、そして、残念ながら、私は統合サービスを呼び出すときに、数秒間立ち往生され、各サービスオーダーを統合サービスをハングアップ、そしてスロー - タイムアウト例外を。

 

作品は、これが何らかの問題が発生します、分析するために一緒にしましょうか?

システムは、高い同時実行のシナリオの下であれば、時間をかけてリクエストの鄭大多数は、サービスカードの順序は、この要求の統合サービスで100件のスレッドになります。スレッドにつながっサービスの受注は要求を処理できません

サービスの注文を要求し、サービスの受注は、ハングアップしていることが発見された要求に応答しないとき、それは他の人につながります

この上で、サービスは以下のようにひどい雪崩の問題マイクロサービスアーキテクチャは、次のとおりです。

 

非常に多くのサービスがお互いを呼び出す任意の保護なしで、その後、特定のサービスをハングアップした場合、それは他のサービスにつながる、連鎖反応を起こしますが、上記のようにもリンクされています。スレッドがない作業、インスタントオーダーサービスが得られ、サービスの注文を要求する他のすべての応答が、立ち往生できなくなり、ハングアップすることができ、例えば、統合サービスは、ハングアップここでは、サービス要求の統合サービスのために、すべてのカードのスレッドが発生します。

しかし、我々は、積分サービスがハングアップした場合でも、サービスの注文がああハングアップすることができない、考えます!なぜ?

私たちは、ビジネスの観点を組み合わせて:とき支払指図限り、株式控除し、[OK]を、その後倉庫の配信通知

彼が回復した後、積分サービスは、データを回復するために手でゆっくりと、人間の肉を、大したこと、などをハングアップした場合!サービスインテグレーターとして必須で直接注文サービスにハングアップする理由もたむろしてつながりますか?受け入れられません!

分析は、現在行われ、どのように解決するには?

どこHystrixデビューです。Hystrixを単離し、そしてフレームヒューズが劣化します。それは何を意味するのでしょうか?端的に言えば、Hystrixは、注文サービスのような小さなスレッドプールの数に従事するサービス要求スレッドプールの在庫で、サービス要求を倉庫は、スレッドプールで、不可欠なサービス要求は、スレッドプールです。のみ、そのサービスのリクエストに応じて各スレッドプールのスレッド。

アナロジーは:さて、残念ながら、一体型サービスは、意志Zeyangをハングアップ?

もちろん、順序は、コールの統合サービススレッドが立ち往生しているではない作業ああに使用するサービスになります!しかし、サービスの受注のためには、2つのサービスがどのような方法で影響されることはありませんので、両方のスレッドプールは、正常に動作しているサービスを倉庫、在庫サービスを呼び出します。

他の誰か注文サービス要求、サービスオーダまたはサービスは、サービスコールの通知配信を倉庫、在庫の通常在庫控除を呼び出すことができる場合は、この時間。ちょうどその時毎回誤差積分サービスを呼び出します。統合サービスは、各コールにリンクされている場合でも、数秒のためにそれをやって立ち往生して行かなければなりませんか?理にかなって?もちろんありません!したがって、我々は、ヒューズへの直接統合サービスは、このような要求は、数秒のために立ち往生ネットワーク、このプロセスが呼び出されたヒューズを取らないように、リターンに直接5分のサービスポイントを要求するように、持っていません!

人々が言っ​​たことを、弟、あなただけの一体型サービスのヒューズをハング、どのような結果、何かあなたはああやります!結果的にああを直接返すために終了しますか?いいえ問題は、私たちはダウングレードに来る:各呼び出しの統合サービスを、あなたがデータベースにメッセージを録音していない、彼は統合サービスがハングアップしているため、統合を増加し、増加成功に至らなかったユーザーの特定の数に言いました!このような統合およびその他のサービスは、あなたが手でこれらのレコードを統合することについて、追加することができ、復元されました。このプロセスは、ダウングレードと呼ばれています。

あなたのマップ、櫛Hystrix分離、ヒューズ、及び劣化のプロセス全体に続いて、より直感的な理解を助けるために:

 

六、春の雲のコアコンポーネント:Zuulは
Hystrixを終え、その後、最後の構成要素についての話に皆:マイクロサービスゲートウェイであるZuul、。このコンポーネントは、ネットワークのルーティングを担当しています。ネットワークルーティングを理解しますか?OK、私はあなたが毎日ではない仕事Zuulは何が起こるならば、の話を与えるでしょうか?

あなたは、サービスの数百を展開舞台裏とし、今フロントエンドの兄弟があり、人々の要求があそこブラウザから直接送信されます。アナロジー:人々は、あなたがまだの人は、このサービス名は、インベントリサービスである覚えてみましょうか、インベントリサービス要求を見てみたいですか?5台のマシンにデプロイ?人々はこの1つを覚えていることを喜んでいる場合でも、サービス、それの舞台裏名前とアドレスの数百を持つことができますか?家族のリクエストを意味する、あなたは1を覚えておく必要がありますか?あなたはこのようにプレイしたい、それは船の友情で、ターンをオンに言いました!

このような状況の上には、単に現実的ではありませんでした。そのため、一般的なマイクロサービスアーキテクチャをなどアンドロイド、IOS、PCのフロントエンド、小型のマイクロチャネルプログラム、H5、のように、内側にゲートウェイを設計するためにバインドされ、バックエンドを気にする必要はありませんサービスの何百もあります、我々はすべての要求へのゲートウェイが存在しているはずゲートウェイに行きます、機能のいくつかの要求でゲートウェイは、要求がバックエンドサービスに転送されます。

そして、ゲートウェイの背後にあり、多くのそのような統一格下げなどのメリット、行うことができ、制限、認証および承認、セキュリティなどがあります。

 

 

VII概要:

最後に、合計する、上記のいくつかの春クラウドのコアコンポーネント、マイクロサービスアーキテクチャの役割は、演奏されました。

ユーレカ:各サービスを開始するには、ユーレカクライアントサービスはユーレカサーバーに登録され、彼らは他のサービスを知っているので、ユーレカクライアントも、ユーレカサーバープルからレジストリを取るために回すことができるとき

リボン:サービス間の時間は、サービスから、ロードバランシング、複数のマシンを行うにはリボンに基づいて要求を、開始し、選択

装う:リクエストURLアドレスをステッチ、ノートと選択したマシンに応じて、ダイナミックプロキシメカニズム装うに基づいて、要求を送信します

Hystrix:リクエストが行くようにHystrixスレッドプールによって開始され、異なるサービスは、サービス問題の雪崩を避けるために、異なるサービスコールの分離を達成するために、異なるスレッドプールを取ります

Zuul:移動端末を呼び出すフロントエンド、バックエンドシステム、Zuul、対応Zuulサービスに転送要求ゲートウェイからユニファイドにゲートウェイ場合

 

これらは、春のクラウド・サービス・アーキテクチャのマイクロ少数のコアコンポーネントの基礎となる原理を説明するために、ビジネスシナリオを通じて当社電気事業です。

 

テキスト要約も直感的に十分な?問題ありません!

私たちは一緒に絵を通して春クラウドの5つのコアコンポーネントは、およびアーキテクチャの基本原則のための直感的な感じに来ます:

おすすめ

転載: www.cnblogs.com/ZenoLiang/p/12624035.html