説明:
リボンは、サービス消費者としてのSpring-Cloudの役割であり、クライアントはサービスプロバイダーのサービスを消費できます。
たとえば、この例では、サービスプロバイダーが登録センターに登録します。サービスプロバイダーは、Hello Stringを返すサービスインターフェイスを提供します。このインターフェイスをリボンを介して呼び出し、実際のサービスプロバイダーのアドレスを公開せずにサービスプロバイダーのサービスを取得します。
前提:
以前のチュートリアルに従って、登録センターとサービスプロバイダーを構築してください。ここでは、シャード登録センターを使用できます。そうしないと、使用できません。これは一時的に使用される前に設定されたシェード登録センターになるように設定されており、サービスプロバイダーはそれのみを提供できます。
準備:
1.登録センターを開始します
以前のチュートリアルによると、Peer1とPeer2を使用して、2つの破片の登録センターを開始します。単一のノードの場合、プロジェクトを直接開始できます。
起動後、図に示すように、localhost:1111またはlocalhost:1112を確認できます
2。サービスプロバイダーを起動します
負荷分散の状況を確認するには、2つのサービスプロバイダーを開始する必要があります
以前のチュートリアルによると、2つの端子が指定されたポートを起動するために有効になっています(2つの同一のサービスは、それぞれの構成ファイルで異なるポートを構成することもできます)。 2つの端末命令は次のとおりです。
CD TARGENJAVA -JAR SPRINGCLOUDDEMO-0.0.1-SNAPSHOT.JAR - SERVER.PORT = 8080
CD TARGENJAVA -JAR SPRINGCLOUDDEMO-0.0.1-SNAPSHOT.JAR - SERVER.PORT = 8081
スタートアップの結果:
この時点で、準備が完了しました
文章:
1。リボンサービス構造
テンプレートを使用せずに新しいMavenプロジェクトを作成します。このプロジェクトはRobbin-Customerと呼ばれ、輸入依存関係は次のように参照されます。
<?xml version = "1.0" encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance <http://www.w3.org/2001 XSI:Schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.0.sdsd"> <modeleversion> 4.0.0 </modelversion> <グループcom.hellxz </groupid> <artifactid> ribbon-customer </artifactid> <バージョン> 1.0-snapshot </version> <parent> <parent> <parent> <parent> <parent> <parent> <parent> <cringframework.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid> <バージョン> 1.5. <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-web </artifactid> </dependency> <dependency> <groupid> org.springframework.cloud </groupId> <artifactid> spring-cloud-starter-eureka </artifactid> </</</</</</</</</</</</</</</</</bivorys <groupid> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-ribbon </artifactid> <version> release </version> </dependency> </dependency> </dependency> <dependencymanagement> <redencies> <seplawed> org.springframework.cloud </groupid> <artifactid> spring-cloud-dependencies </artifactid> <version>リリース</version> <scope>インポート</scope> <type> pom </type> </dependency> </dependencies> </dependencies> </dependencymanagement> </project>
新しいスプリングブートスタートアップクラスを作成し、管理のためにレストテンプレートをスプリングコンテナに渡す
パッケージcom.cnblogs.hellxz; Import org.springframework.boot.springApplication; Import org.springframework.boot.autoconfigure.springbootapplication; Import org.springframework.cloud.cloud.client.discovery.enablediscoverient; Import; org.springframework.cloud.client.loadbalancer.loadbalanced; import org.springframework.context.annotation.bean; import org.springframework.web.client.resttemplate;/*** @author:hellxz* @description */ @enablediscoveryclient @springbootapplicationpublic class customerapplication {@bean //この豆をSpring container @loadbalanced //このannotation Restemplate resttemplate(){return new RestTemplate()を介してロードバランスを有効にする} public static void main(string [] args){springApplication.run(customerApplication.class、args); }}構成登録情報のSRC/Resourcesディレクトリにapplication.ymlを作成します。この記事では、シャード登録センターを使用しています。単一のノードのdefaltzoneを構成してください。
サーバー:ポート:9000#リボンカスタマースプリングのサービスポートを指定するスプリング:アプリケーション:名前:名前:リボンカスタマー#specify#specify eureka登録センターのeurekaアドレス:clientzone:defaultzone:http:// peer1:1111/eureka/、http:// peer2:1112/eureka/eureka/eureka/
StartupクラスディレクトリにCustomErControllerを作成し、RestTemplateを注入してサービスインターフェイスを呼び出す
パッケージcom.cnblogs.hellxz; Import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation.requestmapping; Import org.springframework.web.bind.annotation.Requestmethod; Import org.springframework.web.bind.annotation.restcontroller; Import org.springframework.web.client.resttemplate;/** * @author:hellxz * @description:@date:2018/4/16 15:54 */ @restcontrullerpublictublictublictublictublic custublic custarctow custublic custultublic class/@date:2018/4/16 15:54 * RESTTEMPLATEプライベートレストテンプレートRESTTEMPLATE; @RequestMapping(value = "/ribbon-customer"、method = requestmethod.get)public string hellocustomer(){//ここでコメントしたので、以前にストレートチェーンアクセスサービスプロバイダーインターフェイスから取り出したため、結果は返されず、エラーが報告されます// RESTTEMPLATE.GETFORENTITY( "http:// localhost:8080/hello"、string.class).getbody(); // RESTTEMPLATEを使用してMicroServiceインターフェイスを呼び出しますRestTemplate.getForentity( "http:// hello-service/hello"、string.class).getbody(); }}注:上記のコードの24行目は、エラーのデモを提供します。リボンインターフェイスにアクセスするときにエラーが発生し、ホワイトエラーページが表示される場合は、こちらをご覧ください
この時点で、リボン消費者アプリケーションが構築され、テストが開始されます
テスト:
http:// localhost:1111にアクセスしてください/このリボン消費者アプリケーションが登録センターに登録されていることがわかりました
http:// localhost:9000/ribbon-customerにアクセスしてください
サービスプロバイダープロジェクトにアクセスがある場合は、2つのサービスプロバイダーが開始されたため、情報が印刷されることに注意してください。ここでは、リボンの負荷分散をテストできます。
サービスプロバイダーの出力を表示します
2番目の端子はそうではなく、構成ラインを介して解像度のeurekaエンドポイントにまだ表示されています
ページを更新して端末を表示します。リボンのデフォルトのロードバランシングの実装はポーリングであるため、同じサービスに複数回アクセスすることが発生する可能性があります。ページを何度か更新すると、別のターミカルに間違いなく表示されます!
結論:
サービス消費者として、リボンはサービスプロバイダーが提供するサービスを取得しながら、インターフェイスアドレスをユーザーに公開することはできません。ここでサービスインターフェイスを呼び出すと、ホスト名の代わりにサービスプロバイダーのサービス名が使用されていることがわかります。この機能は、サービスガバナンスフレームワークで非常に重要です。
Jhipsterジェネレーターを最初に学んだので、事前に予測したいと思います。その後、リボンを置き換えることができるFeignと呼ばれる技術があります。この一連のブログはすべて研究ノートです。実際の操作では、アプリケーションがサービスプロバイダーとサービス消費者の両方である状況がある場合があります。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。