序文
SpringCloudマイクロサービスのリーダー、最高のフロアプラン。
ユーレカは、登録中心として、最も重要SpringCloudシステムのコアコンポーネントの一つです。
ロードバランシングを実現することができユーレカで、インターフェースはサービスを呼び出す使用して注釈を付け装います。
ソース
GitHubの
環境
JDK 1.8.0 +
Mavenの3.0 +
SpringBoot 2.0.3
SpringCloud Finchley.RELEASE
開発ツール
IntelliJ IDEA
テキスト
Commonsプロジェクト
Commonsプロジェクト - POMファイル
XSI:のschemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.zwc
springcloud-ユーレカ・コモンズ
1.0
springcloud-ユーレカ・コモンズ
公共事業
びん
UTF-8
1.8
カイロ-SR3
Finchley.RELEASE
io.spring.platform
プラットフォーム-BOM
$ {プラットフォームbom.version}
ポンポン
インポート
org.springframework.cloud
春・クラウドの依存関係
$ {ばねクラウドdependencies.version}
ポンポン
インポート
org.springframework.boot
春・ブートのmaven-pluginの
依存いくつかの一般的な構成
Commonsプロジェクト - プロジェクト構造
サービスプロジェクト
登録センター、2つのプロバイダと消費者:このプロジェクトでは4つのモジュールがあります。
レジストリサービス(レジストリ)
レジストリサービス - POMファイル
XSI:のschemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.zwc
springcloud-ユーレカサービス
1.0
com.zwc
springcloud-ユーレカ・レジストリサービス
0.0.1-SNAPSHOT
springcloud-ユーレカ・レジストリサービス
レジストリ
びん
com.zwc
springcloud-ユーレカ・コモンズ
1.0
org.springframework.cloud
春・クラウド・スターター・ネットフリックス - ユーレカ - サーバー
org.springframework.boot
春・ブートのmaven-pluginの
主に追加春 - クラウド・スターター・ネットフリックス - ユーレカ・サーバーに依存
レジストリサービス - application.ymlプロフィール
#ポート
サーバ:
ポート:8761
#アプリケーション名
春:
応用:
名前:eurkaサーバ
ユーレカ:
インスタンス:
#Ipの代わりにインスタンス名を使用して
好むとIPアドレスを:真
ホスト名#の例
ホスト名:$ {spring.cloud.client.ipアドレス}
ルール#インスタンスID
インスタンスID:$ {spring.cloud.client.ipアドレス} $ {spring.application.name} $ {}はserver.port
クライアント:
#登録センターに自分自身を登録するかどうか
registerWithEureka:偽
#レジストリに登録情報を取得するかどうか
fetchRegistry:偽
serviceURL:
#登録センター住所
defaultZoneます。http:// $ {eureka.instance.hostname}:$ {はserver.port} /ユーリカ/
もちろんこれは、変更することができ、8761のデフォルトポートを使用しますが、ポートの電話サービスセンター側の登録アドレスの発見はそれと一致するように
レジストリサービス - クラスを開始
パッケージcom.zwc。
輸入org.springframework.boot.SpringApplication。
輸入org.springframework.boot.autoconfigure.SpringBootApplication。
輸入org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
パブリッククラスSpringcloudEurekaRegistryServiceApplication {
パブリック静的無効メイン(文字列[] args){
SpringApplication.run(SpringcloudEurekaRegistryServiceApplication.class、引数)。
}
}
@EnableEurekaServer注釈起動クラスを追加し、このプロジェクトが登録センターであることを示しています
レジストリサービス - プロジェクトを開始します
HTTP 1.プロジェクトの成功をご覧ください:// localhostを:8761 /ユーレカ・サーバーのメインページを参照してください
プロバイダ(プロバイダ)
プロバイダ - POMファイル
XSI:のschemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.zwc
springcloud-ユーレカ-providerfirstサービス
1.0
com.zwc
springcloud-ユーレカ-providerfirstサービスコア
1.0
springcloud-ユーレカ-providerfirstサービスコア
エンジニアリング・サービスの1つのプロバイダ - コア
びん
com.zwc
springcloud-ユーレカ・コモンズ
1.0
com.zwc
springcloud-ユーレカ-providerfirst-サービスAPI
1.0
org.springframework.cloud
春・クラウド・スターター・ネットフリックス - ユーレカ - クライアント
org.springframework.boot
春・ブートのmaven-pluginの
主に追加春 - クラウド・スターター・ネットフリックス - ユーレカ・クライアント依存
プロバイダ - application.ymlプロフィール
#ポート
サーバ:
ポート:8090
#アプリケーション名
春:
応用:
名前:言う、こんにちは
ユーレカ:
インスタンス:
#Ipの代わりにインスタンス名を使用して
好むとIPアドレスを:真
ホスト名#の例
ホスト名:$ {spring.cloud.client.ipアドレス}
ルール#インスタンスID
インスタンスID:$ {spring.cloud.client.ipアドレス} $ {spring.application.name} $ {}はserver.port
クライアント:
serviceURL:
#登録センター住所
defaultZoneます。http:// $ {eureka.instance.hostname}:8761 /ユーリカ/
8761上記の設定ここで注意レジストリアドレスポートポートは、レジストリのプロジェクトを設定されています
2つの消費者のポートは8090でプロジェクト、ここで一貫性のない専用ポート、および8091のための別のポートがあります。行くことはありません
二消費者エンジニアリングの役割は、負荷分散の効果を達成することです
spring.application.name:アプリケーション名、消費者が呼ばれて使用する必要があります
プロバイダ - コントローラ遠位コントローラ
パッケージcom.zwc.providerfirst.controller。
輸入org.springframework.beans.factory.annotation.Value。
輸入org.springframework.web.bind.annotation.RequestMapping。
輸入org.springframework.web.bind.annotation.RestController。
/ **
* @ClassName SayHelloController
* @Desc TODOセイこんにちは
* @Date 2019年5月15日午後03時28分
* @Version 1.0
* /
@RestController
パブリッククラスSayHelloController {
/ *
* @ClassName SayHelloController
* @Desc TODOは、設定ファイルのポートを読み込み、
* @Date 2019年5月15日午前15時49分
* @Version 1.0
* /
@value( "$ {}はserver.port")
プライベート文字列ポート。
/ *
* @ClassName SayHelloController
* @Desc TODOセイこんにちは
* @Date 2019年5月15日15時30分
* @Version 1.0
* /
@RequestMapping( "/ハロー")
パブリック文字列のHello(){
リターン「こんにちは春クラウド!!!ポート:」+ポート。
}
}
こんにちは、出力ポート:サービスの提供
プロバイダ - クラスを開始
パッケージcom.zwc。
輸入org.springframework.boot.SpringApplication。
輸入org.springframework.boot.autoconfigure.SpringBootApplication。
輸入org.springframework.cloud.netflix.eureka.EnableEurekaClient。
@SpringBootApplication
@EnableEurekaClient
パブリッククラスSpringcloudEurekaProviderfirstServiceCoreApplication {
パブリック静的無効メイン(文字列[] args){
SpringApplication.run(SpringcloudEurekaProviderfirstServiceCoreApplication.class、引数)。
}
}
このプロジェクトは、レジストリにサービスを提供することができることを示し@EnableEurekaClientコメントを追加
プロバイダ - プロジェクトを開始
HTTP 1.プロジェクトの成功をご覧ください:// localhostを:8090 /ハロー出力内容を参照してください「こんにちは春クラウド!!!ポート:8090」
2.更新のhttp:// localhostを:8761のサービスを見ることができます/(レジストリ)が登録されているが来ました
3.同様に、ポートのプロバイダがあるだけで一貫性のない動作しますが、また、起動
// localhostを:8091 /ハロー出力内容「こんにちは春クラウド!!!ポート:8091」を参照して、プロジェクトが正常に起動した後、HTTP 4.をご覧ください
5.更新を再度ます。http:// localhostを:8761 /(レジストリ)2があり、同じサービスプロバイダを見ることができます
コンシューマー(消費者)
消費者 - POMファイル
XSI:のschemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.zwc
springcloud-ユーレカ・消費者サービス
1.0
com.zwc
springcloud-ユーレカ・コンシューマー・サービス・コア
1.0
springcloud-ユーレカ・コンシューマー・サービス・コア
消費者サービスプロジェクト - コア
びん
com.zwc
springcloud-ユーレカ・コモンズ
1.0
com.zwc
springcloud-ユーレカ・コンシューマー・サービスAPI
1.0
org.springframework.cloud
春・クラウド・スターター・ネットフリックス - ユーレカ - クライアント
org.springframework.cloud
春・クラウド・スタータopenfeign
org.springframework.boot
春・ブートのmaven-pluginの
プロバイダ、春・クラウド・スターター・ネットフリックス - ユーレカ・クライアント依存の必要性と一致して
また、あなたは依存春・クラウド・スターター・openfeignを開始装うを追加する必要があります
消費者 - application.ymlプロフィール
#ポート
サーバ:
ポート:8080
#アプリケーション名
春:
応用:
名前:サービス装います
ユーレカ:
インスタンス:
#Ipの代わりにインスタンス名を使用して
好むとIPアドレスを:真
ホスト名#の例
ホスト名:$ {spring.cloud.client.ipアドレス}
ルール#インスタンスID
インスタンスID:$ {spring.cloud.client.ipアドレス} $ {spring.application.name} $ {}はserver.port
クライアント:無錫婦人科病院http://www.ytsg120.cn/
serviceURL:
#登録センター住所
defaultZoneます。http:// $ {eureka.instance.hostname}:8761 /ユーリカ/
8761上記の設定ここで注意レジストリアドレスポートポートは、レジストリのプロジェクトを設定されています
spring.application.name:アプリケーション名は、それはまた同時に消費で消費することができ、消費者と呼ばれて使用する必要があります
消費者 - サービス・コール
パッケージcom.zwc.consumer.api.feign。
輸入org.springframework.cloud.openfeign.FeignClient。
輸入org.springframework.web.bind.annotation.RequestMapping。
/ **
* @ClassName FeignApi
装うコールAPIを使用して* @Desc TODO - インターフェイス
* @Date 2019年5月15日午後04時11分
* @Version 1.0
* /
@FeignClient( "言う-こんにちは")
FeignApiパブリックインターフェイス{
/ *
* @ClassName FeignApi
* @DescのTODOコール/ハロー方法と言う-ハローサービス名
* @Date 2019年5月15日16:17
* @Version 1.0
* /
@RequestMapping( "/ハロー")
ストリングハロー()。
}
コールを指定する@FeignClientを通してどのサービス(「言う-こんにちは」)注釈
spring.application.nameの提供者であるハローは、言う:アプリケーション名
ストリングハロー();:見つけることができ、この方法は、唯一のインタフェースとして定義される、でSayHelloController方法を提供することにあります
プロバイダは同じ値で、同じメソッドと同じパラメータ名を返すために持っていることに注意してください
消費者 - コントローラ遠位コントローラ
パッケージcom.zwc.consumer.controller。
輸入com.zwc.consumer.api.feign.FeignApi。
輸入org.springframework.beans.factory.annotation.Autowired;
輸入org.springframework.web.bind.annotation.RequestMapping。
輸入org.springframework.web.bind.annotation.RestController。
輸入javax.annotation.Resource。
/ **
* @ClassName FeignController
装うコールAPIを使用して* @Desc TODO - フロントコントローラ
* @Date 2019年5月15日16:18
* @Version 1.0
* /
@RestController
パブリッククラスFeignController {
@Autowired(=偽必須)
プライベートFeignApi feignApi。
/ *
* @ClassName FeignController
* @DescのTODOメソッドの呼び出しは、こんにちはと言います
* @Date 2019年5月15日午前16時20分
* @Version 1.0
* /
( "/装う")@RequestMapping
パブリック文字列ふり(){
feignApi.helloを返します();
}
}
ビーンは、この方法でサービスを呼び出し、@Autowiredコメントアセンブリ豆を使用してください
外部インタフェースの呼び出しにこのような露出は、実際にサービスプロバイダです
消費者 - スタートクラス
パッケージcom.zwc。
輸入org.springframework.boot.SpringApplication。
輸入org.springframework.boot.autoconfigure.SpringBootApplication。
輸入org.springframework.cloud.netflix.eureka.EnableEurekaClient。
輸入org.springframework.cloud.openfeign.EnableFeignClients。
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
パブリッククラスSpringcloudEurekaConsumerServiceCoreApplication {
パブリック静的無効メイン(文字列[] args){
SpringApplication.run(SpringcloudEurekaConsumerServiceCoreApplication.class、引数)。
}
}
このプロジェクトは、レジストリにサービスを提供することができることを示し@EnableEurekaClientコメントを追加
@EnableFeignClientsノートはリモート呼び出しのために装う機能に示す追加
消費者 - プロジェクトを開始
プロジェクトの成功の後1.は、httpにいくつかの訪問を開始しました:// localhostを:8080 /装います
2.あなたが見つけることができる別の出力「こんにちは春クラウド!!!ポート:8090」と「こんにちは春クラウド!!!ポート:8091」
3.この時点では、負荷分散の効果を達しています
4.更新を再度ます。http:// localhostを:8761 /(レジストリ)は、より多くの消費者よりも、この時点で見ることができます
サービスプロジェクト - プロジェクト構造
マルチユースプロジェクトのIntelliJ IDEAオープン
GitHubのからのプロジェクトは、ローカルにダウンロード
オープンのIntelliJ IDEA
[ファイル]をクリックします - >開きます
ローカルのプロジェクトディレクトリにダウンロードオープン
springcloud - ユーレカ - > springcloud-ユーレカ・サービス(このプロジェクトを開くために選択します)
奉仕プロジェクトを開いた後、
もう一度クリックしてファイル - >プロジェクトStructrue
モジュールを選択し、「+」記号をクリックしてください
インポートモジュールをクリックします
またはあなたがローカルプロジェクトディレクトリにダウンロード開きます
springcloud - ユーレカ - > springcloud-ユーレカ・コモンズ - >のpom.xml
[OK]をクリックします
次に、[完了]をクリックします
[OK]を、[適用]をクリックします
スプレッド
CentOS7はドッカー簡単な展開SpringCloudプロジェクトを使用しました