<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      SpringCloud-Eureka

      1. Eureka簡介

      Eureka是在Java語言上,基于Restful Api開發(fā)的服務(wù)注冊與發(fā)現(xiàn)組件,Springcloud Netflix中的重要組件。

      注冊中心可以說是微服務(wù)架構(gòu)中的”通訊錄“,它記錄了服務(wù)和服務(wù)地址的映射關(guān)系。在分布式架構(gòu)中, 服務(wù)會注冊到這里,當(dāng)服務(wù)需要調(diào)用其它服務(wù)時,就這里找到服務(wù)的地址,進(jìn)行調(diào)用。

      1. Eureka Server 服務(wù)注冊中心

        提供服務(wù)注冊和發(fā)現(xiàn)

      2. Service Provider 服務(wù)提供方

        將自身服務(wù)注冊到Eureka,從而使服務(wù)消費方能夠找到

      3. Service Consumer 服務(wù)消費方

        從Eureka獲取注冊服務(wù)列表,從而能夠消費服務(wù)

      2. 能干什么

      服務(wù)注冊中心是微服務(wù)架構(gòu)非常重要的一個組件,在微服務(wù)架構(gòu)里主要起到了協(xié)調(diào)者的一個作用。

      注冊中心一般包含如下幾個功能:

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

        服務(wù)注冊/反注冊:保存服務(wù)提供者和服務(wù)調(diào)用者的信息服務(wù)訂閱/取消訂閱:服務(wù)調(diào)用者訂閱服務(wù)提供者的信息,最好有實時推送的功能服務(wù)路由(可選):具有篩選整合服務(wù)提供者的能力。

      2. 服務(wù)配置:

        配置訂閱:服務(wù)提供者和服務(wù)調(diào)用者訂閱微服務(wù)相關(guān)的配置

        配置下發(fā):主動將配置推送給服務(wù)提供者和服務(wù)調(diào)用者

      3. 服務(wù)健康檢測

        檢測服務(wù)提供者的健康情況

      3. Quick Start

      3.1 eureka-server

      創(chuàng)建服務(wù)注冊中心

      3.1.1 引入依賴坐標(biāo)

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

      3.1.2 配置application.yml

      server:
        port: 8080
      eureka:
        instance:
          hostname: localhost
        client:
          # 是否將自己注冊到Eureka服務(wù)中,本身就是所有無需注冊
          registerWithEureka: false
          # 是否從Eureka中獲取注冊信息
          fetchRegistry: false
          # 客戶端與Eureka服務(wù)端進(jìn)行交互的地址
          serviceUrl:
            defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      

      3.1.3 配置啟動類

      //激活Eureka Server端配置
      @EnableEurekaServer
      @SpringBootApplication
      public class EurekaServerApplication {
         public static void main(String[] args) {
            SpringApplication.run(EurekaServerApplication.class, args);
         }
      }
      

      3.1.4 服務(wù)注冊中心管理后臺

      瀏覽器輸入:localhost:8080訪問注冊中心管理后臺

      3.2 eureka-client

      創(chuàng)建provider服務(wù),將服務(wù)注冊到注冊中心

      3.2.1 引入依賴坐標(biāo)

      <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-client</artifactId>
      </dependency>
      

      3.2.2 配置application.yml

      server:
        port: 8082
      spring:
        application:
          name: provider
      eureka:
        client:
          # eureka server的路徑
          serviceUrl:
            defaultZone: http://localhost:8080/eureka/
          instance:
            #使用ip注冊
            prefer-ip-address: true
      

      3.2.3 配置啟動類

      package com.ldx.provider;
      
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
      
      //開啟Eureka客戶端發(fā)現(xiàn)功能
      //@EnableDiscoveryClient 
      @SpringBootApplication
      public class ProviderApplication {
         public static void main(String[] args) {
            SpringApplication.run(ProviderApplication.class, args);
         }
      }
      

      從Spring Cloud Edgware版本開始, @EnableDiscoveryClient 或 @EnableEurekaClient 可省略。只需加上相關(guān)依賴,并進(jìn)行相應(yīng)配置,即可將微服務(wù)注冊到服務(wù)發(fā)現(xiàn)組件上。

      重復(fù)上述操作,完成consumer服務(wù)的注冊。

      3.2.4 查看注冊中心管理后臺

      如圖 兩個服務(wù)已成功注冊到服務(wù)注冊中心。

      4. Eureka中的自我保護(hù)

      微服務(wù)第一次注冊成功之后,每30秒會發(fā)送一次心跳將服務(wù)的實例信息注冊到注冊中心。通知Eureka Server該實例仍然存在。如果超過90秒沒有發(fā)送更新,則服務(wù)器將從注冊信息中將此服務(wù)移除。

      Eureka Server在運行期間,會統(tǒng)計心跳失敗的比例在15分鐘之內(nèi)是否低于85%,如果出現(xiàn)低于的情況 (在單機(jī)調(diào)試的時候很容易滿足,實際在生產(chǎn)環(huán)境上通常是由于網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致),Eureka Server會將當(dāng)前的實例注冊信息保護(hù)起來,同時提示這個警告。保護(hù)模式主要用于一組客戶端和Eureka Server 之間存在網(wǎng)絡(luò)分區(qū)場景下的保護(hù)。一旦進(jìn)入保護(hù)模式,Eureka Server將會嘗試保護(hù)其服務(wù)注冊表中的信息,不再刪除服務(wù)注冊表中的數(shù)據(jù)(也就是不會注銷任何微服務(wù)) 驗證完自我保護(hù)機(jī)制開啟后,并不會馬上呈現(xiàn)到web上,而是默認(rèn)需等待 5 分鐘(可以通過eureka.server.wait-time-in-ms-when-sync-empty 配置),即 5 分鐘后你會看到下面的提示信息:

      可以通過設(shè)置 eureka.enableSelfPreservation=false 來關(guān)閉自我保護(hù)功能。

      5. Eureka中的元數(shù)據(jù)

      Eureka的元數(shù)據(jù)有兩種:標(biāo)準(zhǔn)元數(shù)據(jù)自定義元數(shù)據(jù)

      標(biāo)準(zhǔn)元數(shù)據(jù):主機(jī)名、IP地址、端口號、狀態(tài)頁和健康檢查等信息,這些信息都會被發(fā)布在服務(wù)注 冊表中,用于服務(wù)之間的調(diào)用。

      自定義元數(shù)據(jù):可以使用eureka.instance.metadata-map配置,符合KEY/VALUE的存儲格式。這些元數(shù)據(jù)可以在遠(yuǎn)程客戶端中訪問。

      在程序中可以使用DiscoveryClient 獲取指定微服務(wù)的所有元數(shù)據(jù)信息

      在provider模塊中添加metadata配置:

      eureka:
        client:
          # eureka server的路徑
          serviceUrl:
            defaultZone: http://localhost:8080/eureka/
        instance:
          #使用ip注冊
          prefer-ip-address: true
          #添加元數(shù)據(jù)
          metadata-map:
            name: myprovider
            age: 18
      

      在consumer中添加測試類

      package com.ldx.consumer.test;
      
      import org.junit.Test;
      import org.junit.runner.RunWith;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.boot.test.context.SpringBootTest;
      import org.springframework.cloud.client.ServiceInstance;
      import org.springframework.cloud.client.discovery.DiscoveryClient;
      import org.springframework.test.context.junit4.SpringRunner;
      
      import java.util.List;
      
      @SpringBootTest
      @RunWith(SpringRunner.class)
      public class RestTemplateTest {
          @Autowired
          private DiscoveryClient discoveryClient;
      
          @Test
          public void test() {
              //根據(jù)微服務(wù)名稱從注冊中心獲取相關(guān)的元數(shù)據(jù)信息
              List<ServiceInstance> instances = discoveryClient.getInstances("provider");
              for (ServiceInstance instance : instances) {
                  System.out.println("secure:" + instance.isSecure());
                  System.out.println("scheme:" + instance.getScheme());
                  System.out.println("ubstabceId:" + instance.getInstanceId());
                  System.out.println("serviceId:" + instance.getServiceId());
                  System.out.println("host:" + instance.getHost());
                  System.out.println("port:" + instance.getPort());
                  System.out.println("uri:" + instance.getUri());
                  System.out.println("metadata:" + instance.getMetadata());
              }
              }
          }
      

      測試結(jié)果如下

      secure:false
      scheme:http
      ubstabceId:192.168.0.102:provider:8082
      serviceId:PROVIDER
      host:192.168.0.102
      port:8082
      uri:http://192.168.0.102:8082
      metadata:{name=myprovider, management.port=8082, age=18}
      

      6. Eureka的認(rèn)證

      我們啟動了Eureka Server,然后在瀏覽器中輸入http://localhost:8080/后,直接回車,就進(jìn)入了spring cloud的服務(wù)治理頁面,這么做在生產(chǎn)環(huán)境是極不安全的,下面,我們就給Eureka Server加上安全的用戶認(rèn)證。

      6.1 配置Eureka Server

      6.1.1 引入坐標(biāo)依賴

      在pom.xml中添加spring-boot-starter-seurity的依賴,該依賴為Eureka Server提供用戶認(rèn)證的能力。

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

      6.1.2 配置application.yml

      修改 application.properties 增加以下配置

      如何不進(jìn)行配置,則默認(rèn)用戶名是 user ,默認(rèn)密碼是一個隨機(jī)值,會在項目啟動時打印出來。

      spring:
        security:
          user:
            name: admin
            password: admin123
      

      6.1.3 關(guān)閉認(rèn)證

      在Eureka Server中添加如下配置類即可關(guān)閉Csrf校驗

      @Configuration
      public class EurekaConfiguration {
          /**
           * 2.1版本的security默認(rèn)加上了 csrf 攔截, 所以需要通過重寫方法, 把csrf攔截禁用
           * 不寫,客戶端無法注冊服務(wù)
           */
          @EnableWebSecurity
          static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
              @Override
              protected void configure(HttpSecurity http) throws Exception {
                  http.csrf().disable();
                  super.configure(http);
              }
          }
      
      }
      

      6.1.4 啟動項目

      啟動項目,訪問 http://localhost:8080/ 即可看見身份驗證的對話框,輸出設(shè)置的用戶名和密碼即可進(jìn)入。

      6.2 配置Eureka Client

      Eureka Server開啟認(rèn)證后,客戶端默認(rèn)情況下是無法注冊的,只有認(rèn)證才可以,當(dāng)然配置很簡單,只需修改defaultZone即可:http://${user.name}:${user.password}@${host}:${port}/eureka

      defaultZone: http://admin:admin123@localhost:8080/eureka/
      

      修改完成后啟動項目,查看控制臺

      7. 服務(wù)的監(jiān)控

      我們除了可以在Eureka控制面板中監(jiān)控微服務(wù)的狀態(tài)外,我們還可以結(jié)合springboot-admin查看服務(wù)的具體參數(shù),運行參數(shù)等

      添加模塊admin-server 主要用作監(jiān)控的服務(wù)端,被監(jiān)控的服務(wù)作為客戶端

      7.1 配置admin-server

      7.1.1 引入坐標(biāo)依賴

      <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
        <version>2.3.1</version>
      </dependency>
      <!--  
         因為admin服務(wù)也屬于微服務(wù)中的模塊,所以將admin-server注冊到Eureka中 
         這樣做還有個好處,admin-server能自動從注冊中心中獲取其他服務(wù)的信息
      -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
      </dependency>
      

      7.1.2 配置application.yml

      server:
        port: 8083
      
      spring:
        application:
          name: admin-server
          
      eureka:
        client:
          # eureka server的路徑
          serviceUrl:
            defaultZone: http://admin:admin123@localhost:8080/eureka/
        instance:
          #使用ip注冊
          prefer-ip-address: true
          # 續(xù)約更新時間間隔,一般設(shè)置比續(xù)約到期時間少,該配置表示,每隔30秒就向服務(wù)端發(fā)送心跳。
          lease-renewal-interval-in-seconds: 30
          # 續(xù)約到期時間,可以單獨給每個服務(wù)設(shè)置,如果在90秒(默認(rèn))內(nèi)沒有給服務(wù)發(fā)送心跳,則剔除該服務(wù)。
          lease-expiration-duration-in-seconds: 90
      
      # springboot-admin 相關(guān)配置
      management:
        endpoints:
          web:
            exposure:
              #開放所有頁面節(jié)點  默認(rèn)只開啟了health、info兩個節(jié)點
              include: '*'
        endpoint:
          health:
            #顯示健康具體信息  默認(rèn)不會顯示詳細(xì)信息
            show-details: always
      # 利用info端點,將版本等信息加入到springboot-admin中
      info:
        name: @project.artifactId@
        group: @project.groupId@
        version: @project.version@
        description: @project.description@
        #還可以自定義信息
        author: ldx
      

      7.1.3 修改啟動類

      添加@EnableAdminServer注解,將其標(biāo)記為admin server

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

      7.1.4 啟動項目

      啟動項目,訪問localhost:8083

      點擊應(yīng)用墻進(jìn)入admin-server詳情頁面

      在詳情頁面就可以查看服務(wù)的各種詳情信息,還可以進(jìn)入日志配置,熱修改服務(wù)的日志級別

      7.2 配置admin-client

      將其他服務(wù)注冊到admin-server中

      以provider服務(wù)為例

      7.2.1 引入依賴坐標(biāo)

      <dependency>
         <groupId>de.codecentric</groupId>
         <artifactId>spring-boot-admin-starter-client</artifactId>
      </dependency>
      

      7.2.2 配置application.yml

      server:
        port: 8082
      
      spring:
      # 不用再添加admin-server的地址了,因為服務(wù)可以通過Eureka注冊中心自動的將服務(wù)注冊到admin-server中
      #  boot:
      #    admin:
      #      client:
      #        url: http://localhost:8083
        application:
          name: provider
      
      eureka:
        client:
          # eureka server的路徑
          serviceUrl:
            defaultZone: http://admin:admin123@localhost:8080/eureka/
          # 每隔30秒就去注冊中心拉取注冊表信息。
          registry-fetch-interval-seconds: 30
          #需要將我的服務(wù)注冊到eureka上
          register-with-eureka: true
        instance:
          #使用ip注冊
          prefer-ip-address: true
          # 實例名稱  最后呈現(xiàn)地址:ip:port
          # 默認(rèn)值為:${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
          instance-id: ${spring.cloud.client.ip-address}:${server.port}
          # 續(xù)約更新時間間隔,一般設(shè)置比續(xù)約到期時間少,該配置表示,每隔30秒就向服務(wù)端發(fā)送心跳。
          lease-renewal-interval-in-seconds: 30
          # 續(xù)約到期時間,可以單獨給每個服務(wù)設(shè)置,如果在90秒(默認(rèn))內(nèi)沒有給服務(wù)發(fā)送心跳,則剔除該服務(wù)。
          lease-expiration-duration-in-seconds: 90
      
      management:
        endpoints:
          web:
            exposure:
              #開放所有頁面節(jié)點  默認(rèn)只開啟了health、info兩個節(jié)點
              include: '*'
        endpoint:
          health:
            #顯示健康具體信息  默認(rèn)不會顯示詳細(xì)信息
            show-details: always
      # 利用info端點,加入版本等信息
      info:
        name: @project.artifactId@
        group: @project.groupId@
        version: @project.version@
        description: @project.description@
        #還可以自定義信息
        author: ldx
      

      7.2.3 啟動項目

      查看admin-server控制臺

      查看服務(wù)詳情信息

      8. Eureka 服務(wù)下線

      比如有些情況是服務(wù)主機(jī)意外宕機(jī)了,也就意味著服務(wù)沒辦法給 eureka 心跳信息了,但是 eureka 在沒有接受到心跳的情況下依賴維護(hù)該服務(wù) 90s,在這 90s 之內(nèi)可能會有客戶端調(diào)用 到該服務(wù),這就可能會導(dǎo)致調(diào)用失敗。所以我們必須要有一個機(jī)制能手動的立馬把宕機(jī)的服 務(wù)從 eureka 服務(wù)列表中清除掉,避免被服務(wù)調(diào)用方調(diào)用到。

      8.1 確定需要強(qiáng)行剔除的服務(wù)

      8.2 執(zhí)行接口

      Eureka 提供了下線接口 用delete 方式請求

      http://{ip}:{port}/eureka/apps/服務(wù)名/應(yīng)用id

      8.3 查看Eureka控制臺

      刷新eureka 發(fā)現(xiàn)服務(wù)消失了

      但是我們沒有停止服務(wù),等一會因為心跳會重新注冊的

      9. Eureka 高可用

      高可用是在服務(wù)架構(gòu)設(shè)計中,頻繁出現(xiàn)的詞匯。微服務(wù)架構(gòu)里自然也一樣需要保證服務(wù)的高可用性,所以本小節(jié)將簡單說明一下Eureka是如何實現(xiàn)高可用的。

      在實際生產(chǎn)環(huán)境中服務(wù)器是很脆弱的,單臺服務(wù)器肯定是無法滿足高可用的需求,為了保證高可用性我們通常會準(zhǔn)備多臺服務(wù)器。但可以發(fā)現(xiàn)上文中所搭建的eureka server是單機(jī)的,若這個eureka server宕機(jī),則會導(dǎo)致與之關(guān)聯(lián)的全部微服務(wù)發(fā)生故障。

      在微服務(wù)中我們要考慮到發(fā)生故障的情況,所以說對服務(wù)注冊中心也要進(jìn)行高可用部署。

      官方對于Eureka 高可用的描述:

      Eureka can be made even more resilient and available by running multiple instances and asking them to register with each other. In fact, this is the default behaviour, so all you need to do to make it work is add a valid serviceUrl to a peer, e.g.

      就是通過多個eureka實例進(jìn)行互相注冊,然后修改每個實例的serviceUrl即可。Eureka Server的高可用實際上就是將自己作為服務(wù)向其他服務(wù)注冊中心注冊自己,這樣就可以形成一組互相注冊的服務(wù)注冊中心,以實現(xiàn)服務(wù)清單的互相同步,達(dá)到高可用的效果。

      9.1 單點配置

      之前eureka-server的單點配置

      不讓服務(wù)注冊中心注冊自己

      server:
        port: 8080
      eureka:
        instance:
          hostname: localhost
        client:
          # 是否將自己注冊到Eureka服務(wù)中,本身就是所有無需注冊
          registerWithEureka: false
          # 是否從Eureka中獲取注冊信息
          fetchRegistry: false
          # 客戶端與Eureka服務(wù)端進(jìn)行交互的地址
          serviceUrl:
            defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      

      9.2 高可用配置

      如果有三個Eureka,則每一個EurekaServer都需要注冊到其它幾個Eureka服務(wù)中,例如:有三個分別為8066、 8077、8088,則:

      8066要注冊到8077和8088上

      8077要注冊到8066和8088上

      8088要注冊到8066和8077上

      動手搭建高可用的EurekaServer

      9.2.1 創(chuàng)建三份application.yml

      修改hosts文件 添加peer1,peer2,peer3 域名

      application-8066.yml

      設(shè)置port為8066,hostname為peer1,application.name為eureka-server,并將其注冊到peer2和peer3中其余基本都為默認(rèn)配置

      必須將eureka.client.registerWithEureka 和 eureka.client.fetchRegistry 設(shè)置為true

      server:
        port: 8066
      eureka:
        instance:
          hostname: peer1
        client:
          # 是否將自己注冊到Eureka服務(wù)中
          registerWithEureka: true
          # 是否從Eureka中獲取注冊信息
          fetchRegistry: true
          # 客戶端與Eureka服務(wù)端進(jìn)行交互的地址
          serviceUrl:
            defaultZone: http://admin:admin123@peer2:8077/eureka/,http://admin:admin123@peer3:8088/eureka/
        server:
          #自我保護(hù)模式,當(dāng)出現(xiàn)出現(xiàn)網(wǎng)絡(luò)分區(qū)、eureka 在短時間內(nèi)丟失過多客戶端時,會進(jìn)入自我保護(hù)模式
          #即一個服務(wù)長時間沒有發(fā)送心跳,eureka 也不會將其刪 除,默認(rèn)為 true
          enable-self-preservation: true
          #Eureka Server 在運行期間會去統(tǒng)計心跳失敗比例在 15 分鐘之內(nèi)是否低 于 85%
          #如果低于 85%,Eureka Server 會將這些實例保護(hù)起來
          renewal-percent-threshold: 0.85
          #eureka server 清理無效節(jié)點的時間間隔,默認(rèn) 60000 毫秒,即 60 秒
          eviction-interval-timer-in-ms: 60000
      
      spring:
        security:
          user:
            name: admin
            password: admin123
        application:
          name: eureka-server
      
      application-8077.yml

      設(shè)置port為8077,hostname為peer2,application.name為eureka-server,并將其注冊到peer1和peer3中其余基本都為默認(rèn)配置

      必須將eureka.client.registerWithEureka 和 eureka.client.fetchRegistry 設(shè)置為true

      server:
        port: 8077
      eureka:
        instance:
          hostname: peer2
        client:
          # 是否將自己注冊到Eureka服務(wù)中,本身就是所有無需注冊
          registerWithEureka: true
          # 是否從Eureka中獲取注冊信息
          fetchRegistry: true
          # 客戶端與Eureka服務(wù)端進(jìn)行交互的地址
          serviceUrl:
            defaultZone: http://admin:admin123@peer1:8066/eureka/,http://admin:admin123@peer3:8088/eureka/
        server:
          #自我保護(hù)模式,當(dāng)出現(xiàn)出現(xiàn)網(wǎng)絡(luò)分區(qū)、eureka 在短時間內(nèi)丟失過多客戶端時,會進(jìn)入自我保護(hù)模式
          #即一個服務(wù)長時間沒有發(fā)送心跳,eureka 也不會將其刪 除,默認(rèn)為 true
          enable-self-preservation: true
          #Eureka Server 在運行期間會去統(tǒng)計心跳失敗比例在 15 分鐘之內(nèi)是否低 于 85%
          #如果低于 85%,Eureka Server 會將這些實例保護(hù)起來
          renewal-percent-threshold: 0.85
          #eureka server 清理無效節(jié)點的時間間隔,默認(rèn) 60000 毫秒,即 60 秒
          eviction-interval-timer-in-ms: 60000
      
      spring:
        security:
          user:
            name: admin
            password: admin123
        application:
          name: eureka-server
      
      application-8088.yml

      設(shè)置port為8088,hostname為peer3,application.name為eureka-server,并將其注冊到peer1和peer2中其余基本都為默認(rèn)配置

      必須將eureka.client.registerWithEureka 和 eureka.client.fetchRegistry 設(shè)置為true

      server:
        port: 8088
      eureka:
        instance:
          hostname: peer3
        client:
          # 是否將自己注冊到Eureka服務(wù)中,本身就是所有無需注冊
          registerWithEureka: true
          # 是否從Eureka中獲取注冊信息
          fetchRegistry: true
          # 客戶端與Eureka服務(wù)端進(jìn)行交互的地址
          serviceUrl:
            defaultZone: http://admin:admin123@peer1:8066/eureka/,http://admin:admin123@peer2:8077/eureka/
        server:
          #自我保護(hù)模式,當(dāng)出現(xiàn)出現(xiàn)網(wǎng)絡(luò)分區(qū)、eureka 在短時間內(nèi)丟失過多客戶端時,會進(jìn)入自我保護(hù)模式
          #即一個服務(wù)長時間沒有發(fā)送心跳,eureka 也不會將其刪 除,默認(rèn)為 true
          enable-self-preservation: true
          #Eureka Server 在運行期間會去統(tǒng)計心跳失敗比例在 15 分鐘之內(nèi)是否低 于 85%
          #如果低于 85%,Eureka Server 會將這些實例保護(hù)起來
          renewal-percent-threshold: 0.85
          #eureka server 清理無效節(jié)點的時間間隔,默認(rèn) 60000 毫秒,即 60 秒
          eviction-interval-timer-in-ms: 60000
      
      spring:
        security:
          user:
            name: admin
            password: admin123
        application:
          name: eureka-server
      
      注意

      Eureka高可用部署,啟動多個注冊中心后,節(jié)點均出現(xiàn)在unavailable-replicas,查閱各類資料測試,提供方案

      1. eureka.client.serviceUrl.defaultZone配置項的地址,不能使用localhost,要使用域名(測試使用ip也不行,不知道是不是因為單機(jī)測試的問題,最好還是用域名)。
      2. spring.application.name要一致,不然注冊的client服務(wù)只能發(fā)現(xiàn)配置第一個server。
      3. fetch-registry、register-with-eureka 都需要設(shè)置為true,要不然集群服務(wù)器數(shù)據(jù)不同步。

      9.2.2 創(chuàng)建相應(yīng)的啟動模板

      創(chuàng)建三個對應(yīng)的啟動模板

      9.2.3 啟動程序

      9.2.4 訪問注冊中心

      瀏覽器輸入 localhost:8066輸入認(rèn)證信息

      顯示有兩個可用的副本,當(dāng)然也可以訪問8077,8088 內(nèi)容類似 都展示了其他兩個的副本

      9.2.5 客戶端配置

      以provider模塊為例

      為defaultZone 參數(shù)添加集群配置,將其注冊到多個server中

      此時如果斷開8866,則provider也會向8077上注冊。所以依然能夠訪問到provider服務(wù),從而實現(xiàn)服務(wù)注冊中心的高可用。

      server:
        port: 8082
      
      spring:
        application:
          name: provider
      
      eureka:
        client:
          # eureka server的路徑
          serviceUrl:
            defaultZone: http://admin:admin123@peer1:8066/eureka/,http://admin:admin123@peer2:8077/eureka/,http://admin:admin123@peer3:8088/eureka/
          # 每隔30秒就去注冊中心拉取注冊表信息。
          registry-fetch-interval-seconds: 30
          #需要將我的服務(wù)注冊到eureka上
          register-with-eureka: true
        instance:
          #使用ip注冊
          prefer-ip-address: true
          # 實例名稱  最后呈現(xiàn)地址:ip:port
          # 默認(rèn)值為:${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
          instance-id: ${spring.cloud.client.ip-address}:${server.port}
          # 續(xù)約更新時間間隔,一般設(shè)置比續(xù)約到期時間少,該配置表示,每隔30秒就向服務(wù)端發(fā)送心跳。
          lease-renewal-interval-in-seconds: 30
          # 續(xù)約到期時間,可以單獨給每個服務(wù)設(shè)置,如果在90秒(默認(rèn))內(nèi)沒有給服務(wù)發(fā)送心跳,則剔除該服務(wù)。
          lease-expiration-duration-in-seconds: 90
      
      management:
        endpoints:
          web:
            exposure:
              #開放所有頁面節(jié)點  默認(rèn)只開啟了health、info兩個節(jié)點
              include: '*'
        endpoint:
          health:
            #顯示健康具體信息  默認(rèn)不會顯示詳細(xì)信息
            show-details: always
      # 利用info端點,加入版本等信息
      info:
        name: @project.artifactId@
        group: @project.groupId@
        version: @project.version@
        description: @project.description@
        #還可以自定義信息
        author: ldx
      

      10. 配置屬性

      名稱 默認(rèn) 描述
      eureka.client.eureka-connection-idle-timeout-seconds 30 指示與eureka服務(wù)器的HTTP連接在關(guān)閉之前可以保持空閑狀態(tài)的時間(以秒為單位)。在AWS環(huán)境中,建議將該值設(shè)置為30秒或更短,因為防火墻會在幾分鐘后清除連接信息,使連接處于混亂狀態(tài),從而清理連接信息。
      eureka.client.eureka-server-connect-timeout-seconds 5 指示與eureka服務(wù)器的連接需要超時之前要等待的時間(以秒為單位)。請注意,客戶端中的連接由org.apache.http.client.HttpClient池化,此設(shè)置影響實際的連接創(chuàng)建以及從池中獲取連接的等待時間。
      eureka.client.eureka-server-d-n-s-name 獲取要查詢以獲取eureka服務(wù)器列表的DNS名稱。如果合同通過實現(xiàn)serviceUrls返回服務(wù)URL,則不需要此信息。當(dāng)useDnsForFetchingServiceUrls設(shè)置為true且eureka客戶端希望DNS以某種方式配置時,將使用DNS機(jī)制,以便它可以動態(tài)獲取更改的eureka服務(wù)器。這些更改在運行時有效。
      eureka.client.eureka-server-port 當(dāng)eureka服務(wù)器列表來自DNS時,獲取用于構(gòu)造服務(wù)URL以便與eureka服務(wù)器聯(lián)系的端口。如果合同返回服務(wù)URL eurekaServerServiceUrls(String),則不需要此信息。當(dāng)useDnsForFetchingServiceUrls設(shè)置為true且eureka客戶端希望DNS以某種方式配置時,將使用DNS機(jī)制,以便它可以動態(tài)獲取更改的eureka服務(wù)器。這些更改在運行時有效。
      eureka.client.eureka-server-read-timeout-seconds 8 指示從尤里卡服務(wù)器讀取超時需要等待多長時間(以秒為單位)。
      eureka.client.eureka-server-total-connections 200 獲取從eureka客戶端到所有eureka服務(wù)器的允許的連接總數(shù)。
      eureka.client.eureka-server-total-connections-per-host 50 獲取從eureka客戶端到eureka服務(wù)器主機(jī)的允許的連接總數(shù)。
      eureka.client.eureka-server-url-context 當(dāng)eureka服務(wù)器列表來自DNS時,獲取用于構(gòu)造服務(wù)URL以便與eureka服務(wù)器聯(lián)系的URL上下文。如果合同從eurekaServerServiceUrls返回服務(wù)URL,則不需要此信息。當(dāng)useDnsForFetchingServiceUrls設(shè)置為true且eureka客戶端希望DNS以某種方式配置時,將使用DNS機(jī)制,以便它可以動態(tài)獲取更改的eureka服務(wù)器。這些更改在運行時有效。
      eureka.client.eureka-service-url-poll-interval-seconds 0 指示輪詢尤里卡服務(wù)器信息更改的頻率(以秒為單位)。可以添加或刪除Eureka服務(wù)器,并且此設(shè)置控制eureka客戶端應(yīng)該多久知道一次。
      eureka.client.prefer-same-zone-eureka true 指示此實例是否應(yīng)出于延遲和/或其他原因嘗試在同一區(qū)域中使用eureka服務(wù)器。理想情況下,將eureka客戶端配置為與同一區(qū)域中的服務(wù)器進(jìn)行通信,這些更改在運行時在下一個注冊表獲取周期生效(如registryFetchIntervalSeconds所指定)
      eureka.client.register-with-eureka true 指示此實例是否應(yīng)在eureka服務(wù)器上注冊其信息以供他人發(fā)現(xiàn)。在某些情況下,您不希望發(fā)現(xiàn)實例,而只希望發(fā)現(xiàn)其他實例。
      eureka.server.peer-eureka-nodes-update-interval-ms 0
      eureka.server.peer-eureka-status-refresh-time-interval-ms 0
      ribbon.eureka.enabled true 允許將Eureka與功能區(qū)一起使用。
      spring.cloud.loadbalancer.eureka.approximate-zone-from-hostname false 用于確定是否應(yīng)嘗試zone從主機(jī)名獲取值。
      posted @ 2022-03-22 22:52  張鐵牛  閱讀(608)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲tv在线观看 | 精品久久久噜噜噜久久久 | 国产欧美另类精品久久久| 国产亚洲精品第一综合另类| 国产不卡一区在线视频| 中文字幕日韩国产精品| 色综合久久久久综合体桃花网| 国产午夜亚洲精品国产成人| 日韩亚洲国产中文字幕欧美| 国产福利深夜在线播放| 亚洲女人的天堂在线观看| 亚洲一区二区三区av链接| 麻豆国产传媒精品视频| 国产精品无码专区| 日韩精品一区二区亚洲专区| 亚洲欧美自偷自拍视频图片| 噜妇插内射精品| a级国产乱理伦片在线观看al| 亚洲中文无码av永久不收费| 中文字幕日韩精品有码| 热久久这里只有精品99| 欧美日本中文| 日本久久99成人网站| 国精品午夜福利不卡视频| 久久精品伊人狠狠大香网| 中文字幕国产精品二区| 日本高清中文字幕免费一区二区 | 99久久夜色精品国产亚洲| www射我里面在线观看| 国产欧美日韩高清在线不卡| 日韩区二区三区中文字幕| 少妇仑乱a毛片无码| 99国产欧美另类久久久精品| 国精品91人妻无码一区二区三区| 乱码中字在线观看一二区| 极品尤物被啪到呻吟喷水 | 一区二区亚洲精品国产精| 国产一区二区三区高清在线观看| 国产丰满乱子伦无码专区| 国产成人99亚洲综合精品| 99精品国产综合久久久久五月天|