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

SpringCloud?Eureka服務(wù)治理之服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)

 更新時(shí)間:2022年08月01日 15:51:07   作者:共飲一杯無  
這篇文章主要介紹了SpringCloud?Eureka服務(wù)治理服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)概念詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

什么是Eureka

Netflix Eureka 是一款由 Netflix 開源的基于 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 的客戶端組件,能夠非常方便的將服務(wù)注冊(cè)到 Spring Cloud Eureka 中進(jìn)行統(tǒng)一管理。

Eureka核心概念服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)

服務(wù)注冊(cè)

  • 注冊(cè)中心

拆開來看注冊(cè)和中心。注冊(cè)比如用戶注冊(cè),就是將自己的信息注冊(cè)在某個(gè)平臺(tái)上。中心可以理解成一個(gè)統(tǒng)一管理信息的平臺(tái)。所以注冊(cè)中心顧名思義是統(tǒng)一管理所有注冊(cè)信息的平臺(tái)。

  • 服務(wù)注冊(cè)

指的是服務(wù)在啟動(dòng)時(shí)將自身的信息注冊(cè)到注冊(cè)中心中,方便信息進(jìn)行統(tǒng)一管理。服務(wù)注冊(cè)是客戶端向注冊(cè)中心提交信息的動(dòng)作。

服務(wù)發(fā)現(xiàn)

  • 服務(wù)發(fā)現(xiàn)

指的是從注冊(cè)中心獲取對(duì)應(yīng)服務(wù)的信息,是客戶端向注冊(cè)中心拉取pull信息的動(dòng)作。

Eureka實(shí)戰(zhàn)

  • Eureka 的架構(gòu)主要分為 Eureka Server 和 Eureka Client 兩部分,Eureka Client 又分為 Applicaton Service 和 Application Client,Applicaton Service 就是服務(wù)提供者,Application Client 就是服務(wù)消費(fèi)者。
  • Eureka Client 會(huì)向 Eureka Server 發(fā)送請(qǐng)求,進(jìn)行注冊(cè),并將自己的一些信息發(fā)送給 Eureka Server。
  • 注冊(cè)成功后,每隔一定的時(shí)間,Eureka Client 會(huì)向 Eureka Server 發(fā)送心跳來續(xù)約服務(wù),也就是匯報(bào)健康狀態(tài)。 如果客戶端長(zhǎng)時(shí)間沒有續(xù)約,那么 Eureka Server 將在 90 秒(默認(rèn))內(nèi)從服務(wù)器注冊(cè)表中刪除客戶端的信息。
  • Eureka Client 還會(huì)定期從 Eureka Server 拉取注冊(cè)表信息,然后通過Ribbon 組件根據(jù)負(fù)載均衡算法得到一個(gè)目標(biāo),并發(fā)起遠(yuǎn)程調(diào)用。
  • 應(yīng)用正常停止時(shí)也會(huì)通知 Eureka Server 移除相關(guān)信息,信息成功移除后,其他客戶端會(huì)更新服務(wù)的信息,這樣就不會(huì)調(diào)用已經(jīng)下線的服務(wù)了,當(dāng)然這個(gè)會(huì)有延遲,有可能會(huì)調(diào)用到已經(jīng)失效的服務(wù),所以在客戶端會(huì)開啟失敗重試功能來避免這個(gè)問題。
  • Eureka Server 會(huì)有多個(gè)節(jié)點(diǎn)組成一個(gè)集群,保證高可用。Eureka Server 沒有集成其他第三方存儲(chǔ),而是存儲(chǔ)在內(nèi)存中,內(nèi)部維護(hù)一個(gè)注冊(cè)表的概念。
  • 所以 Eureka Server 之間會(huì)將注冊(cè)信息復(fù)制到集群中的 Eureka Server 的所有節(jié)點(diǎn)。 這樣數(shù)據(jù)才是共享狀態(tài),任何的 Eureka Client 都可以在任何一個(gè) Eureka Server 節(jié)點(diǎn)查找注冊(cè)表信息。

Eureka服務(wù)端單節(jié)點(diǎn)構(gòu)建

打開start.spring.io/ 或者阿里云的快速start start.aliyun.com/bootstrap.h… ,開始構(gòu)建對(duì)應(yīng)的服務(wù)端項(xiàng)目。推薦使用阿里云的快速start,因?yàn)樵L問速度更快些。

自動(dòng)生成完成后,在resource目錄下,新建application.yml文件替換原來的application.properties。內(nèi)容如下:

#應(yīng)用名稱
spring:
  application:
    name: eureka-server
server:
  port: 8001
eureka:
  client:
    # 是否將自己實(shí)例注冊(cè)到Eureka Server中
    register-with-eureka: false
    # 是否應(yīng)從Eureka Server獲取Eureka注冊(cè)表信息
    fetch-registry: false

在SpringBoot的啟動(dòng)類上添加@EnableEurekaServer 注解,表示是Eureka 服務(wù)端。 上述配置完成后,一個(gè)單節(jié)點(diǎn)的Eureka服務(wù)端就配置完成了,啟動(dòng)效果如下:

訪問http://localhost:8761/ 可以進(jìn)入eureka控制臺(tái)。

目前還沒有任何一個(gè)服務(wù)注冊(cè)到 Eureka 中,不過從上圖中,我們還是可以看到關(guān)于 Eureka 服務(wù)器內(nèi)存、CPU 、IP等的相關(guān)信息。

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE。

圖中紅色警告翻譯為:緊急!Eureka已經(jīng)不能確認(rèn)這些已經(jīng)啟動(dòng)的實(shí)例是否可用,由于最近的續(xù)訂次數(shù)小于續(xù)訂閾值(續(xù)訂期望值),為了安全起見(實(shí)例可用),當(dāng)前這些實(shí)例不會(huì)刪除。 這是因?yàn)镋ureka進(jìn)入自我保護(hù)模式(SELF PRESERVATION MODE)。

Eureka服務(wù)端集群構(gòu)建

單個(gè) Eureka 服務(wù)可能存在的單點(diǎn)失效問題,我們通常都需要構(gòu)建一個(gè) Eureka 服務(wù)器集群來確保注冊(cè)中心本身的可用性。與傳統(tǒng)的集群構(gòu)建方式不同,如果我們把 Eureka 也視為一個(gè)服務(wù),也就是說 Eureka服務(wù)自身也能注冊(cè)到其他 Eureka 服務(wù)上,從而實(shí)現(xiàn)相互注冊(cè),并構(gòu)成一個(gè)集群。 同樣可以通過單節(jié)點(diǎn)構(gòu)建步驟構(gòu)建兩個(gè)Eureka Server服務(wù)A和B。對(duì)應(yīng)的yml配置如下:

server: 
  port: 8761 
eureka: 
  instance: 
    hostname: eurekaA 
  client: 
    serviceUrl:
	   defaultZone: http:// eurekaB:8762/eureka/ 
server: 
  port: 8762 
eureka: 
  instance: 
    hostname: eurekaB 
  client: 
    serviceUrl:
	   defaultZone: http://eurekaA:8761/eureka/ 

**eureka.instance.hostname **是Eureka 實(shí)例管理類配置項(xiàng) ,用于指定當(dāng)前 Eureka 服務(wù)的主機(jī)名稱。 需要在本機(jī)的hosts文件中添加以下信息:

127.0.0.1 eurekaA 
127.0.0.1 eurekaB

  • 我們可以看到服務(wù)端A和B只調(diào)整了端口和地址的引用。構(gòu)建 Eureka 集群模式的關(guān)鍵點(diǎn)在于使用客戶端配置項(xiàng) eureka.client.serviceUrl.defaultZone 用于指向集群中的其他 Eureka 服務(wù)器。
  • 所以 Eureka 集群的構(gòu)建方式實(shí)際上就是將自己作為服務(wù)并向其他注冊(cè)中心注冊(cè)自己,這樣就形成了一組互相注冊(cè)的服務(wù)注冊(cè)中心以實(shí)現(xiàn)服務(wù)列表的同步。
  • 這個(gè)場(chǎng)景下 register-with-eureka(是否將自己實(shí)例注冊(cè)到Eureka Server中) 和 fetch-registry(是否應(yīng)從Eureka Server獲取Eureka注冊(cè)表信息)配置項(xiàng)應(yīng)該都使用其默認(rèn)的 true 值,我們不需要對(duì)其進(jìn)行顯式的設(shè)置。
  • 如果你嘗試使用本機(jī)搭建集群環(huán)境,顯然 eureka.instance.hostname 配置項(xiàng)中的 eureka1 和 eureka2 是無法訪問的,所以需要在本機(jī)hosts 文件中添加以下信息。
  • 現(xiàn)在啟動(dòng)這兩個(gè) Eureka 服務(wù),然后分別打開 http://127.0.0.1:8761/ 和 http://127.0.0.1:8762/ 端點(diǎn)可以看到各自的服務(wù)注冊(cè)效果。

Eureka客戶端構(gòu)建

客戶端引入的pom坐標(biāo)有差異,需要引入客戶端坐標(biāo):

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

在啟動(dòng)類上需要加@EnableDiscoveryClient注解表示是Eureka客戶端。

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

yml配置如下:

spring: 
  application: 
	name: eureka-client  
server: 
  port: 8081 
eureka: 
  client: 
    serviceUrl: 
    #指定eureka服務(wù)端地址,如果是集群則通過逗號(hào)分隔
	  defaultZone: http://localhost:8761/eureka/ 

配置完成后可以在eureka控制臺(tái)查看到相關(guān)注冊(cè)信息。

以上就是SpringCloud Eureka服務(wù)治理服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud Eureka服務(wù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java并發(fā)CopyOnWrite容器原理解析

    Java并發(fā)CopyOnWrite容器原理解析

    這篇文章主要介紹了Java并發(fā)CopyOnWrite容器原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • java讀寫二進(jìn)制文件的解決方法

    java讀寫二進(jìn)制文件的解決方法

    本篇文章是對(duì)java讀寫二進(jìn)制文件的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • JAVA Vector源碼解析和示例代碼

    JAVA Vector源碼解析和示例代碼

    本文的學(xué)習(xí)方式是先對(duì)JAVA Vector有個(gè)整體認(rèn)識(shí),然后再學(xué)習(xí)它的源碼,最后再通過實(shí)例來學(xué)會(huì)使用。
    2013-11-11
  • Springboot如何切換默認(rèn)的Tomcat容器

    Springboot如何切換默認(rèn)的Tomcat容器

    這篇文章主要介紹了Springboot如何切換默認(rèn)的Tomcat容器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java縮小文件內(nèi)存占用的方法技巧分享

    Java縮小文件內(nèi)存占用的方法技巧分享

    在Java應(yīng)用程序中,處理大文件時(shí)經(jīng)常會(huì)遇到內(nèi)存占用過高的問題,為了縮小文件的內(nèi)存占用,我們可以采取一些有效的方法來優(yōu)化和管理內(nèi)存的使用,本文將介紹一些在Java中縮小文件內(nèi)存占用的技巧,需要的朋友可以參考下
    2024-10-10
  • SpringBoot整合Swagger2實(shí)例方法

    SpringBoot整合Swagger2實(shí)例方法

    在本篇文章里小編給大家整合了關(guān)于SpringBoot整合Swagger2的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-06-06
  • 詳解JVM虛擬機(jī)的類加載機(jī)制

    詳解JVM虛擬機(jī)的類加載機(jī)制

    這篇文章主要介紹了詳解JVM虛擬機(jī)的類加載機(jī)制,虛擬機(jī)把描述類的數(shù)據(jù)從 Class 文件加載到內(nèi)存,并對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)、轉(zhuǎn)換解析和初始化,最終形成可以被虛擬機(jī)直接使用的 Java 類型,這就是虛擬機(jī)的類加載機(jī)制,需要的朋友可以參考下
    2023-08-08
  • 在MyBatis中實(shí)現(xiàn)一對(duì)多查詢和多對(duì)一查詢的方式詳解(各兩種方式)

    在MyBatis中實(shí)現(xiàn)一對(duì)多查詢和多對(duì)一查詢的方式詳解(各兩種方式)

    今天通過兩種方法分別給大家介紹在MyBatis中實(shí)現(xiàn)一對(duì)多查詢和多對(duì)一查詢的方式,每種方式通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-01-01
  • 優(yōu)惠券優(yōu)惠的思路以及實(shí)踐

    優(yōu)惠券優(yōu)惠的思路以及實(shí)踐

    本文主要介紹了優(yōu)惠券優(yōu)惠的思路以及實(shí)踐。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Java設(shè)計(jì)模式中的建造者(Builder)模式解讀

    Java設(shè)計(jì)模式中的建造者(Builder)模式解讀

    這篇文章主要介紹了Java設(shè)計(jì)模式中的建造者(Builder)模式解讀, 建造者模式是一種創(chuàng)建對(duì)象的設(shè)計(jì)模式,它通過將對(duì)象的構(gòu)建過程分解為多個(gè)步驟,并使用一個(gè)建造者類來封裝這些步驟,從而使得對(duì)象的構(gòu)建過程更加靈活和可擴(kuò)展,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

萝北县| 虎林市| 永新县| 皮山县| 台东市| 兴仁县| 江孜县| 北安市| 慈利县| 鄱阳县| 合肥市| 乌拉特前旗| 阿勒泰市| 富川| 碌曲县| 大埔区| 克拉玛依市| 漾濞| 临海市| 鄢陵县| 永兴县| 乐清市| 鹰潭市| 无棣县| 出国| 株洲市| 珠海市| 天津市| 循化| 拉萨市| 清镇市| 老河口市| 株洲市| 北票市| 邓州市| 寿宁县| 泽普县| 松溪县| 宜春市| 永年县| 安溪县|