亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解SpringCloud Ribbon 負載均衡通過服務(wù)器名無法連接的神坑

 更新時間:2019年06月16日 09:03:18   作者:ejiyuan  
這篇文章主要介紹了詳解SpringCloud Ribbon 負載均衡通過服務(wù)器名無法連接的神坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一,問題

采取eureka集群、客戶端通過Ribbon調(diào)用服務(wù),Ribbon端報下列異常

java.net.UnknownHostException: SERVICE-HI

java.lang.IllegalStateException: No instances available for SERVICE-HI

java.lang.IllegalStateException: Request URI does not contain a valid hostname: http://SERVICE-HI

com.netfix.discovery.shared.taransport.TransportException: Cannot execute request on any known server

Spring Cloud版本比較亂,版本關(guān)聯(lián)引用更是亂,最終我切換到 <spring-cloud.version> Greenwich.SR1 </spring-cloud.version> 異常為: No instances available for SERVICE-HI

二、尋找答案 

網(wǎng)上答案千奇百怪

1,Spring Cloud 官網(wǎng),RestTemplate bean配置中添加負載均衡注解@LoadBalanced,我添加了

@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
  return new RestTemplate();
}

結(jié)果無效仍然一樣報錯

2,訪問的服務(wù)名名稱不能有下劃線:

我的名稱是“SERVICE-HI”本身就不存在下劃線,所以不考慮這條。

3,主機名稱沒在系統(tǒng)文件hosts中配置,ping不通你服務(wù)名:

很扯的答案,為什么要配host,負載多臺機器讓主機名指向誰?不考慮此答案

三,分析問題

百度不到,自己分析原因,發(fā)現(xiàn)ribbon服務(wù)器沒有注冊到 eureka server中

分析原理:我的客戶端服務(wù)“SERVICE-HI”已經(jīng)成功注冊到eureka server中了,如果ribbon服務(wù)器不在eureka server中注冊,是不會知道客戶端服務(wù)“SERVICE-HI”的存在以及它存在的位置,那么結(jié)論就是,因為ribbon服務(wù)器沒有在eureka server中注冊成功,所以不能識別主機名稱。

四,解決問題

配置文件

eureka:
 client:
  serviceUrl:
   defaultZone: http://localhost:8761/eureka/
server:
 port: 8764
spring:
 application:
  name: service-ribbon

依賴導(dǎo)入

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
  </dependency>
</dependencies>

主程序注釋

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceRibbonApplication {
  
  public static void main(String[] args) {    
    SpringApplication.run( ServiceRibbonApplication.class, args );
  }

}

有問題,最終發(fā)現(xiàn)@EnableDiscoveryClient標簽無法注冊到注冊中心,百度@EnableDiscoveryClient,得到的結(jié)論是

@EnableDiscoveryClient和@EnableEurekaClient一樣,能夠讓注冊中心能夠發(fā)現(xiàn),掃描到改服務(wù),不同點:@EnableEurekaClient只適用于Eureka作為注冊中心,@EnableDiscoveryClient 可以是Eureka或其他(consul、zookeeper等)注冊中心 。

具體原因不去分析,這里先直接切換為@EnableEurekaClient注釋

@EnableEurekaClient在哪個包里簡直是迷一樣的存在,不同版本的spring cloud 中位置不同,我使用Greenwich.SR1,需要引入下面的包

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

修改主程序注釋

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;


@SpringBootApplication
@EnableEurekaClient
@EnableHystrix //我開啟了段容器
public class ServiceRibbonApplication {

  public static void main(String[] args) {
    SpringApplication.run( ServiceRibbonApplication.class, args );
  }

}

這里提一句在 Greenwich.SR1中段容器在下面包中

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

重新啟動ribbon,發(fā)現(xiàn)控制臺輸入

2019-06-15 13:08:06.668 INFO 14796 --- [      main] com.netflix.discovery.DiscoveryClient  : Getting all instance registry info from the eureka server
2019-06-15 13:08:06.878 INFO 14796 --- [      main] com.netflix.discovery.DiscoveryClient  : The response status is 200
2019-06-15 13:08:06.882 INFO 14796 --- [      main] com.netflix.discovery.DiscoveryClient  : Starting heartbeat executor: renew interval is: 30
2019-06-15 13:08:06.886 INFO 14796 --- [      main] c.n.discovery.InstanceInfoReplicator   : InstanceInfoReplicator onDemand update allowed rate per min is 4
2019-06-15 13:08:06.891 INFO 14796 --- [      main] com.netflix.discovery.DiscoveryClient  : Discovery Client initialized at timestamp 1560575286889 with initial instances count: 2
2019-06-15 13:08:06.894 INFO 14796 --- [      main] o.s.c.n.e.s.EurekaServiceRegistry    : Registering application SERVICE-RIBBON with eureka with status UP
2019-06-15 13:08:06.896 INFO 14796 --- [      main] com.netflix.discovery.DiscoveryClient  : Saw local status change event StatusChangeEvent [timestamp=1560575286896, current=UP, previous=STARTING]
2019-06-15 13:08:06.900 INFO 14796 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient  : DiscoveryClient_SERVICE-RIBBON/DESKTOP-FJQITE3:service-ribbon:8764: registering service...
2019-06-15 13:08:06.958 INFO 14796 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient  : DiscoveryClient_SERVICE-RIBBON/DESKTOP-FJQITE3:service-ribbon:8764 - registration status: 204
2019-06-15 13:08:06.961 INFO 14796 --- [      main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8764 (http) with context path ''
2019-06-15 13:08:06.963 INFO 14796 --- [      main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8764
2019-06-15 13:08:06.967 INFO 14796 --- [      main] cn.meylink.ServiceRibbonApplication   : Started ServiceRibbonApplication in 5.868 seconds (JVM running for 7.204)

查看Eureka

瀏覽器測試訪問成功?。?!

五,附件:Greenwich.SR1 版中常用依賴

有好多問題都是因為 不同版本中引入不正確的依賴導(dǎo)致,這里列出 Greenwich.SR1 版中常用依賴,這里都不需要指定版本號

<dependencies>
  <!-- eureka client -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  </dependency>
  <!-- eureka server -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  </dependency>
  <!-- 段容器 -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
  </dependency>
  <!-- ribbon -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
  </dependency>
  <!-- feign -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
  <!-- config server -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
  </dependency>
  <!-- config client -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
  </dependency>
  <!-- zuul -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入理解ThreadLocal工作原理及使用示例

    深入理解ThreadLocal工作原理及使用示例

    這篇文章主要介紹了深入理解ThreadLocal工作原理及使用示例,涉及ThreadLocal<T> 簡介和使用示例及ThreadLocal<T>的原理等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 解決spring boot2集成activiti6踩過的坑

    解決spring boot2集成activiti6踩過的坑

    這篇文章主要介紹了解決spring boot2集成activiti6踩過的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java類的初始化順序的實現(xiàn)

    Java類的初始化順序的實現(xiàn)

    類的初始化過程是在類加載階段完成的,包括加載、驗證、準備、解析和初始化等步驟,本文主要介紹了Java類的初始化順序的實現(xiàn),感興趣的可以了解一下
    2023-12-12
  • Java常用測試工具大全

    Java常用測試工具大全

    這篇文章主要為大家詳細介紹了Java常用測試工具,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 詳解SpringBoot構(gòu)建的Web項目如何在服務(wù)端校驗表單輸入

    詳解SpringBoot構(gòu)建的Web項目如何在服務(wù)端校驗表單輸入

    這篇文章主要介紹了詳解SpringBoot構(gòu)建的Web項目如何在服務(wù)端校驗表單輸入,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-10-10
  • SpringBoot中Elasticsearch的連接配置原理與使用詳解

    SpringBoot中Elasticsearch的連接配置原理與使用詳解

    Elasticsearch是一種開源的分布式搜索和數(shù)據(jù)分析引擎,它可用于全文搜索、結(jié)構(gòu)化搜索、分析等應(yīng)用場景,本文主要介紹了SpringBoot中Elasticsearch的連接配置原理與使用詳解,感興趣的可以了解一下
    2023-09-09
  • Java實現(xiàn)截取字符串的操作詳解

    Java實現(xiàn)截取字符串的操作詳解

    在這篇文章中,小編將帶大家一起學(xué)習一下在Java中把一個String截斷到所需的字符數(shù)的幾種方法,文中的方法簡潔易懂,需要的可以參考一下
    2022-07-07
  • Java并發(fā)編程之關(guān)鍵字volatile的深入解析

    Java并發(fā)編程之關(guān)鍵字volatile的深入解析

    提高java的并發(fā)編程,就不得不提volatile關(guān)鍵字,不管是在面試還是實際開發(fā)中volatile都是一個應(yīng)該掌握的技能,這篇文章主要給大家介紹了關(guān)于Java并發(fā)編程之關(guān)鍵字volatile的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • JavaWeb中Servlet的深入理解

    JavaWeb中Servlet的深入理解

    Java Servlet 是運行在 Web 服務(wù)器或應(yīng)用服務(wù)器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序之間的中間層
    2021-10-10
  • rabbitmq結(jié)合spring實現(xiàn)消息隊列優(yōu)先級的方法

    rabbitmq結(jié)合spring實現(xiàn)消息隊列優(yōu)先級的方法

    本篇文章主要介紹了rabbitmq結(jié)合spring實現(xiàn)消息隊列優(yōu)先級的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論