亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring-cloud 服務發現與消費(以ribbon為例)

2024-07-14 08:40:18
字體:
來源:轉載
供稿:網友

說明:

ribbon是spring-cloud中作為服務消費者的一種角色,客戶端可以通過它來對服務提供者的服務進行消費,

比如本例中是服務提供者注冊到注冊中心,服務提供者提供了一個服務接口,返回一個hello字符串,我們通過ribbon將這個接口調用,再不暴露真實服務提供者的地址的同時,獲取服務提供者的服務

前提:

按照之前幾個教程,搭建出注冊中心、服務提供者。這里可以使用分片的注冊中心,也可以不使用,這里暫時定為使用之前搭好的分片注冊中心,服務提供者僅提供一個即可。

準備工作:

1、啟動注冊中心

按照之前的教程,分別使用peer1和peer2進行啟動兩個分片的注冊中心,如果是單節點直接啟動項目即可

spring,cloud,ribbon

啟動后可以查看下localhost:1111或localhost:1112,如圖

spring,cloud,ribbonspring,cloud,ribbon

2、啟動服務提供者

這里為了查看負載均衡的情況,所以需要啟動兩個服務提供者

按照之前教程中,分別開啟兩個terminal進行指定端口啟動(兩個相同的服務也可以在各自的配置文件中配置不同的端口),兩個終端指令分別如下:

cd targetjava -jar SpringCloudDemo-0.0.1-SNAPSHOT.jar --server.port=8080
cd targetjava -jar SpringCloudDemo-0.0.1-SNAPSHOT.jar --server.port=8081

啟動結果:

spring,cloud,ribbon

至此,準備工作已經完成

正文:

1、ribbon服務搭建

新建一個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"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.hellxz</groupId>  <artifactId>ribbon-customer</artifactId>  <version>1.0-SNAPSHOT</version>  <parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>1.5.9.RELEASE</version>    <relativePath/>  </parent>    <dependencies>    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>      <groupId>org.springframework.cloud</groupId>      <artifactId>spring-cloud-starter-eureka</artifactId>      <version>RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework.cloud</groupId>      <artifactId>spring-cloud-starter-ribbon</artifactId>      <version>RELEASE</version>    </dependency>  </dependencies>  <dependencyManagement>    <dependencies>      <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-dependencies</artifactId>        <version>RELEASE</version>        <scope>import</scope>        <type>pom</type>      </dependency>    </dependencies>  </dependencyManagement></project>

新建springboot啟動類,將RestTemplate交給Spring容器進行管理

package com.cnblogs.hellxz;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.web.client.RestTemplate;/** * @Author : Hellxz * @Description: 消費應用 * @Date : 2018/4/16 15:45 */@EnableDiscoveryClient@SpringBootApplicationpublic class CustomerApplication {  @Bean //將此Bean交給spring容器  @LoadBalanced //通過此注解開啟負載均衡  RestTemplate restTemplate(){    return new RestTemplate();  }  public static void main(String[] args) {    SpringApplication.run(CustomerApplication.class, args);  }}

在src/resources目錄下創建一個application.yml進行配置注冊信息相關,本文使用了分片的注冊中心,單節點請配置一個defaltZone即可

server: port: 9000  #為ribbon-customer指定服務端口spring: application:  name: ribbon-customer #指定應用名#指定eureka注冊中心地址eureka: client:  serviceUrl:   defaultZone: http://peer1:1111/eureka/,http://peer2:1112/eureka/

在啟動類同級目錄創建CustomerController,注入RestTemplate進行調用服務接口

package 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 */@RestControllerpublic class CustomerController {  @Autowired  //注入restTemplate  private RestTemplate restTemplate;  @RequestMapping(value="/ribbon-customer", method=RequestMethod.GET)  public String helloCustomer(){    //這里注釋掉,因為之前想當然使用了直鏈訪問服務提供者的接口,這樣是不會返回結果的,而且會報錯    //return restTemplate.getForEntity("http://localhost:8080/hello",String.class).getBody();    //使用restTemplate調用微服務接口    return restTemplate.getForEntity("http://hello-service/hello", String.class).getBody();  }}

注意:上述代碼第24行給出了一個錯誤的演示,如果出現訪問ribbon接口報錯,出現白色報錯頁面,請檢查這里

至此ribbon消費者應用搭建完成,啟動測試

測試:

訪問http://localhost:1111/ 我們發現這個ribbon消費者應用已經注冊到注冊中心中了

spring,cloud,ribbon

訪問http://localhost:9000/ribbon-customer

spring,cloud,ribbon

還記得服務提供者項目中的如圖方法中如果有訪問則會打印信息,因為啟動了兩個服務提供者,這里可以測試ribbon的負載均衡

spring,cloud,ribbon

查看服務提供者輸出

spring,cloud,ribbon

而第二個終端沒有,依舊顯示到Resolving eureka endpoints via configuration這行

刷新頁面查看終端,由于ribbon的默認負載均衡的實現是輪詢的,所以可能出現多次訪問同一服務,多刷新幾次頁面,一定會在另一個Termical中顯示的!

spring,cloud,ribbon

結語:

Ribbon作為服務消費者,可以在用戶獲取到服務提供者提供的服務的同時,不向用戶暴露接口地址。可以看到,這里調用服務接口的時候使用的是服務提供者的服務名代替主機名,這在服務治理框架中,這種特性很重要。

由于本人之前是先學的jhipster生成器,所以,提前預報一下,之后還會有一種名為Feign的技術可以替代Ribbon,本系列博客均為學習筆記,實際操作中,可能會存在一個應用既是服務提供者又是服務消費者的情況。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品日韩在线观看| 国模极品一区二区三区| 国产精品国产三级国产aⅴ浪潮| 亚洲国产成人91精品| 久久69精品久久久久久国产越南| 国产91精品在线播放| 精品中文字幕乱| 97久久精品视频| 欧美午夜美女看片| 精品成人在线视频| 最近2019中文字幕在线高清| 国产精品精品一区二区三区午夜版| 在线免费观看羞羞视频一区二区| 欧美大片免费看| 国产网站欧美日韩免费精品在线观看| 久久精品国产清自在天天线| 91精品国产91久久久久久| 91牛牛免费视频| 国产视频精品在线| 久久综合伊人77777尤物| 国产成人综合一区二区三区| 亚洲免费伊人电影在线观看av| 久久久999国产| 久久夜色撩人精品| 成人国产亚洲精品a区天堂华泰| 久久久久久久香蕉网| 国产日韩欧美自拍| 国产成人精品优优av| 欧美激情国产日韩精品一区18| 正在播放欧美一区| 亚洲国产高潮在线观看| www.日韩系列| 久久久久久久久久国产精品| 揄拍成人国产精品视频| 国产精品香蕉在线观看| 亚洲色在线视频| 欧美性20hd另类| 97超视频免费观看| 欧日韩不卡在线视频| 日韩av在线一区| 国产成人精品综合久久久| 欧美另类精品xxxx孕妇| 韩国视频理论视频久久| 日韩电影大全免费观看2023年上| 日韩中文字幕在线视频播放| 久久综合久中文字幕青草| 久久精品2019中文字幕| 日韩欧美成人免费视频| 国产精品久久久久久av下载红粉| 色青青草原桃花久久综合| 久久久久国产精品免费| 日本精品性网站在线观看| 亚洲老板91色精品久久| 精品日本高清在线播放| 国产香蕉精品视频一区二区三区| 久久91亚洲精品中文字幕| 日韩中文有码在线视频| 最近2019好看的中文字幕免费| 国产成人高清激情视频在线观看| 欧美亚洲国产视频| 这里只有精品视频在线| 高清一区二区三区四区五区| 日韩电视剧在线观看免费网站| 亚洲国产精品va在看黑人| 91国偷自产一区二区三区的观看方式| 欧美激情一区二区三区高清视频| 国产精品亚洲第一区| 日本一区二区三区四区视频| 久久九九有精品国产23| 日韩久久免费视频| 精品久久中文字幕| 日韩亚洲综合在线| 国产又爽又黄的激情精品视频| 欧美成人免费全部| 国产自摸综合网| 97在线免费观看| 国产精品91免费在线| 亚洲曰本av电影| 精品福利在线视频| 欧美性黄网官网| 日韩在线激情视频| 国产精品99蜜臀久久不卡二区| 日本电影亚洲天堂| 欧美亚洲成人xxx| 97高清免费视频| 国产精品igao视频| 午夜精品在线视频| 亚洲一区二区三区sesese| 91午夜在线播放| 国产深夜精品福利| 日韩中文有码在线视频| 欧美第一页在线| 久热精品视频在线免费观看| 欧美成人午夜激情视频| 国产精品福利观看| 亚洲一区二区三区sesese| 久久久久久久久久久成人| 国产精品美女午夜av| 日韩精品免费看| 中文字幕国产亚洲2019| 亚洲精品国精品久久99热| 成人在线中文字幕| 精品久久久久国产| 国产色婷婷国产综合在线理论片a| 久久精彩免费视频| 日韩成人av网址| 日韩久久免费视频| 成人激情av在线| 欧美视频在线看| 亚洲精品国产拍免费91在线| 精品精品国产国产自在线| www亚洲欧美| 免费不卡欧美自拍视频| 精品亚洲国产成av人片传媒| 欧美丝袜美女中出在线| 日本道色综合久久影院| 日韩欧美一区二区三区| 成人日韩av在线| 亚洲黄色av女优在线观看| 日韩精品在线看| 色偷偷噜噜噜亚洲男人的天堂| 亚洲免费av电影| 日韩欧美一区二区三区久久| 国产男女猛烈无遮挡91| 欧美日韩日本国产| 欧美日韩在线视频首页| 亚洲人成电影网站色www| 国产亚洲精品久久久久动| 视频在线观看一区二区| 久久人人爽人人爽人人片亚洲| 综合激情国产一区| 九九精品视频在线观看| 日韩欧美高清视频| 少妇av一区二区三区| 岛国av一区二区| wwwwwwww亚洲| 国产成人久久久| 北条麻妃久久精品| 日本不卡视频在线播放| 国产日韩精品综合网站| 欧美老少做受xxxx高潮| 国产欧美日韩免费| 日韩三级影视基地| 久久精品视频va| 日韩电影视频免费| 成人亚洲欧美一区二区三区| 欧美极品xxxx| 亚洲高清在线观看| 欧美精品在线看| 欧美老少做受xxxx高潮| 亚洲一区二区三区四区视频| 国产一区玩具在线观看| 热99精品只有里视频精品| 国产午夜精品全部视频在线播放| 国产成人精品免高潮费视频| 欧美裸体xxxx极品少妇软件| 懂色av一区二区三区| 国产精品草莓在线免费观看| 亚洲成人av资源网| 91久久夜色精品国产网站| 亚洲网站视频福利| 日韩大陆毛片av| 亚州精品天堂中文字幕| 91视频免费网站|