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

Spring Cloud引入Eureka組件,完善服務(wù)治理

 更新時間:2021年02月06日 09:23:58   作者:精靈王  
這篇文章主要介紹了Spring Cloud引入Eureka組件,完善服務(wù)治理的過程詳解,幫助大家更好的理解和使用spring cloud,感興趣的朋友可以了解下

簡介

Netflix Eureka 是一款由 Netflix 開源的基于 REST 服務(wù)的注冊中心,用于提供服務(wù)發(fā)現(xiàn)功能。Spring Cloud Eureka 是 Spring Cloud Netflix 微服務(wù)套件的一部分,基于 Netflix Eureka 進(jìn)行了二次封裝,主要負(fù)責(zé)完成微服務(wù)架構(gòu)中的服務(wù)治理功能。

Spring Cloud Eureka 是一個基于 REST 的服務(wù),并提供了基于 Java 的客戶端組件,能夠非常方便的將服務(wù)注冊到 Spring Cloud Eureka 中進(jìn)行統(tǒng)一管理。

部署 Eureka Server

1.創(chuàng)建一個名為 eureka-server 的 Spring Cloud 的項目(略)

2.引入 eureka-server 依賴(maven)

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

3.開啟 EurekaServer
在啟動類上添加 @EnableEurekaServer注解,開啟 EurekaServer 的自動裝配功能。

4.修改服務(wù)端口為8761

5.修改 register-with-eureka 配置
添加一個eureka.client.register-with-eureka=false的配置,作為EurekaServer可以不將自己的實例注冊到 Eureka Server 中,如果是集群部署設(shè)置為true(不配置默認(rèn)值也是true)。

6.修改 fetch-registry 配置
添加一個 eureka.client.fetch-registry=false 的配置,表示不從 Eureka Server 中獲取 Eureka 的注冊表信息,如果是集群部署設(shè)置為true(不配置默認(rèn)值也是true)。

7.添加defaultZone配置
添加一條配置eureka.client.service-url.defaultZone=http://localhost:8761/eureka/(如果不加這個的話又自定義了端口,可能會報錯Connect to localhost:8761 timed out)

8.啟動 Eureka Server,訪問 http://localhost:8761/,如果順利的話可以看到如下成功頁面

至此,一個簡單的Eureka注冊中心就完成了,后面實戰(zhàn)中的 Eureka Client 都會注冊到這個注冊中心。上面的demo只是一個單機部署,接下里我們看看我們要部署多個Eureka節(jié)點時怎么做。

Eureka Server 集群部署

集群部署一般有兩種情況,一是偽集群部署,二是真正的集群部署。

集群部署,我們可以在多臺物理機上部署,這樣多個實例可以用同一個端口,不會出現(xiàn)偽集群端口沖突的問題,更推薦這種方式,性能更高,穩(wěn)定性也更好。

偽集群部署一般說的是在同一臺物理機器上部署多個節(jié)點,這時候端口就必須不一樣,否則啟動的時候會出現(xiàn)端口沖突;

偽集群部署示例:

假設(shè)要部署3個節(jié)點:master/slave1/slave2

1.在application.yml配置定義三個節(jié)點的端口:

port:
 master: 8761
 slave1: 8762
 slave2: 8763

2.我們可以分別創(chuàng)建三個配置文件application-master.yml、application-slave1.yml、application-slave2.yml,三個配置文件除了有沖突的地方端口不一樣,其他配置完全一樣

# application-master.yml
server:
 port: ${port.slave1} # 服務(wù)端口

# application-master.yml
server:
 port: ${port.slave1} # 服務(wù)端口

# application-slave2slave2.yml
server:
 port: ${port.slave2} # 服務(wù)端口

# 以下配置三個配置文件都一樣
eureka:
 client:
 register-with-eureka: true #不將自己的實例注冊到 Eureka Server
 fetch-registry: true #不從 Eureka Server 中獲取 Eureka 的注冊表信息
 service-url:
  defaultZone: http://127.0.0.1:${port.master}/eureka/,http://127.0.0.1:${port.slave1}/eureka/,http://127.0.0.1:${port.slave2}/eureka/
 instance:
 hostname: eureka-server
 server:
 enable-self-preservation: true # 開啟自我保護(hù)機制,默認(rèn)也是開啟的

3.IDEA 分別以三個不同的profiles啟動

4.訪問 http://localhost:8761/ 或者 http://localhost:8762/ 或者 http://localhost:8761/,出現(xiàn)以下類似頁面則代表成功

觀察上面的頁面,發(fā)現(xiàn) Eureka Server 節(jié)點均出現(xiàn)在 unavailable-replicas 下,說明集群搭建還是失敗了,那這個問題怎么解決呢?

1.在host添加以下配置

127.0.0.1  eureka-server-master
127.0.0.1  eureka-server-slave1
127.0.0.1  eureka-server-slave2

2.修改三個配置文件的defaultZone信息

eureka:
 client:
 service-url:
  defaultZone: http://eureka-server-master:${port.master}/eureka/,http://eureka-server-slave1:${port.slave1}/eureka/,http://eureka-server-slave2:${port.slave2}/eureka/

3.配置eureka.instance.hostname信息(尤其是在同一臺物理機上配置三個節(jié)點時,需要修改為不同的host)

eureka:
	instance:
 hostname: eureka-server-master

eureka:
	instance:
 hostname: eureka-server-slave1

**eureka:
	instance:
 hostname: eureka-server-slave2

4.重新啟動,訪問http://localhost:8761/ ,其他兩個節(jié)點君出現(xiàn)在 available-replicas 選項

注意:如果執(zhí)行完上面還是出現(xiàn)在,請檢查是否配置了 prefer-ip-address = true,true #以IP地址注冊到服務(wù)中心,相互注冊使用IP地址,如果是在一臺物理機上,IP都是一個,所以建議設(shè)置成false,或者不配置再試試。

部署 Eureka Client

1.創(chuàng)建一個名為eureka-client 的SprintBoot的項目(略)

2.引入eureka-client依賴(maven)

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

3.引入spring-boot-starter-web依賴,如果沒有加上spring-boot-starter-web,服務(wù)無法正常啟動

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>

4.開啟 EurekaClient
在啟動類上加入注解@EnableEurekaClient,用于啟用Eureka發(fā)現(xiàn)配置

5.配置端口為8081

server.port = 8081
port.master = 8761
port.slave1 = 8762
port.slave2 = 8763

6.配置注冊中心地址

添加配置 eureka.client.serviceUrl.defaultZone=http://eureka-server-master:${port.master}/eureka/,http://eureka-server-slave1:${port.slave1}/eureka/,http://eureka-server-slave2:${port.slave2}/eureka/

7.啟動服務(wù),刷新 http://localhost:8761/ 頁面,如果看到了EUREKA-CLIENT應(yīng)用則表示注冊成功

Eureka自我保護(hù)機制

自我保護(hù)機制是為了避免因網(wǎng)絡(luò)分區(qū)故障而導(dǎo)致服務(wù)不可用的問題。具體現(xiàn)象為當(dāng)網(wǎng)絡(luò)故障后,所有的服務(wù)與 Eureka Server 之間無法進(jìn)行正常通信,一定時間后,Eureka Server 沒有收到續(xù)約的信息,將會移除沒有續(xù)約的實例。這個時候正常的服務(wù)也會被移除掉,所以需要引入自我保護(hù)機制來解決這種問題。

當(dāng)服務(wù)提供者出現(xiàn)網(wǎng)絡(luò)故障,無法與 Eureka Server 進(jìn)行續(xù)約,Eureka Server 會將該實例移除,此時服務(wù)消費者從 Eureka Server 拉取不到對應(yīng)的信息,實際上服務(wù)提供者處于可用的狀態(tài),問題就是這樣產(chǎn)生的。

開啟自我保護(hù)機制

eureka.server.enable-self-preservation=true # 開啟自我保護(hù)機制,默認(rèn)也是開啟的

當(dāng)服務(wù)提供者出現(xiàn)網(wǎng)絡(luò)故障,無法與 Eureka Server 進(jìn)行續(xù)約時,雖然 Eureka Server 開啟了自我保護(hù)模式,但沒有將該實例移除,服務(wù)消費者還是可以正常拉取服務(wù)提供者的信息,正常發(fā)起調(diào)用。

但是自我保護(hù)機制也有不好的地方,如果服務(wù)提供者真的下線了,由于 Eureka Server 自我保護(hù)還處于打開狀態(tài),不會移除任務(wù)信息,當(dāng)服務(wù)消費者對服務(wù)提供者 B 進(jìn)行調(diào)用時,就會出錯。

自我保護(hù)模式有利也有弊,但我們建議在生產(chǎn)環(huán)境中還是開啟該功能,默認(rèn)配置也是開啟的。

完整代碼實例:

總結(jié)

  1. 使用@EnableEurekaServer 注解實現(xiàn)注冊中心
  2. 使用@EnableEurekaClient 注冊到注冊中心
  3. Eureka Server 集群部署的時候需要保證register-with-eureka和 fetch-registry 為true,單機部署可以為false
  4. 生產(chǎn)環(huán)境建議開啟自我保護(hù)機制

以上就是Spring Cloud引入Eureka組件,完善服務(wù)治理的詳細(xì)內(nèi)容,更多關(guān)于Spring Cloud引入Eureka組件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • springboot整合 xxl-job的項目實踐

    springboot整合 xxl-job的項目實踐

    XL-JOB是一個分布式任務(wù)調(diào)度平臺,用于解決分布式系統(tǒng)中的任務(wù)調(diào)度和管理問題,它包括調(diào)度中心、執(zhí)行器和Web管理控制臺,本文就來介紹一下springboot整合 xxl-job的項目實踐,感興趣的可以了解一下
    2024-09-09
  • Struts2的輸入校驗實例代碼

    Struts2的輸入校驗實例代碼

    這篇文章主要介紹了Struts2的輸入校驗實例代碼,非常不錯,具有參考借鑒價值, 需要的朋友可以參考下
    2017-03-03
  • Java中的比較器詳細(xì)解析

    Java中的比較器詳細(xì)解析

    這篇文章主要介紹了Java中的比較器詳細(xì)解析,基本數(shù)據(jù)類型的數(shù)據(jù)(除boolean類型外)需要比較大小的話,直接使用比較運算符即可,但是引用數(shù)據(jù)類型是不能直接使用比較運算符來比較大小的,需要的朋友可以參考下
    2023-11-11
  • Java實現(xiàn)Kruskal算法的示例代碼

    Java實現(xiàn)Kruskal算法的示例代碼

    Kruskal算法是一種用來尋找最小生成樹的算法,由Joseph Kruskal在1956年發(fā)表。用來解決同樣問題的還有Prim算法和Boruvka算法等。本文將介紹用Java語言實現(xiàn)Kruskal算法的示例代碼,需要的可以參考一下
    2022-07-07
  • Java中的switch新特性與使用詳解

    Java中的switch新特性與使用詳解

    這篇文章主要介紹了Java中的switch新特性與使用詳解,Switch語句可以實現(xiàn)根據(jù)某一變量選則執(zhí)行代碼塊,當(dāng)然直接使用If語句也可以做到,但是有時候使用Switch語句往往更加簡潔優(yōu)美,需要的朋友可以參考下
    2023-11-11
  • SpringBoot3整合Hutool-captcha實現(xiàn)圖形驗證碼

    SpringBoot3整合Hutool-captcha實現(xiàn)圖形驗證碼

    在整合技術(shù)框架的時候,想找一個圖形驗證碼相關(guān)的框架,看到很多驗證碼的maven庫不再更新了或中央倉庫下載不下來,還需要多引入依賴,后面看到了Hutool圖形驗證碼(Hutool-captcha)中對驗證碼的實現(xiàn),所以本文介紹了SpringBoot3整合Hutool-captcha實現(xiàn)圖形驗證碼
    2024-11-11
  • Java多線程編程實戰(zhàn)之模擬大量數(shù)據(jù)同步

    Java多線程編程實戰(zhàn)之模擬大量數(shù)據(jù)同步

    這篇文章主要介紹了Java多線程編程實戰(zhàn)之模擬大量數(shù)據(jù)同步,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • MyBatis 結(jié)果映射的兩種方式

    MyBatis 結(jié)果映射的兩種方式

    本文主要介紹了MyBatis的結(jié)果映射機制,包括基本結(jié)果映射、復(fù)雜結(jié)果映射以及動態(tài)結(jié)果映射和延遲加載,通過合理配置結(jié)果映射,可以簡化復(fù)雜查詢結(jié)果,感興趣的可以了解一下
    2024-11-11
  • 實例講解Java的Spring框架中的AOP實現(xiàn)

    實例講解Java的Spring框架中的AOP實現(xiàn)

    這篇文章主要介紹了Java的Spring框架中的AOP實現(xiàn)實例,AOP面向切面編程其實也可以被看作是一個設(shè)計模式去規(guī)范項目的結(jié)構(gòu),需要的朋友可以參考下
    2016-04-04
  • Java獲取CPU和內(nèi)存占用率最簡單的方法

    Java獲取CPU和內(nèi)存占用率最簡單的方法

    這篇文章主要介紹了Java獲取CPU和內(nèi)存占用率最簡單的方法,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-06-06

最新評論

盐城市| 磐石市| 介休市| 浦北县| 乐安县| 澄城县| 专栏| 麻城市| 六枝特区| 涟源市| 东城区| 富阳市| 蒙城县| 大洼县| 个旧市| 且末县| 根河市| 凭祥市| 洛南县| 锡林郭勒盟| 依安县| 白玉县| 郧西县| 林西县| 体育| 抚州市| 特克斯县| 丰宁| 万源市| 婺源县| 东兰县| 芦山县| 平安县| 广昌县| 普兰县| 冕宁县| 蓝田县| 龙门县| 化隆| 广汉市| 寿光市|