国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Spring Cloud系列】- Eureka使用詳解

這篇具有很好參考價值的文章主要介紹了【Spring Cloud系列】- Eureka使用詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【Spring Cloud系列】- Eureka使用詳解

一、概述

Eureka2.0版本已經(jīng)停止維護,為什么要寫這篇博客重復(fù)已停止更新的中間件,其目的主要是:

  1. 認(rèn)識微服務(wù)注冊中心:雖然Eureka已經(jīng)停止維護,但微服務(wù)架構(gòu)在當(dāng)今非常流程,學(xué)習(xí)Eureka可以更好的理解微服務(wù)。
  2. 便于老舊系統(tǒng)維護:如果使用微服務(wù),公司一定會存在使用Eureka服務(wù)的應(yīng)用系統(tǒng),學(xué)習(xí)Eureka便于儲備老舊系統(tǒng)維護的能力。

二、Eureka簡介

Eureka是Netflix的一個子模塊,也是核心模塊之一。Eureka是一個基于REST的服務(wù),用于定位服務(wù),以實現(xiàn)云端中間層服務(wù)發(fā)現(xiàn)和故障轉(zhuǎn)移。

三、Eureka結(jié)構(gòu)與作用

Eureka結(jié)構(gòu)圖

【Spring Cloud系列】- Eureka使用詳解

Eureka采用CS(Client/Server,客戶端/服務(wù)器)架構(gòu),它包括以下兩大組件
  1. Eureka Server:Eureka 服務(wù)注冊中心,主要用于提供服務(wù)注冊功能。當(dāng)微服務(wù)啟動時,會將自己的服務(wù)注冊到 Eureka Server。Eureka Server 維護了一個可用服務(wù)列表,存儲了所有注冊到 Eureka Server 的可用服務(wù)的信息,這些可用服務(wù)可以在 Eureka Server 的管理界面中直觀看到。
  2. Eureka Client:Eureka 客戶端,通常指的是微服務(wù)系統(tǒng)中各個微服務(wù),主要用于和 Eureka Server 進行交互。在微服務(wù)應(yīng)用啟動后,Eureka Client 會向 Eureka Server 發(fā)送心跳(默認(rèn)周期為 30 秒)。若 Eureka Server 在多個心跳周期內(nèi)沒有接收到某個 Eureka Client 的心跳,Eureka Server 將它從可用服務(wù)列表中移除(默認(rèn) 90 秒)。

"心跳"是一段定時發(fā)送的自定義信息,讓對方知道自己"存活",以確保連接有效性,大部分CS架構(gòu)的應(yīng)用程序都采用心跳機制,服務(wù)端和客戶端都可以發(fā)送心跳。通常情況下客戶端發(fā)送請求心跳包給服務(wù)器端。服務(wù)器端判斷客戶端是否存活在線。

四、Eureka集群及與應(yīng)用關(guān)系

  • Eureka關(guān)系圖

【Spring Cloud系列】- Eureka使用詳解

  • Eureka 實現(xiàn)服務(wù)注冊與發(fā)現(xiàn)的流程
    1. 服務(wù)提供者(Eureka Client Provider)啟動時,把當(dāng)前服務(wù)器信息以服務(wù)名(spring.application.name)的方式注冊到注冊中心。
    2. 服務(wù)器消費者(Eureka Client Consumer)啟動時,也會注冊自己的服務(wù)名到注冊中心。
    3. 服務(wù)消費者(Consumer)注冊的同時會獲取一份可用的服務(wù)器列表。該列表中包含了所有注冊到服務(wù)注冊中心的服務(wù)信息(包含服務(wù)器提供者和自身服務(wù)信息)。
    4. 在獲得可用服務(wù)列表后,服務(wù)消費者通過HTTP或消息中間件遠程調(diào)用服務(wù)者提供服務(wù)。

服務(wù)中心(Eureka Server)是個十分重要的角色,他是服務(wù)提供者(Provider)和服務(wù)消費者(Consumer)之間的橋梁。服務(wù)提供者只有將自己的服務(wù)注冊到服務(wù)注冊中心才可能被服務(wù)消費者調(diào)用。而服務(wù)消費者也只有通過服務(wù)注冊中心獲取可用服務(wù)列表后,才能調(diào)用所需的服務(wù)。為保證應(yīng)用的高可用型;使用多個注冊中心,相互注冊保證任何一臺注冊中心故障不影響整個服務(wù)器中心向外提供服務(wù)。

五、Eureka注冊中心實現(xiàn)

  • pom.xml添加依賴
    1. 添加spring-boot-starter-parent依賴

      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.3.6.RELEASE</version>
          <relativePath/>
      </parent>
      
    2. 添加依賴dependencyManagement

      <dependencyManagement>
        <dependencies>
           <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-dependencies</artifactId>
               <version>Hoxton.SR12</version>
               <type>pom</type>
               <scope>import</scope>
            </dependency>
         </dependencies>
      </dependencyManagement>
      
    3. 添加相關(guān)依賴

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <scope>runtime</scope>
         <optional>true</optional>
      </dependency>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <version>3.0.5</version>
          <scope>test</scope>
      </dependency>
      
  • 創(chuàng)建Eureka服務(wù)主類
    package com.goyeer;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    //Eureka注冊中心注解
    @EnableEurekaServer
    @SpringBootApplication
    public class EurekaService {
        public static void main(String[] args){
            SpringApplication.run(EurekaService.class,args);
        }
    }
    
  • 添加application配置信息
    server:
      port: 30009
    eureka:
      instance:
        #服務(wù)注冊中心實例的主機名
        hostname: localhost
      client:
        #實例是否在eureka服務(wù)器上注冊自己的信息以供其他服務(wù)發(fā)現(xiàn),默認(rèn)為true
        register-with-eureka: false
        #此客戶端是否獲取eureka服務(wù)器注冊表上的注冊信息,默認(rèn)為true
        fetch-registry: false
        service-url:
          #與Eureka注冊服務(wù)中心的通信zone和url地址
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
          registerWithEureka: false
          fetchRegistry: false
      server:
        enable-self-preservation: false
        eviction-interval-timer-in-ms: 5000
    

【Spring Cloud系列】- Eureka使用詳解

六、Eureka客戶端

  • pom.xml添加依賴

    pom文件可用直接使用Eureka服務(wù)端pom文件,只需要把spring-cloud-starter-netflix-eureka-server替換為spring-cloud-netflix-eureka-client

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-netflix-eureka-client</artifactId>
    </dependency>
    
  • 創(chuàng)建Eureka服務(wù)主類
    package com.awinic;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    @EnableEurekaClient
    @SpringBootApplication
    public class EurekaProviderClientApp {
       public static void main(String[] args){
           SpringApplication.run(EurekaProviderClientApp.class,args);
       }
    }
    
  • 添加application配置信息
    server:
      port: 30001
    eureka:
      instance:
        hostname: localhost
      client:
        #實例是否在eureka服務(wù)器上注冊自己的信息以供其他服務(wù)發(fā)現(xiàn),默認(rèn)為true
        register-with-eureka: true
        fetch-registry: false
        service-url:
          defaultZone: http://${eureka.instance.hostname}:30000/eureka/
          registerWithEureka: false
          fetchRegistry: false
    

七、自我保護機制

Eureka在CAP理論當(dāng)中是屬于AP , 也就說當(dāng)產(chǎn)生網(wǎng)絡(luò)分區(qū)時,Eureka保證系統(tǒng)的可用性,但不保證系統(tǒng)里面數(shù)據(jù)的一致性,當(dāng)發(fā)生網(wǎng)絡(luò)分區(qū)的時候,Eureka-Server和Client端的通訊被終止,Eureka Server端接收不到Eureka Client續(xù)約請求,此時,如果直接將沒有收到心跳Eureka Client端自動剔除,那么就可能誤把正常的Eureka Client端給剔除。這個不符合AP理論,所有Eureka-Server會保留可能已宕機的Eureka Server端。從而保證了Eureka Server的健壯性,符合AP理論。

Eureka重要兩個變量:
this.expectedNumberOfRenewsPerMin = count * 2;
this.numberOfRenewsPerMinThreshold =(int) (this.expectedNumberOfRenewsPerMin * serverConfig.getRenewalPercentThreshold());

expectedNumberOfRenewsPerMin :每分鐘最大的續(xù)約數(shù)量,由于客戶端是每30秒續(xù)約一次,一分鐘就是續(xù)約2次, count代表的是客戶端數(shù)量。

所以這個變量的計算公式 : 客戶端數(shù)量*2

numberOfRenewsPerMinThreshold : 每分鐘最小續(xù)約數(shù)量, 使用expectedNumberOfRenewsPerMin * serverConfig.getRenewalPercentThreshold()。
serverConfig.getRenewalPercentThreshold()的默認(rèn)值為0.85 , 也就是說每分鐘的續(xù)約數(shù)量要大于85% 。
Eureka的自我保護機制,都是圍繞以上兩個變量實現(xiàn)的,如果每分鐘的續(xù)約數(shù)量小于numberOfRenewsPerMinThreshold,此時就會開啟自動保護機制。

在此期間,Eureka Server不會主動剔除任何一個客戶端。

八、總結(jié)

Eureka 是Spring Cloud核心它提供一下幾個主要的服務(wù):

  1. 服務(wù)注冊和發(fā)現(xiàn):eureka 分客戶端(Eureka Client)和服務(wù)端(Eureka Server),服務(wù)端即為注冊中心,提供服務(wù)注冊和發(fā)現(xiàn)的功能。所有客戶端將自己注冊到注冊中心上,服務(wù)端使用 Map 結(jié)構(gòu)基于內(nèi)存保存所有客戶端信息(IP、端口、續(xù)約等信息)??蛻舳硕〞r從注冊中心拉取注冊表到本地,就可以通過負(fù)載均衡的方式進行服務(wù)間的調(diào)用。
  2. 服務(wù)注冊(Register):Eureka Client 啟動時向 Eureka Server 注冊,并提供自身的元數(shù)據(jù)、IP地址、端口、狀態(tài)等信息。
  3. 服務(wù)續(xù)約(Renew):Eureka Client 默認(rèn)每隔30秒向 Eureka Server 發(fā)送一次心跳進行服務(wù)續(xù)約,通過續(xù)約告知 Eureka Server 自己是正常的。如果 Eureka Server 180秒沒有收到客戶端的續(xù)約,就會認(rèn)為客戶端故障,并將其剔除。
  4. 抓取注冊表(Fetch Registry):Eureka Client 啟動時會向 Eureka Server 全量抓取一次注冊表到本地,之后會每隔30秒增量抓取注冊表合并到本地注冊表。如果合并后的本地注冊表與 Eureka Server 端的注冊表不一致(hash 比對),就全量抓取注冊表覆蓋本地的注冊表。
  5. 服務(wù)下線(Cancel):Eureka Client 程序正常關(guān)閉時,會向 Eureka Server 發(fā)送下線請求,之后 Eureka Server 將這個實例從注冊表中剔除。
  6. 故障剔除(Eviction):默認(rèn)情況下,Eureka Client 連續(xù)180秒沒有向 Eureka Server 發(fā)送續(xù)約請求,就會被認(rèn)為實例故障,然后從注冊表剔除。
  7. Eureka Server 集群:Eureka Server 采用對等復(fù)制模式(Peer to Peer)來進行副本之間的數(shù)據(jù)同步,集群中每個 Server 節(jié)點都可以接收寫操作和讀操作。Server 節(jié)點接收到寫操作后(注冊、續(xù)約、下線、狀態(tài)更新)會通過后臺任務(wù)打包成批量任務(wù)發(fā)送到集群其它 Server 節(jié)點進行數(shù)據(jù)同步。Eureka Server 集群副本之間的數(shù)據(jù)會有短暫的不一致性,它是滿足 CAP 中的 AP,即 高可用性和分區(qū)容錯性。

后面將陸續(xù)介紹Eureka配置項、Eureka服務(wù)集群、Eureka源碼解析…文章來源地址http://www.zghlxwxcb.cn/news/detail-488659.html

到了這里,關(guān)于【Spring Cloud系列】- Eureka使用詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 微服務(wù)系列-基于Spring Cloud Eureka進行服務(wù)的注冊與消費

    公眾號「架構(gòu)成長指南」,專注于生產(chǎn)實踐、云原生、分布式系統(tǒng)、大數(shù)據(jù)技術(shù)分享。 使用 RestTemplate 的 Spring Boot 微服務(wù)通信示例 使用 WebClient 的 Spring Boot 微服務(wù)通信示例 使用 Spring Cloud Open Feign 的 Spring Boot 微服務(wù)通信示例 在本教程中,我們將學(xué)習(xí)如何在Spring boot微服務(wù)項

    2024年02月05日
    瀏覽(163)
  • Spring Cloud(Finchley版本)系列教程(一) 服務(wù)注冊與發(fā)現(xiàn)(eureka)

    Spring Cloud(Finchley版本)系列教程(一) 服務(wù)注冊與發(fā)現(xiàn)(eureka)

    Spring Cloud(Finchley版本)系列教程(一) 服務(wù)注冊與發(fā)現(xiàn)(eureka) 為了更好的瀏覽體驗,歡迎光顧勤奮的凱爾森同學(xué)個人博客http://www.huerpu.cc:7000 如有錯誤懇請大家批評指正,與大家共同學(xué)習(xí)、一起成長,萬分感謝。 一、構(gòu)建環(huán)境 Spring Cloud 的構(gòu)建工具可以使用 Maven 或 Gradle ,但 Ma

    2024年02月09日
    瀏覽(100)
  • 特別詳細的Spring Cloud 系列教程1:服務(wù)注冊中心Eureka的啟動

    特別詳細的Spring Cloud 系列教程1:服務(wù)注冊中心Eureka的啟動

    Eureka已經(jīng)被Spring Cloud繼承在其子項目spring-cloud-netflix中,搭建Eureka Server的方式還是非常簡單的。只需要通過一個獨立的maven工程即可搭建Eureka Server。? 我們引入spring cloud的依賴和eureka的依賴。 注意spring cloud和springboot的版本要對應(yīng),不然容易出現(xiàn)各種奇怪的錯誤。 不知道spr

    2024年04月08日
    瀏覽(103)
  • Spring Cloud - Eureka原理、注冊、搭建、應(yīng)用(全過程詳解)

    Spring Cloud - Eureka原理、注冊、搭建、應(yīng)用(全過程詳解)

    目錄 一、Eureka 注冊原理 1.1、為什么要使用 Eureka 1.2、Eureka 的工作流程及原理 1.3、eureka 的作用 二、具體實現(xiàn) 2.1、搭建注冊中心 2.2、服務(wù)注冊和部署 2.2.1、user-service 服務(wù)注冊 2.2.2、服務(wù)部署 2.2.3、order-service 服務(wù)注冊 2.2.4、驗證服務(wù) 2.3、服務(wù)發(fā)現(xiàn) 2.3.1、在order-service完成服務(wù)

    2024年02月11日
    瀏覽(294)
  • 在Spring Cloud中使用組件Zuul網(wǎng)關(guān),并注冊到Eureka中去

    在Spring Cloud中使用組件Zuul網(wǎng)關(guān),并注冊到Eureka中去

    在上一篇中,我們搭建了Spring Cloud的父子模塊,并實現(xiàn)了一個Eureka子模塊的啟動,可以通過瀏覽器地址去訪問Eureka主頁了,相信了解過的童鞋應(yīng)該看到,主頁上并未有任何服務(wù)去注冊,那么我們就在這篇,使用zuul網(wǎng)關(guān)作為第一個注冊到Eureka注冊中心的服務(wù)吧。 上一篇博文地

    2024年02月05日
    瀏覽(98)
  • 【Spring Cloud系列】Spring Cloud-網(wǎng)關(guān)Zuul詳解與實戰(zhàn)

    【Spring Cloud系列】Spring Cloud-網(wǎng)關(guān)Zuul詳解與實戰(zhàn)

    Spring Cloud Zuul 是 Spring Cloud Netflix 子項目的核心組件之一,是netflix開源的一個API Gateway服務(wù)器,本質(zhì)上有一個Web Servlet應(yīng)用,可以作為微服務(wù)架構(gòu)中的 API 網(wǎng)關(guān)使用,支持動態(tài)路由與過濾功能;網(wǎng)關(guān)為微服務(wù)提供統(tǒng)一的訪問入口;網(wǎng)關(guān)的定義類似設(shè)計模式中的門面模式,相當(dāng)于

    2024年02月08日
    瀏覽(33)
  • 【Spring Cloud系列】Hystrix應(yīng)用詳解

    【Spring Cloud系列】Hystrix應(yīng)用詳解

    在一個分布式系統(tǒng)中,每個服務(wù)都可能會調(diào)用其它的服務(wù)器,服務(wù)之間是相互調(diào)用相互依賴。假如微服務(wù)A調(diào)用微服務(wù)B和微服務(wù)C,微服務(wù)B和微服務(wù)C又調(diào)用其他的微服務(wù)。這就是構(gòu)成所謂“扇出”。 如果扇出的鏈路上某個微服務(wù)的調(diào)用響應(yīng)的時間過長或者不可用,對微服A的調(diào)

    2024年02月16日
    瀏覽(23)
  • 【Spring Cloud系列】Feign詳解與實戰(zhàn)

    【Spring Cloud系列】Feign詳解與實戰(zhàn)

    在前一章介紹了Ribbon的用法,在使用Ribbon是通過RestTemplate調(diào)用其他服務(wù)的API時,所有參數(shù)必須在請求的URL中進行拼接。如果參數(shù)過多,拼接請求字符串會導(dǎo)致效率下降。Spring Cloud提供另外一種調(diào)用API的解決方案,既使用 Spring Cloud Feign 。 Feign是一種負(fù)載均衡的HTTP客戶端,它封

    2024年02月07日
    瀏覽(47)
  • 【Spring Cloud系列】- Ribbon詳解與實戰(zhàn)

    【Spring Cloud系列】- Ribbon詳解與實戰(zhàn)

    在前面的文章 Eureka詳解與實戰(zhàn)、Eureka Client應(yīng)用、RestTemplate詳解及其負(fù)載均衡幾篇文章中,已經(jīng)介紹了Spring Cloud基本應(yīng)用,本文將從講解在進程層面的負(fù)載均衡,在Spring Cloud中如何使用Ribbon做系統(tǒng)應(yīng)用層面的負(fù)載均衡使用。 Ribbon 是netflix 公司開源的基于客戶端的負(fù)載均衡組件

    2024年02月15日
    瀏覽(20)
  • spring cloud 之 eureka

    spring cloud 之 eureka

    Spring Cloud封裝了Netflix 公司開發(fā)的Eureka模塊來實現(xiàn)服務(wù)治理,SpringCloud將它集成在其子項目spring-cloud-netflix中 在服務(wù)注冊與發(fā)現(xiàn)中,有一個注冊中心。當(dāng)服務(wù)器啟動的時候,會把當(dāng)前自己服務(wù)器的信息比如服務(wù)地址通訊地址等以別名方式注冊到注冊中心上 強調(diào)一下,eureka從2

    2024年02月12日
    瀏覽(91)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包