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

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

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

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

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

1、Eureka服務(wù)

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

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

這個(gè)子工程只是作為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:是否將自己注入到注冊中心,因?yàn)楸旧砭褪荅ureka服務(wù),默認(rèn)為true,所以這里設(shè)置為false;

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

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

創(chuàng)建服務(wù)啟動(dòng)類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。

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

2、服務(wù)提供者

依然是spring boot項(xiàng)目的三板斧,創(chuàng)建項(xiàng)目引入依賴、創(chuàng)建配置文件、創(chuàng)建啟動(dò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)的依賴之前引入錯(cuò)誤,這里需要注意使用的是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是項(xiàng)目的名稱,后面eureka服務(wù)注冊列表將會(huì)使用此值;

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

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

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

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

在provider項(xiàng)目創(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ù)消費(fèi)者

創(chuàng)建服務(wù)消費(fèi)者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)建啟動(dòng)文件ConsumerEureka8002Application.class

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

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

啟動(dòng)上面三個(gè)服務(wù),訪問eureka管理頁面,默認(rèn)為http://localhost:8761

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

在consumer項(xiàng)目配置Ribbon的負(fù)載均衡注入RibbonConfig

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

在consumer項(xiàng)目創(chuàng)建消費(fèi)的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);
    }
}

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

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

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 #將另外一個(gè)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 #將另外一個(gè)eurekaserver1的服務(wù)進(jìn)行注冊

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

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

eureka.server.eviction-interval-timer-in-ms=3000 #超時(shí)3s自動(dòng)清除

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

eureka.instance.lease-expiration-duration-in-seconds=10 #用來修改eureka server默認(rèn)接受心跳的最大時(shí)間 默認(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了java實(shí)現(xiàn)的RC4加密解密算法,結(jié)合具體實(shí)例形式分析了java RC4加密解密算法的實(shí)現(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ù)庫,這是一個(gè)比較簡單的方法,有興趣的可以了解一下
    2020-07-07
  • Java 多用戶登錄限制的實(shí)現(xiàn)方法

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

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

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

    面向?qū)ο蟮木幊陶Z言使程序能夠直觀的反應(yīng)客觀世界的本來面目,并且使軟件開發(fā)人員能夠運(yùn)用人類認(rèn)識(shí)事物所采用的一般思維方法進(jìn)行軟件開發(fā),是當(dāng)今計(jì)算機(jī)領(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ì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • SpringBoot項(xiàng)目改為SpringCloud項(xiàng)目使用nacos作為注冊中心的方法

    SpringBoot項(xiàng)目改為SpringCloud項(xiàng)目使用nacos作為注冊中心的方法

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

最新評(píng)論

崇州市| 如皋市| 双柏县| 光山县| 宜阳县| 兴海县| 巧家县| 沁水县| 镇安县| 榆树市| 靖安县| 长治市| 会东县| 卫辉市| 乐业县| 淮安市| 水富县| 周至县| 浏阳市| 柳江县| 大兴区| 邓州市| 渭源县| 都昌县| 安阳市| 福建省| 荔波县| 固阳县| 盖州市| 彝良县| 湖南省| 莱芜市| 高台县| 方山县| 甘孜| 武陟县| 台北县| 平凉市| 南充市| 镶黄旗| 宣威市|