欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud注冊中心部署Eureka流程詳解

 更新時間:2022年11月14日 09:52:49   作者:麻儂  
Eureka是Netflix開發(fā)的服務(wù)發(fā)現(xiàn)框架,本身是一個基于REST的服務(wù),主要用于定位運行在AWS域中的中間層服務(wù),以達到負載均衡和中間層服務(wù)故障轉(zhuǎn)移的目的

今天我們開始正式編碼,如何創(chuàng)建spring boot項目這篇文章就不再講述,如果想要了解可以閱讀我之前的創(chuàng)建springboot項目

首先我們先進行Spring cloud五大組件之一的注冊中心,之前文章已經(jīng)講過注冊中心的介紹,今天我們來部署Netflix的Eureka,進行單機部署以及高可用部署,并開發(fā)生產(chǎn)者以及消費者來進行測試eureka的注冊消費。(ps:系列文章使用的Spring cloud版本為2021.0.4,對應(yīng)的spring boot版本2.6.11)

1、Eureka服務(wù)

我們在主工程目錄下面新創(chuàng)建一個Module,名字eureka-server,引入下面的依賴

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

這個子工程只是作為eureka的注冊中心,無需引入其他jar包。

創(chuàng)建配置文件application.yml

server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
  application:
  name: eureka-server

registerWithEureka:是否將自己注入到注冊中心,因為本身就是Eureka服務(wù),默認為true,所以這里設(shè)置為false;

fetchRegistry:是否從注冊中心獲取注冊列表,后續(xù)進行集群部署的時候需要獲取其他Eureka服務(wù),這里是單點的所以設(shè)置為false;

因為eureka已經(jīng)停止維護,所以目前沒有找到相關(guān)的配置網(wǎng)頁,感興趣的同學(xué)可以自己點進去源碼進行查詢更多的配置以及配置的作用,因為eureka不是我們的重點所以這里就不一一進行解釋了。

創(chuàng)建服務(wù)啟動類EurekaServerApplication.class。

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

@EnableEurekaServer 此注解是Eureka服務(wù)server端注解,如果是服務(wù)客戶端client,需要注解為@EnableEurekaClient。

至此我們的一個Eureka服務(wù)就創(chuàng)建完成了,啟動之后我們就獲取了一個單節(jié)點的注冊中心。

2、服務(wù)提供者

依然是spring boot項目的三板斧,創(chuàng)建項目引入依賴、創(chuàng)建配置文件、創(chuàng)建啟動類。創(chuàng)建Module命名provider-eureka8001,引入依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.6.11</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <version>2.6.11</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

這里健康檢測相關(guān)的依賴之前引入錯誤,這里需要注意使用的是starter-actuator

創(chuàng)建配置文件application.yml,填寫下面內(nèi)容

server:
  port: 8001
spring:
  application:
    name: provider
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

spring.application.name是項目的名稱,后面eureka服務(wù)注冊列表將會使用此值;

eureka.client.serviceUrl.defaultZone是Eureka注冊中心的注冊地址,如果Eureka服務(wù)部署在另外的地方,需要對應(yīng)修改ip跟端口,這里本地部署直接localhost即可。

創(chuàng)建啟動類ProviderEureka8001Application.class

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

這里作為服務(wù)客戶端使用@EnableEurekaClient

在provider項目創(chuàng)建接口類ProviderController.class,作為服務(wù)提供接口

@RestController
@RequestMapping("/provider")
public class ProviderController {
    @Value("${server.port}")
    private String port;
    @GetMapping("/getPort")
    public String getPort(){
        return "訪問服務(wù)的端口為:" + port;
    }
}

3、服務(wù)消費者

創(chuàng)建服務(wù)消費者consumer-eureka8002,引入maven依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.6.11</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <version>2.6.11</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

創(chuàng)建配置文件application.yml

server:
  port: 8002
spring:
  application:
    name: comsumer
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

創(chuàng)建啟動文件ConsumerEureka8002Application.class

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

4、服務(wù)調(diào)用測試

啟動上面三個服務(wù),訪問eureka管理頁面,默認為http://localhost:8761

可以看到,我們的兩個服務(wù)provider以及consumer已經(jīng)全部注冊成功,測試調(diào)用我們配置Ribbon作為調(diào)用負載均衡,來進行測試服務(wù)是否可以調(diào)用。

在consumer項目配置Ribbon的負載均衡注入RibbonConfig

@Configuration
public class RibbonConfig {
    @Bean
    @LoadBalanced
    public RestTemplate loadBalancedRestTemplate(){
        return new RestTemplate();
    }
}

在consumer項目創(chuàng)建消費的ConsumerController,這里調(diào)用的方式為http:// + 服務(wù)提供者注冊名稱(spring.application.name),這里是提供者的名字provider,加上服務(wù)的path。

@RestController
@RequestMapping("/consumer")
public class ConsumerController {
    @Autowired
    private RestTemplate loadBalancedRestTemplate;
    @GetMapping("/getProviderPort")
    public String getProviderPort(){
        return loadBalancedRestTemplate.getForObject("http://provider/provider/getPort",String.class);
    }
}

重啟我們的消費者項目,在網(wǎng)頁里面輸入請求地址http://localhost:8002/consumer/getProviderPort,可以看到訪問成功且返回的是provider的端口號

到此我們使用eureka作為服務(wù)注冊中心并嘗試編寫服務(wù)生產(chǎn)消費的學(xué)習(xí)就結(jié)束了,后續(xù)Eureka集群部署方式也比較簡單,就是另外創(chuàng)建一個EurekaServer服務(wù),配置文件、啟動類、依賴引入都與之前的Eureka服務(wù)一樣,這里需要修改兩個Eureka服務(wù)的配置文件,將各自的服務(wù)都注入到對方的列表中去。

server:
  port: 8761
eureka:
  instance:
    hostname: eureka-server1
  client:
    registerWithEureka: false    #我是服務(wù)端,不需要將自己注冊
    fetchRegistry: false    #我是服務(wù)端,不需要進行服務(wù)發(fā)現(xiàn),無需獲取服務(wù)注冊列表
    serviceUrl:
      defaultZone: http://eureka-server2的ip:8762/eureka #將另外一個eurekaserver2的服務(wù)進行注冊

server:
  port: 8762
eureka:
  instance:
    hostname: eureka-server2
  client:
    registerWithEureka: false    #我是服務(wù)端,不需要將自己注冊
    fetchRegistry: false    #我是服務(wù)端,不需要進行服務(wù)發(fā)現(xiàn),無需獲取服務(wù)注冊列表
    serviceUrl:
      defaultZone: http://eureka-server1的ip:8762/eureka #將另外一個eurekaserver1的服務(wù)進行注冊

Eureka默認會開啟自我保護機制,自我保護機制是Eureka為了防止網(wǎng)絡(luò)波動引起的服務(wù)心跳丟失問題,堅持“寧可信其有”的原則,在默認90s內(nèi)沒有接收到客戶端的心跳依然不將其移除,取消保護機制可在Eureka Server進行下面配置:

eureka.server.enable-self-preservation=false #關(guān)閉自我保護

eureka.server.eviction-interval-timer-in-ms=3000 #超時3s自動清除

保持開啟,進行自我設(shè)置保護機制可在Eureka Server使用下面配置:

eureka.instance.lease-expiration-duration-in-seconds=10 #用來修改eureka server默認接受心跳的最大時間 默認是90s

eureka.instance.lease-renewal-interval-in-seconds=5 #指定客戶端多久向eureka server發(fā)送一次心跳 默認是30s

到此這篇關(guān)于SpringCloud注冊中心部署Eureka流程詳解的文章就介紹到這了,更多相關(guān)SpringCloud Eureka內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot多環(huán)境切換的靈活配置詳細教程

    SpringBoot多環(huán)境切換的靈活配置詳細教程

    在真實項目開發(fā)的時候,一定會有多個環(huán)境,下面這篇文章主要給大家介紹了關(guān)于SpringBoot多環(huán)境切換靈活配置的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • Spring控制bean加載順序使用詳解

    Spring控制bean加載順序使用詳解

    在使用spring框架開發(fā)過程中,我們可能會遇到某個bean被另一個bean依賴,也就是bean-b的創(chuàng)建必須依賴bean-a等問題,類似這樣的場景還有很多,總結(jié)來說,這就涉及到bean的加載順序問題,如何解決呢,本文將給大家列舉出幾種常用的解決方案,需要的朋友可以參考下
    2023-09-09
  • java中的快捷鍵小結(jié)

    java中的快捷鍵小結(jié)

    以下是myeclipse中的所有快捷鍵列表
    2013-03-03
  • springboot+idea+maven 多模塊項目搭建的詳細過程(連接數(shù)據(jù)庫進行測試)

    springboot+idea+maven 多模塊項目搭建的詳細過程(連接數(shù)據(jù)庫進行測試)

    這篇文章主要介紹了springboot+idea+maven 多模塊項目搭建的詳細過程(連接數(shù)據(jù)庫進行測試),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 使用FeignClient調(diào)用遠程服務(wù)時整合本地的實現(xiàn)方法

    使用FeignClient調(diào)用遠程服務(wù)時整合本地的實現(xiàn)方法

    這篇文章主要介紹了使用FeignClient調(diào)用遠程服務(wù)時整合本地的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • JAVA操作MongoDB數(shù)據(jù)庫實例教程

    JAVA操作MongoDB數(shù)據(jù)庫實例教程

    MongoDB是一個文檔型數(shù)據(jù)庫,是NOSQL家族中最重要的成員之一,下面這篇文章主要給大家介紹了關(guān)于JAVA操作MongoDB數(shù)據(jù)庫的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • SpringBoot 異步線程間數(shù)據(jù)傳遞的實現(xiàn)

    SpringBoot 異步線程間數(shù)據(jù)傳遞的實現(xiàn)

    本文主要介紹了SpringBoot 異步線程間數(shù)據(jù)傳遞的實現(xiàn),包括異步線程的基本概念、數(shù)據(jù)傳遞的方式、具體實現(xiàn)方式等,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 解析ConcurrentHashMap: transfer方法源碼分析(難點)

    解析ConcurrentHashMap: transfer方法源碼分析(難點)

    ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見問題---ConcurrentHashMap知識,一起看看吧
    2021-06-06
  • java 淺析代碼塊的由來及用法

    java 淺析代碼塊的由來及用法

    所謂代碼塊是指用"{}"括起來的一段代碼,根據(jù)其位置和聲明的不同,可以分為普通代碼塊、構(gòu)造塊、靜態(tài)塊、和同步代碼塊。如果在代碼塊前加上 synchronized關(guān)鍵字,則此代碼塊就成為同步代碼塊
    2021-10-10
  • 一文解決pom.xml報錯Dependency "xxx" not found的問題

    一文解決pom.xml報錯Dependency "xxx" not f

    我們在使用maven進行jar包管理時有時會遇到pom.xml中報錯Dependency “XXX” not found,所以在本文中將給大家介紹一下pom.xml報錯Dependency "xxx" not found的解決方案,需要的朋友可以參考下
    2024-01-01

最新評論