av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:123日期:2023-07-23 15:59:38
簡(jiǎn)介

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

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

部署 Eureka Server

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

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

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

3.開(kāi)啟 EurekaServer在啟動(dòng)類(lèi)上添加 @EnableEurekaServer注解,開(kāi)啟 EurekaServer 的自動(dòng)裝配功能。

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

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

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

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

8.啟動(dòng) Eureka Server,訪問(wèn) http://localhost:8761/,如果順利的話可以看到如下成功頁(yè)面

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

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

Eureka Server 集群部署

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

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

偽集群部署一般說(shuō)的是在同一臺(tái)物理機(jī)器上部署多個(gè)節(jié)點(diǎn),這時(shí)候端口就必須不一樣,否則啟動(dòng)的時(shí)候會(huì)出現(xiàn)端口沖突;

偽集群部署示例:

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

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

port: master: 8761 slave1: 8762 slave2: 8763

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

# application-master.ymlserver: port: ${port.slave1} # 服務(wù)端口# application-master.ymlserver: port: ${port.slave1} # 服務(wù)端口# application-slave2slave2.ymlserver: port: ${port.slave2} # 服務(wù)端口# 以下配置三個(gè)配置文件都一樣eureka: client: register-with-eureka: true #不將自己的實(shí)例注冊(cè)到 Eureka Server fetch-registry: true #不從 Eureka Server 中獲取 Eureka 的注冊(cè)表信息 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 # 開(kāi)啟自我保護(hù)機(jī)制,默認(rèn)也是開(kāi)啟的

3.IDEA 分別以三個(gè)不同的profiles啟動(dòng)

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

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

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

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

1.在host添加以下配置

127.0.0.1 eureka-server-master127.0.0.1 eureka-server-slave1127.0.0.1 eureka-server-slave2

2.修改三個(gè)配置文件的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信息(尤其是在同一臺(tái)物理機(jī)上配置三個(gè)節(jié)點(diǎn)時(shí),需要修改為不同的host)

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

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

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

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

部署 Eureka Client

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

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

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

3.引入spring-boot-starter-web依賴(lài),如果沒(méi)有加上spring-boot-starter-web,服務(wù)無(wú)法正常啟動(dòng)

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

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

5.配置端口為8081

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

6.配置注冊(cè)中心地址

添加配置 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.啟動(dòng)服務(wù),刷新 http://localhost:8761/ 頁(yè)面,如果看到了EUREKA-CLIENT應(yīng)用則表示注冊(cè)成功

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

Eureka自我保護(hù)機(jī)制

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

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

開(kāi)啟自我保護(hù)機(jī)制

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

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

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

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

完整代碼實(shí)例:

Eureka Server 代碼實(shí)例 Eureka Client 代碼示例 總結(jié) 使用@EnableEurekaServer 注解實(shí)現(xiàn)注冊(cè)中心 使用@EnableEurekaClient 注冊(cè)到注冊(cè)中心 Eureka Server 集群部署的時(shí)候需要保證register-with-eureka和 fetch-registry 為true,單機(jī)部署可以為false 生產(chǎn)環(huán)境建議開(kāi)啟自我保護(hù)機(jī)制

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

標(biāo)簽: Spring
主站蜘蛛池模板: 久久人人网 | 亚洲一二三在线观看 | 天天操操操操操 | 激情影院久久 | 午夜爽爽爽男女免费观看影院 | 成年人在线| 国产精品久久久久久久久久免费看 | 亚洲精品二区 | 国产高清视频一区二区 | 精品二区 | 久久久九九 | 国产欧美在线视频 | 久草在线| 国产在线精品一区二区 | 色先锋影音 | 欧美日韩专区 | 国产又色又爽又黄又免费 | 精品一区二区三区电影 | 成人不卡视频 | 一区精品视频在线观看 | 手机av在线| 一区二区三区亚洲 | 国产精品久久久久久久久久免费看 | 一级国产精品一级国产精品片 | 亚洲美女网站 | 天天操天天干天天透 | 成年人免费看 | 99免费看 | 久久久久久一区 | 一级毛片网 | 中国黄色在线视频 | 伊人网站在线观看 | av毛片在线免费观看 | 亚洲综合无码一区二区 | 91精品国产一区二区在线观看 | 日韩成人一区 | 国产精品久久久久久久久久久新郎 | 日本一区二区在线视频 | 亚洲高清在线 | 成人免费观看视频 | 国产成人一区二区三区 |