最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud 中使用 Ribbon的方法詳解

 更新時(shí)間:2018年10月19日 13:41:13   作者:沛昕的博客  
本文重點(diǎn)給大家介紹SpringCloud 中使用 Ribbon的方法,本文通過實(shí)例文字相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下

在前兩章已經(jīng)給大家講解了Ribbon負(fù)載均衡的規(guī)則 以及 如何搭建Ribbon并調(diào)用服務(wù),那么在這一章呢 將會(huì)給大家說一說如何在SpringCloud中去使用Ribbon。在搭建之前 我們需要做一些準(zhǔn)備工作。

1. 搭建Eureka服務(wù)器:springCloud-ribbon-server(項(xiàng)目名稱)
2. 服務(wù)提供者:springCloud-ribbon-police(項(xiàng)目名稱)
3. 服務(wù)調(diào)用者:springCloud-ribbon-person(項(xiàng)目名稱)

搭建Eureka服務(wù)器

 配置 pom.xml,加入springCloud核心依賴、配置及eureka服務(wù)器依賴

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.13.RELEASE</version>
</parent>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>Dalston.SR5</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
  </dependency>
</dependencies>

配置 application.yml(紅色部分是必須要寫的,黑色部分不寫也能正常運(yùn)行 但是建議寫上,在這里筆者將官網(wǎng)的代碼貼上)

server:
 port: 8761
eureka:
 instance:
  hostname: localhost
 client:
  registerWithEureka: false 禁止向eureka注冊(cè)服務(wù),因?yàn)樗约罕旧砭褪欠?wù)器
  fetchRegistry: false 這里不需要抓取注冊(cè)表
  serviceUrl:
   defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

創(chuàng)建啟動(dòng)類:Application.java(將服務(wù)跑起來放著,稍后會(huì)用到)配置 pom.xml,加入springCloud核心依賴、配置及eureka服務(wù)依賴

@SpringBootApplication
@EnableEurekaServer
public class Application {
  
  public static void main(String[] args) {
    new SpringApplicationBuilder(Application.class).web(true).run(args);
  }
}

服務(wù)提供者

配置 pom.xml,加入springCloud核心依賴、配置及eureka客戶端依賴

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.13.RELEASE</version>
</parent>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>Dalston.SR5</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
  </dependency>
</dependencies>

配置 application.yml(需要使用defaultZone向服務(wù)器注冊(cè)服務(wù),否則就算該服務(wù)運(yùn)行起來了,但沒有向服務(wù)器注冊(cè)服務(wù),也是使用不了的)(name 這個(gè)名稱是顯示在服務(wù)列表中的名稱,養(yǎng)成好習(xí)慣,一定要起有意義的名稱)

spring:
 application:
  name: springCloud-ribbon-police
eureka:
 client:
  serviceUrl:
   defaultZone: http://localhost:8761/eureka/

因?yàn)樵摲?wù)是提供服務(wù)的,所以下面會(huì)建一個(gè)實(shí)體類及Controller用來對(duì)外提供服務(wù),創(chuàng)建實(shí)體類:Police.java

public class Police {
  private String id;// 警察編號(hào),用來保存用戶輸入的參數(shù)
  private String url;// 處理請(qǐng)求的服務(wù)器url
  private String message;// 提示信息
  public String getId() {
    return id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public String getUrl() {
    return url;
  }
  public void setUrl(String url) {
    this.url = url;
  }
  public String getMessage() {
    return message;
  }
  public void setMessage(String message) {
    this.message = message;
  } 
}

創(chuàng)建對(duì)外提供服務(wù)的Controller:PoliceController.java(@RestController注解中包含了@Controller+@ResponseBody)

@RestController
public class PoliceController {

  @RequestMapping(value="/getPolice", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
  public Police getPolice(HttpServletRequest request){
    Police p = new Police();
    p.setUrl(request.getRequestURL().toString());
    p.setMessage("警察派出成功");
    return p;
  }
  
  @RequestMapping(value="/getPoliceById/{id}", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
  public Police getPolice(HttpServletRequest request, @PathVariable("id") String id){
    Police p = new Police();
    p.setId(id);
    p.setUrl(request.getRequestURL().toString());
    p.setMessage("指定警察派出成功");
    return p;
  }
}

因?yàn)槲覀円獪y試負(fù)載均衡,所以這里的服務(wù)提供者需要開啟多個(gè)服務(wù)實(shí)例,下面我們用讀取手動(dòng)輸入端口號(hào)的方法,啟動(dòng)多個(gè)服務(wù)實(shí)例,筆者在這里啟動(dòng)了兩個(gè)服務(wù)實(shí)例:8080、8081

@SpringBootApplication
@EnableEurekaClient
public class PoliceApplication {
  
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    String port = scan.nextLine();
    new SpringApplicationBuilder(PoliceApplication.class).properties("server.port="+port).run(args);
  } 
}

如下圖,出現(xiàn)了兩個(gè)服務(wù)實(shí)例,分別是:8080、8081,紅色的信息咱們先不管他,如果實(shí)在有看著不順眼的小伙伴,可以配置心跳(簡單的來說,就是配置服務(wù)器每隔多久檢查一次服務(wù)實(shí)例狀態(tài),如果某個(gè)服務(wù)因?yàn)槟承┰蛲5?不能用了,那么就將該服務(wù) 從服務(wù)列表中移除掉)

服務(wù)調(diào)用者

 配置 pom.xml,加入springCloud核心依賴、配置及eureka客戶端依賴、Ribbon依賴

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.13.RELEASE</version>
</parent>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>Dalston.SR5</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-ribbon</artifactId>
  </dependency>
</dependencies>

 配置 application.yml(這里也將該服務(wù)注冊(cè)到服務(wù)器,一定要進(jìn)行注冊(cè))

server:
 port: 9090
spring:
 application:
  name: springCloud-ribbon-person
eureka:
 client:
  serviceUrl:
   defaultZone: http://localhost:8761/eureka/

 創(chuàng)建調(diào)用服務(wù)Controller:PersonController.java

RestTemplate 是由 Spring Web 模塊提供的工具類,與 SpringCloud 無關(guān),是獨(dú)立存在的

因 SpringCloud 對(duì) RestTemplate 進(jìn)行了一定的擴(kuò)展,所以 RestTemplate 具備了負(fù)載均衡的功能

@RestController
@Configuration
public class PersonController {
  @Bean
  @LoadBalanced
  public RestTemplate getRestTemplate(){
    return new RestTemplate();
  }
  @RequestMapping("/getPolice")
  public String getPolice(){
    RestTemplate rt = getRestTemplate();
    String result = rt.getForObject("http://springCloud-ribbon-police/getPolice", String.class);
    return result;
  }
  @RequestMapping("/getPoliceById/{id}")
  public String getPoliceById(@PathVariable("id") String id){
    RestTemplate rt = getRestTemplate();
    String result = rt.getForObject("http://springCloud-ribbon-police/getPoliceById/"+id, String.class);
    return result;
  }
}

創(chuàng)建啟動(dòng)類:PersonApplication.java

@SpringBootApplication
@EnableEurekaClient
public class PersonApplication {
  
  public static void main(String[] args) {
    new SpringApplicationBuilder(PersonApplication.class).web(true).run(args);
  } 
}

到目前為止,eureka服務(wù)器、服務(wù)提供者、服務(wù)調(diào)用者(負(fù)載均衡)就已經(jīng)全寫好了,下面我們?cè)L問接口,來試一下 服務(wù)到底能不能調(diào)通

我們分別調(diào)用:http://localhost:9090/getPolice、http://localhost:9090/getPoliceById/100

總結(jié)

以上所述是小編給大家介紹的SpringCloud 中使用 Ribbon的方法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java生成中間logo的二維碼的示例代碼

    Java生成中間logo的二維碼的示例代碼

    這篇文章主要介紹了Java如何生成中間logo的二維碼,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 淺談Spring refresh的工作流程

    淺談Spring refresh的工作流程

    這篇文章主要介紹了淺談Spring refresh的工作流程,refresh 是 AbstractApplicationContext 中的一個(gè)方法,負(fù)責(zé)初始化 ApplicationContext容器,讓我們一起來學(xué)習(xí)一下吧
    2023-04-04
  • Java?OpenCV圖像處理之SIFT角點(diǎn)檢測詳解

    Java?OpenCV圖像處理之SIFT角點(diǎn)檢測詳解

    SIFT,即尺度不變特征變換,是用于圖像處理領(lǐng)域的一種描述。這種描述具有尺度不變性,可在圖像中檢測出關(guān)鍵點(diǎn),是一種局部特征描述子。本文將詳細(xì)介紹一下Java?OpenCV圖像處理中的SIFT角點(diǎn)檢測,需要的可以參考一下
    2022-02-02
  • 一篇帶你入門Java垃圾回收器

    一篇帶你入門Java垃圾回收器

    垃圾收集器是垃圾回收算法(標(biāo)記-清除算法、復(fù)制算法、標(biāo)記-整理算法、火車算法)的具體實(shí)現(xiàn),不同商家、不同版本的JVM所提供的垃圾收集器可能會(huì)有很在差別
    2021-06-06
  • YGC前后新生代是否變大分析詳解

    YGC前后新生代是否變大分析詳解

    要解釋這個(gè)問題,我們先要弄清楚YGC的過程,parNew是新生代的gc算法,簡單來說從gc roots開始掃描對(duì)象,當(dāng)掃到一個(gè)只要是屬于新生代的對(duì)象就將其挪到to space,但是老的對(duì)象還不會(huì)做釋放,直到gc完成之后再看是否釋放老的對(duì)象
    2022-01-01
  • 淺談java常量池

    淺談java常量池

    下面小編就為大家?guī)硪黄獪\談java常量池。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • IDEA?隱藏DEBUG日志的解決方法

    IDEA?隱藏DEBUG日志的解決方法

    IDEA?打印太多的DEBUG日志,看起來很煩,有沒有辦法隱藏日志,網(wǎng)上找了一圈,沒有誰寫的靠譜的,下面小編給大家分享下IDEA?如何隱藏DEBUG日志,需要的朋友可以參考下
    2022-09-09
  • Java foreach循環(huán)是否可以修改數(shù)據(jù)的值問題解決方法

    Java foreach循環(huán)是否可以修改數(shù)據(jù)的值問題解決方法

    最近在做項(xiàng)目的時(shí)候,需要修改一個(gè)數(shù)組里面各個(gè)元素的值,foreach循環(huán)迭代數(shù)組元素時(shí),不能改變數(shù)組元素的值,這篇文章給大家介紹Java foreach循環(huán)是否可以修改數(shù)據(jù)的值的問題及解決方法,感興趣的朋友一起看看吧
    2024-02-02
  • 用java開發(fā)dota英雄最華麗的技能(實(shí)例講解)

    用java開發(fā)dota英雄最華麗的技能(實(shí)例講解)

    下面小編就為大家分享一篇使用java開發(fā)dota英雄最華麗的技能實(shí)例,具有非常好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • Spring?Cloud?Alibaba?Nacos兩種檢查機(jī)制

    Spring?Cloud?Alibaba?Nacos兩種檢查機(jī)制

    這篇文章主要介紹了Spring?Cloud?Alibaba?Nacos兩種檢查機(jī)制,作為注冊(cè)中心不止提供了服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能,它還提供了服務(wù)可用性監(jiān)測的機(jī)制,下面我們就一起進(jìn)入文章了解具體詳情吧
    2022-05-05

最新評(píng)論

安乡县| 定南县| 贡嘎县| 安平县| 盐池县| 新河县| 安义县| 齐河县| 珲春市| 方山县| 绥芬河市| 肇州县| 南木林县| 马尔康县| 广昌县| 林口县| 大余县| 山东省| 崇阳县| 昌江| 泰来县| 隆安县| 桑植县| 青冈县| 专栏| 龙胜| 文安县| 肥乡县| 白水县| 丹寨县| 台安县| 沙河市| 云浮市| 彰武县| 瑞丽市| 太康县| 莱阳市| 永胜县| 崇义县| 赤壁市| 彭水|