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

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

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

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

首先我們先進(jìn)行Spring cloud五大組件之一的注冊中心,之前文章已經(jīng)講過注冊中心的介紹,今天我們來部署Netflix的Eureka,進(jìn)行單機部署以及高可用部署,并開發(fā)生產(chǎn)者以及消費者來進(jì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ù),默認(rèn)為true,所以這里設(shè)置為false;

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

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

創(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管理頁面,默認(rèn)為http://localhost:8761

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

在consumer項目配置Ribbon的負(fù)載均衡注入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ù)端,不需要進(jìn)行服務(wù)發(fā)現(xiàn),無需獲取服務(wù)注冊列表
    serviceUrl:
      defaultZone: http://eureka-server2的ip:8762/eureka #將另外一個eurekaserver2的服務(wù)進(jìn)行注冊

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

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

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

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

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

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

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

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

相關(guān)文章

  • java用兩個例子充分闡述多態(tài)的可拓展性介紹

    java用兩個例子充分闡述多態(tài)的可拓展性介紹

    下面小編就為大家?guī)硪黄猨ava用兩個例子充分闡述多態(tài)的可拓展性介紹。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java之單例模式實現(xiàn)方案詳解

    Java之單例模式實現(xiàn)方案詳解

    這篇文章主要介紹了Java之單例模式實現(xiàn)方案詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • mybatis?實體類字段大小寫問題?字段獲取不到值的解決

    mybatis?實體類字段大小寫問題?字段獲取不到值的解決

    這篇文章主要介紹了mybatis?實體類字段大小寫問題?字段獲取不到值的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring?Boot?4.0對于Java開發(fā)的影響和前景

    Spring?Boot?4.0對于Java開發(fā)的影響和前景

    探索Spring?Boot?4.0如何徹底革新Java開發(fā),提升效率并開拓未來可能性!別錯過這篇緊湊的指南,它帶你領(lǐng)略Spring?Boot的強大魅力和潛力,準(zhǔn)備好了嗎?
    2024-02-02
  • java實現(xiàn)的RC4加密解密算法示例

    java實現(xiàn)的RC4加密解密算法示例

    這篇文章主要介紹了java實現(xiàn)的RC4加密解密算法,結(jié)合具體實例形式分析了java RC4加密解密算法的實現(xiàn)與使用技巧,需要的朋友可以參考下
    2017-06-06
  • Java之jdbc連接mysql數(shù)據(jù)庫的方法步驟詳解

    Java之jdbc連接mysql數(shù)據(jù)庫的方法步驟詳解

    這篇文章主要介紹了Java之jdbc連接mysql數(shù)據(jù)庫的方法步驟詳解,JCBC技術(shù)是java開發(fā)必備的只是,jdbc連接mysql數(shù)據(jù)庫,這是一個比較簡單的方法,有興趣的可以了解一下
    2020-07-07
  • Java 多用戶登錄限制的實現(xiàn)方法

    Java 多用戶登錄限制的實現(xiàn)方法

    最近沒有事情做,閑的發(fā)呆,于是寫個東東練練手。這篇文章主要介紹了Java 多用戶登錄限制的實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • java教學(xué)筆記之對象的創(chuàng)建與銷毀

    java教學(xué)筆記之對象的創(chuàng)建與銷毀

    面向?qū)ο蟮木幊陶Z言使程序能夠直觀的反應(yīng)客觀世界的本來面目,并且使軟件開發(fā)人員能夠運用人類認(rèn)識事物所采用的一般思維方法進(jìn)行軟件開發(fā),是當(dāng)今計算機領(lǐng)域中軟件開發(fā)和應(yīng)用的主流技術(shù)。
    2016-01-01
  • Java中如何將?int[]?數(shù)組轉(zhuǎn)換為?ArrayList(list)

    Java中如何將?int[]?數(shù)組轉(zhuǎn)換為?ArrayList(list)

    這篇文章主要介紹了Java中將?int[]?數(shù)組?轉(zhuǎn)換為?List(ArrayList),本文通過示例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • SpringBoot項目改為SpringCloud項目使用nacos作為注冊中心的方法

    SpringBoot項目改為SpringCloud項目使用nacos作為注冊中心的方法

    本文主要介紹了SpringBoot項目改為SpringCloud項目使用nacos作為注冊中心,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評論

济源市| 巩义市| 上蔡县| 彭州市| 东丽区| 吉林市| 鄂托克前旗| 云龙县| 泸定县| 乐至县| 洛宁县| 安宁市| 偃师市| 通榆县| 澄江县| 南丹县| 师宗县| 阳新县| 涞源县| 五指山市| 噶尔县| 郸城县| 门头沟区| 延长县| 梨树县| 垫江县| 卫辉市| 定结县| 通化市| 樟树市| 平凉市| 武义县| 潮安县| 阿荣旗| 新建县| 中宁县| 临猗县| 建湖县| 远安县| 木里| 双牌县|