マイクロイントロ
A、春ブーツと春の雲の関係
春ブーツはeurkeを通じてお互いを見つけるために、様々なスピンオフマイクロサービスの、様々なマイクロをつなぐスプリングクラウドサービス、各種マイクロサービスなどを書くために
春の雲はまた、ゲートウェイ、セキュリティ、吹き格下げなど、多くのマイクロサービスソリューションを提供しています
第二に、どのようにマイクロサービスを設計します
1.サービススプリット
2.サービスの登録:複数のマイクロサービスへの単一のアーキテクチャた後、どのようにあなたが別のサービス、それへのサービスがある知っている、または別のサービスを見つける方法を、あなたがサービスを登録する必要があります
。3.サービスの検出を:他のサービスを見つける必要がある、あなたは、ネームサービスによって、他のサービスコールに行くことができます
。4.サービスコンシューマ(装うまたはリボンが達成するために):サービスを呼び出すBのサービスエリア、消費者、サービスプロバイダが呼び出されていることをサービス
5。エントランス(APIゲートウェイの実装は)統一
トラブルの多く、その後、その後、乗算サービスの数を管理することが確かに困難であるサービスは、名前で呼び出すことができるが、各サービスに知ることは不可能である、消費者などのサービスは、サービス名の多くを覚えておく必要があり
、このそれだけの名前を知っている必要があり、統一エントランス、玄関の必要性は、名前がすべての特定のサービスプロバイダを知っている必要はありません
(コンフィグ達成またはアポロ)6.構成管理を:設定ファイル管理プラットフォーム
7.ヒューズ機構(hystrix実現):
システムは、しかし、高い同時実行では、あなたはメカニズムを融合必要なこの時間を応答することができる、すべての要求は、システムのクラッシュを防ぐためにブロックされている。
ブローで システム、要求ブロックは、デフォルトの値を返す
自動的に拡張サービス:8.自動拡張を。
第三に、解決プロセス
1.分割方法
- ユーザインターフェイス層
- アプリケーション層
- ドメイン層
- インフラストラクチャ層
天気予報システムアーキテクチャ設計
各マイクロサービスの後1.スプリット名
MSA-天候収集サーバ
MSA-天候・データ・サーバー
MSA-天候市-サーバー
MSA-天候レポートサーバー
2.各サービスのマイクロ気象予測システムの役割
1)サードパーティのデータインタフェースからの気象データ、店舗を超える「マイクロ天候データ収集サービス」を通じてのRedis収集する
2)「マイクロ都市データAPIサービス」を通じて解析するXMLファイルに格納されているすべての都市のデータのリストを、と提供へのインタフェース:
- 気象データ収集マイクロサービス(に基づいて、「データ・サービスのマイクロ都市リスト、」収集データの都市、広州などとして収集するデータへ)
- 天気予報マイクロサービス、天気予報サービスは、気象条件を示す、別の都市を選択するには、マイクロドロップダウンボックスを提供する必要があるため、
3)「マイクロサービスAPIの気象データは」データソースのRedisから取得され、ショーに「マイクロ・サービスを乗り切る」に提供されるデータ
3.天気予報システムのワークフロー
Redisの保存収集気象データへの1)の気象データ収集サービス街のマイクロID名を取得したり、呼び出すことによってする「マイクロ都市データAPIサービスを、」都市
2)。マイクロサービスのための天気予報「都市データAPI」を呼び出すことによって、市は、市のために収集気象データを「マイクロAPIの気象データサービス」を呼び出し、IDまたは名前を取得し、その後、ウェブページを表示します
4.気象予測システムインタフェースデザイン
第3の放電天候インタフェース
GET http://whther.etouch.cn/weather_mini?citykey={cityId}パラメータ:cityIdの
気象データインタフェース
GET /天候/ cityId / {cityId } パラメーターcityId都市ID
GET /天気/ cityName / { cityName} cityNameパラメータは、都市の名前である
天気予報インターフェースは
GET /レポート/ cityId {cityId}パラメータ:cityId ID都市
都市データインターフェース
GET /都市
システムはRedisのストレージとXML(都市のリスト)であります
春の雲の紹介
雲の効果を1.spring
- これは、構成管理を提供します
- サービス登録、管理などのサービスは、彼がこれらのサービスの状況を知りたいので、各サービスは春の雲に登録されていること、相互作用があると言っています
- 発見後、サービスレジストリサービスレジストリを通じて実現し、お互いに発見された相互間でのサービスを呼び出すことができるようにするには:ディスカバリサービス
- ブレーカ:システムの負荷が大きすぎる場合には、それがアクセスを遮断します
- 負荷分散の間に、インテリジェントルーティング、マイクロブローカー、サービスコール、ワンタイムトークン、制御バス、グローバルロックのリーダーシップの選挙、分散セッション、クラスタの状態、分散メッセージ
2.springクラウドサブ紹介
1)春の雲のconfig
コンフィギュレーション・センターには、configureのgitに集中構成管理プログラムを使用するには、クライアントはgitの設定に読ま
2)春の雲のNetflixの
archaiusユーレカ、hystrix、Zuul、:を含むオープンソースソフトウェアのNetflixの多くのクラスタ、
3)スプリングクラウドバスの
ような構成変更イベントとしてクラスタの伝播状態の変化を一緒に、分散メッセージ・サービス・インスタンスを使用してメッセージ・バス接続サービスは、
スプリングクラウドの設定ホットデプロイと共同で実施することができる
、実際に通信
4クラスタ)春のクラウド
ベースの実装の飼育係、Redisの、hazelcast、領事や他の指導者の選挙と実装の民間の状態モード
5)春のクラウド領事
サービス検出および構成管理を達成
6)春のクラウドセキュリティ
のOAuth2レストクライアントと認証のためのzuulプロキシでの負荷分散、前方に向かう
7)スプリングクラウドスルースは、
適切なスプリングクラウド追跡アプリケーションを配布し,,そしてzipkinと互換性のある追跡ログHTRACE(例えばELK)に基づいてコレクションをログに行うことができる
)8スプリングクラウドデータが流れる
ローカルクラウドオーケストレーションサービスを提供しています。使いやすいDSL、ドラッグ・アンド・ドロップGUIおよびREST APIの簡素化を一緒に基づいて、データパイプラインのマイクロ総合的なサービスオーケストレーション
9)春の雲の流れ
すばやく簡単な宣言モデルのアプリケーションを構築するための軽量マイクロイベントドリブンサービスフレームワークは、外部システムに接続することができる。送信及びカフカスプリングブートまたはRabbitMQの使用してアプリケーション間でメッセージを受信し
10)スプリングクラウドコネクタを
容易にアプリケーションのPaaS例えば、様々なプラットフォーム上の後端部に接続され、データおよびメッセージングサービスとすることができます
サービス検出および登録
1.マイクロサービスの重要性が見つかりました。
サービスは、あなたが見つけるために他のサービスを公開してみましょう
サービス見つける方法2.
サービスを経由してURIアクセスのアクセスを
サービス名によるアクセス
Javaサービス・レジストリ8080:呼ばユーレカパスポート、10.2.3.2に登録10.2.3.1:8080)Javaサービス1ユーレカはパスポートに呼ばれる
2)今ユーレカパスポート内のサービスに対応したJava 10.2.3.1:8080と10.2.3.2:8080サービスプロバイダのサービスである
3)パスポートの名前にアクセスすることにより、サービスへのその後10.2.3.3:8090サービスアクセス10.2.3.1:8080または10.2.3.2:8080、IPアドレスとポートの訪問覚えていない
4)10.2.3.2:8080サービスが10.2.3.4に移行する場合は、のみ、パスポートサービスのユーレカ3.4に登録する必要があります10.2.3.3は、コードを変更する必要はありません
3.ユーレカサーバを構築する方法
1)春のクラウドプロジェクトを作成
2)pox.xml導入ユーレカ-serverパッケージ
、3)構成の設定リスニングポートは、サーバ機能を起動するクライアント機能をオフにします
4.どのようにサービスユーレカに登録します
2)春のクラウドプロジェクトを作成
2)ユーレカ・クライアントパッケージの導入
を自動的ユーレカに発見することができ、コードのプラス@EnableDisCoveryClientで3)
設定ファイルに次の4)を追加するには、application.properties
パスポート番号の登録:spring.application.nameをユーレカサーバーサービス名と
します。http:// localhost:8761 eureka.client.serviceUrl.defaultZone /ユーリカ/ #eureka サーバのアドレス
マイクロコンシューマーサービス
1.マイクロサービス消費パターン
1)サービスのドメイン名またはパスから直接アクセスダイレクトモード、
2)クライアントがレジストリに自分の位置情報を提出するそのモード、サービスインスタンスを開始し、見つかったが、利用可能なサービスのインスタンスを取得するには、レジストリのクエリからクライアント、顧客複数のインスタンスから選択された独自の負荷分散アルゴリズムを使用して終了
3)サーバー発見モードクライアントの発見とモード間の唯一の違いがするクライアントのロードバランシングではありません、それは図に示すサーバ・アーキテクチャを行うことです
2.一般的なマイクロサービスコンシューマ
1)のHttpClient
2)リボンは、
負荷分散クライアントを達成するために、負荷分散クライアント、合成ユーレカ、支持HTTPおよびTCPをベース、ユーレカはRobbonはサービスコンシューマクライアントとして、マイクロサービスインスタンスとして登録されたサービスを提供し、
リボンは、メソッド使用して
追加の依存関係の
依存関係を{コンパイル( 'org.springframework.cloud:spring-clou-starter-netflix-ribbon')}
注射を
添加した:@RibbonClient(名= "Ribbon- 、クライアント"構成= RibbonConfiguration.class)
配置
LBアルゴリズム等
使用
restTemplateを.getForEntity(「のhttp://パスポート/都市」、String.class)# 10.2.3.1:8080/citiesであることが判明したコールにサービス名+パスに登録することにより、直接ユーレカ。
3)装う#最も一般的な
ビルドを追加。装う依存
クラスApplication.javaでは@EnableFeignClientsを追加しました
APIゲートウェイ
1.役割:ユニファイドサービス入り口、多くのサービス・プラットフォーム・インタフェース制御の実現を容易にすることができ、ユーザアイデンティティへのアクセスが確認され、認証データは、改ざんビジネス機能、脱感作応答制御、トラフィックと並行データを防止するために
2.APIゲートウェイを意味
複数のAPIを管理するために、複数のAPIのセット、
統一されたAPIのエントリを
メリット3.APIゲートウェイ
- 内部情報を避け、内部のマイクロサービスと外部のパブリックAPIのAPIエリアを分離することができ、外部に漏れた(アンドロイドへの外部呼び出しは似ているが、内部のマイクロサービスコールの間与えることです)
- マイクロサービスのセキュリティの余分なレイヤを追加しますので、外部の顧客サービスの発見とバージョン管理を避け、すべてのマイクロサービスのための統一されたエントリポイントを提供するために、アクセスAPIに認可されていません。
- 混合プロトコルをサポートしています
- マイクロサービスの構築の複雑さを軽減
- API内部および外部のマイクロサービスAPIで区別マイクロシミュレーションと仮想サービス、
4.APIゲートウェイ過誤
- したがって、合理的なルーティング接続を確保するように、一元管理を行うように構成されたロジックをルーティング
- API Gatewayの高可用性が行われる必要があります
共通APIゲートウェイの実装
- nginxの
- 春の雲zuul
- KONG
zuulを統合する方法6
機能:認証、ストレステスト、カナリア試験、動的ルーティング、負荷シェディング、安全性、静的応答処理、アクティブ交換管理
コントローラ、@ EnableZuulProxy 1)導入zuul
application.properties、例えばzuul 2)書き込み方法。 routes.path:/ HI / **、zuul.routes.hi.serviceId :パスポート、 それは。このパスは、それはパスポートの微細加工サービスに要求を転送します/限り、zuul時間を訪問することです
マイクロサービスの設定の一元化
まず、なぜ必要な集中設定
- マルチマイクロサービス、構成の複数の数、マイクロサービスは、その各々が異なる構成を有し、複数のマシンに配備する必要があります
- 面倒な手動構成管理
第二に、どのような分類に応じて集中管理の構成
分割のソースの構成によれば1
等メインソースコード、ファイル、データベース接続、リモート呼び出し、
2.に構成環境に従って
、開発環境、テスト環境、プレリリース環境、本番環境
3分割積分段構成を
コンパイルするとき:ソース・レベルの構成;一緒にソースコードとコンパイルされたコードのリポジトリファイルを提出する
梱包時に:最終アプリケーションに設定ファイルのいくつかのフォームでのステージを梱包
ランタイム:アプリケーションが起動する前に、特定の構成を知る必要はありません、あなたは、ローカルまたはリモートの設定ファイルに始めることができたときに
4の負荷構成に応じて分割
ブートローダー:アプリケーション起動時に設定を取得し、一度だけ取得するには、アプリケーションがロード構成を行くことはありませんした後に(そのようなポート番号として、スレッドプールは、基本的にはスタートになることはありません)である
動的負荷は:任意の時点で実行されている様々なプロセスでアプリケーションをいくつかに構成得ることができ、実行しているアプリケーションが頻繁にあり得ることを、これらの構成手段A 20から、例えば、ページサイズタブとして修飾(30、変更は)効果の仕上がりになります
3つの要件、コンフィギュレーション・センター
1.面し、抽出し、死者を書き込むことができない符号化設定
、ページサイズ、ページ、データベース接続プールとして、
前記分離は
、本番環境のような構成を単離するためのアプリケーションとの間のデプロイメント環境構成ではなく、テスト環境設定
3.一貫
デプロイを行う場合にはマイクロサービスとは、同じ設定を使用して複数のマシンに分散
4.集中構成の
管理性を持つように設定する必要があり、分散アプリケーション環境では、コンフィギュレーションが可能リモート管理
四、春の雲のコンフィグアーキテクチャ
コンフィグサーバ:gitのに基づいて、彼らは簡単に(+バージョンは、環境の違いを達成することができます)、あなたはコンテンツアクセス管理できるバージョン管理設定環境を実現することができます
設定クライアント:
春クラウド設定を統合する方法第五に、
1.コンフィギュレーションの設定サーバー
添加依赖:依存関係{コンパイル(' org.springframe.cloud:spring-cloud-config-server ' )} 紹介コンフィグサーバ注:@EnableConfigServer 修正application.properties spring.application.name:マイクロ -weather-CONFIG- Serverサービス名# server.port = 8888 eureka.client.serviceUrl.defaultZone:HTTP:// localhostを:8761 /ユーレカ#-Serverはユーレカに登録されている spring.cloud.config.server.git.uri = HTTPS:// github.com/waylau/春・クラウドmicroservice-開発#gitのは、アドレス指定された 一緒に上記で、以下spring.cloud.config.server.git.searchPaths = configの-レポ#gitの指定されたパスをHTTPSである:// github.com/waylau/spring-クラウドmicroservice開発/ CONFIG-レポ
2.構成の設定クライアント
{(コンパイル依存dependciesを追加' org.springframe.cloud:spring-cloud-config-client ' )} 修正application.properties spring.application.name:パスポート番号サービス名 eureka.client.serviceUrl.defaultZone:HTTP:// localhostを:8761 /ユーレカ#-Serverはユーレカに登録されている spring.cloud.config.profile = DEV#指定された環境 spring.cloud.config.uri = HTTP:// localhostを:8888#がコンフィグサーバのアドレスを指定 :#### HTTPS // passport-と呼ばれるが、次github.com/waylau/spring-cloud-microservice-developmentディレクトリ・プロファイルをdev.properties、次のように読み込み、 筆者= mayun#作者の名前を指定します
3.コンフィギュレーションファイルの命名規則
{アプリケーション名} - {プロファイル}の.properties たとえば、次のパスポート - dev.properties パスポートのマイクロサービスという設定ファイルにそれを見つける方法 Application.propertiesは、サービス名を介して行われ - application.propertiesサーバーの行くpassport-dev.propertiesで定義された設定へのアドレス環境(パスポート-devの)
リモートコンフィギュレーション・ファイルを呼び出すためにパスポートをしてみましょう4。
テストケース書く パブリック クラスApplicationTestsを{ @value(" $ {筆者} " ) @テスト 公共 のボイドcontextLoads(){ assertEquals(「mayun 」、筆者)#の私の定義と筆者のプロフィールの値であれば「mayun 」に等しい、そしてそれが読まれます } }
ヒューズダウングレードサービス
1.ヒューズ機構サービスは何ですか
突然、トラフィックの量は、より多くの我々は余裕ができるよりも、あなたはヒューズ機構に必要な、と私たちのリソースの枯渇をさせない場合、私たちは大声で、保護何をする必要があります、彼らはヒューズメカニズムを頼る
ようなトラフィックとして、突然大きすぎる、以上我々はそれがユーザーに(たとえば、エラーページなど)のデフォルト値を返し、(セットしきい値に)余裕があります