中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Cloud如何構建Eureka應用

發布時間:2021-08-05 15:28:48 來源:億速云 閱讀:148 作者:小新 欄目:編程語言

小編給大家分享一下Spring Cloud如何構建Eureka應用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Eureka 介紹

Eureka提供基于REST的服務,在集群中主要用于服務管理。Eureka提供了基于Java語言的客戶端組件,客戶端組件實現了負載均衡的功能,為業務組件的集群部署創造了條件。使用該框架,可以將業務組件注冊到Eureka容器中,這些業務組件可進行集群部署,Eureka主要維護這些服務的列表并自動檢查它們的狀態。

程序結構

Spring Cloud如何構建Eureka應用

創建Eureka Server

maven依賴

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Dalston.SR1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
  </dependencies>

更改spring boot 啟動端口 在application.yml

server:
 port: 8761

開啟Eureka服務注解 @EnableEurekaServer

@EnableEurekaServer
@SpringBootApplication
public class EKServerApplication {

  public static void main(String[] args) {
    new SpringApplicationBuilder(EKServerApplication.class).run(args);
  }
}

啟動springboot

[Thread-11] o.s.c.n.e.server.EurekaServerBootstrap: Initialized server context
[main] s.b.c.e.t.TomcatEmbeddedServletContainer: Tomcat started on port(s): 8761 (http)
[main] .s.c.n.e.s.EurekaAutoServiceRegistration: Updating port to 8761
[main] c.b.firstEkServer.EKServerApplication: Started EKServerApplication in 8.594 seconds (JVM running for 9.523)

啟動期間會出現一個無法連接到服務器的異常 這個是由于Eureka在啟動的時候會把自己當作一個客戶端去服務器抓取注冊信息

復制代碼 代碼如下:


com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

增加如下配置啟動時便不會再出現該異常

eureka:
 client:
  registerWithEureka: false
  fetchRegistry: false

registerWithEureka 聲明是否將自己的信息注冊到Eureka服務器,默認值為true。

fetchRegistry 聲明是否到Eureka服務器中抓取注冊信息,默認值為true。

在瀏覽器中訪問 http://localhost:8761 查看Eureka控制臺 輸入圖片說明

Spring Cloud如何構建Eureka應用

創建服務提供者

依賴

<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>

在 application.yml 中配置端口、Eureka實例名稱和Eureka服務地址

server:
 port: 8080
spring:
 application:
  name: ek-provider
eureka:
 instance:
  hostname: localhost
 client:
   serviceUrl:
    defaultZone: http://localhost:8761/eureka/

創建一個 REST 服務

@RestController
public class HelloController {

  @RequestMapping("/hello")
  public String hello(HttpServletRequest request) {
    return "hello:" + request.getRequestURL();
  }
}

開啟Eureka客戶端注解 @EnableEurekaServer

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

  }
}

啟動之后在 Eureka 控制臺可以看到服務提供者已經在 Eureka 中注冊

Spring Cloud如何構建Eureka應用

創建服務調用者

依賴

<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>

在 application.yml 中配置端口、Eureka實例名稱和Eureka服務地址

server:
 port: 9000
spring:
 application:
  name: ek-invoke
eureka:
 instance:
  hostname: localhost
 client:
   serviceUrl:
    defaultZone: http://localhost:8761/eureka/

編寫一個 REST 服務 調用服務提供者的 “/hello”

@RestController
@Configuration
public class InvokeController {

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

  @RequestMapping("/invoke")
  public String invoke() {
    RestTemplate restTemplate = getRestTemplate();
    return restTemplate.getForObject("http://ek-provider/hello", String.class);
  }
}

在傳統模式中,我們通常會用Apache中的Httpclient來調用 REST 服務,在這里我們使用 Spring 提供調用 REST 服務的組件 RestTemplate。 RestTemplate 本身并不具備調用分布式服務的能力,但是RestTemplate的bean被@LoadBalanced注解修飾后,這個RestTemplate實例就具有訪問分布式服務的能力,這得益于 Spring 為其提供的各種攔截器

開啟Eureka客戶端注解 @EnableEurekaServer

@EnableEurekaClient
@SpringBootApplication
public class EkInvokeApplication {

  public static void main(String[] args) {
    new SpringApplicationBuilder(EkInvokeApplication.class).run(args);
  }
}

啟動之后在 Eureka 控制臺可以看到服務調用者已經在 Eureka 中注冊

之后在瀏覽器訪問服務調用者的 “invoke” 接口 返回如下

Spring Cloud如何構建Eureka應用

以上是“Spring Cloud如何構建Eureka應用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玛曲县| 垫江县| 马尔康县| 绩溪县| 和林格尔县| 黔西县| 红河县| 天峨县| 虞城县| 十堰市| 新竹市| 铜山县| 普洱| 无锡市| 陆良县| 乐昌市| 留坝县| 隆回县| 定兴县| 磐安县| 安溪县| 饶平县| 沈丘县| 西峡县| 内黄县| 海林市| 阿鲁科尔沁旗| 河南省| 芮城县| 曲阳县| 三台县| 安化县| 漾濞| 江门市| 印江| 谷城县| 宕昌县| 沛县| 万山特区| 富阳市| 垦利县|