SpringCloud Eureka服務註冊與發現

首先Eureka是什麼?  java

  Eureka是Netflix的一個子模塊,也是核心模塊之一,Eureka是一個基於REST的服務,用於定位服務,以實現雲端中層服務發現和故障轉移。服務註冊與發現對於微服務架構來講是很是重要的,有了服務發現與註冊,只須要使用服務的標識符,就能夠訪問到服務,兒不須要修改服務調用的配置文件了。功能相似於dubbo的註冊中心,好比Zookeeper。spring

  Eureka主管服務的註冊與發現。apache

  Netflix在設計時遵照ap原則即:高可用高容錯網絡

Eureka的註冊:架構

  要將服務註冊到Eureka上app

    1.在pom.xml里加入maven

     

<!--將微服務provider註冊進eureka-->
        <dependency>    
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

    2.applicati.yml文件
      eureka:
        client: #將客戶端註冊金eureka服務列表內
          service-url: defaultZone: http://localhost:6001/eureka

    3.在啓動類上加上@EnableEurekaClient註解ide

Eureka的自我保護:spring-boot

 eureka的自我保護就是:微服務

    默認狀況下,若是EurekaServer在必定時間內沒有接收到某個微服務實例的心跳,EurekaServer將會註銷實例(默認90s)。可是當網絡分區故障發生時,微服務與EurekaServer之間沒法正常通訊,以上行爲可能變得很是危險了--由於微服務自己其實時健康的,此時不該該註銷這個微服務。Eureka用過「自我保護模式」來解決這個問題--當EurekaServer節點在短期內丟失過多客戶端時(可能發生了網絡分區故障),那麼這個節點就會進入自我保護模式。一旦進入自我保護模式,EurekaServer節點會保護註冊表中的信息,再也不刪除服務註冊表中的數據。當網絡恢復時自動推出自我保護模式。

    一句話歸納:某一時刻某一個微服務不可用了,eureka不會馬上清理,依舊會對該服務的信息進行保存

 如果想要關閉:(不建議關閉)
    eureka:
      server:
        enable-self-preservation: false #禁用自我保護機制

  故障演示:

   

細節修改:

  修改前:(注意藍色字體部分)

  修改後:

  1.主機名稱:服務名稱修改
    當前問題
    localhost:microservice-product:8001
    在要入住eureka的服務的yml配置文件中的eureka下加上
      instance:
      instanceID: ${spring.application.name}:${server.port} # 指定實例ID 不顯示主機名
    修改以後名稱變爲
      microservice-product:8001(本身想要的名稱)
  2. 訪問信息有ip信息提示
      當前問題:沒有ip提示
      在要入住eureka的服務的yml配置文件中的下加上
        prefer-ip-address: true
  3.微服務info內容詳細信息
      當前問題:超連接點擊服務報告ErrorPage
      1.修改要入住eureka的服務的pom.xml文件:
      添加:
      <!--actuator監控信息完善-->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>
      2.總的父工程修改pom.xml添加構建build信息
        <build>
          <finalName>microservice-cloud-01</finalName>
          <resources>
            <resource>
              <directory>src/main/resources</directory>
              <filtering>true</filtering>
            </resource>
          </resources>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-resources-plugin</artifactId>
              <configuration>
                <delimiters>
                  <delimiter>$</delimiter>
                </delimiters>
              </configuration>
            </plugin>
          </plugins>
        </build>
    3.修改要入住eureka的服務的.yml文件:
      info:
        app.name: yqk-microservice-cloud-01
        company.name: www.kgc.com
        build.artifactId: $project.artifactId$
        build.version: $project.version$

 Eureka的集羣配置:

配置前:

配置後:

  1.新建工程6002  2.按照6001爲模板修改pom配置文件  3.修改主啓動類  4.修改映射配置    修改C:\Windows\System32\drivers\etc 下host文件    127.0.0.1 eureka6001.com   (即把localhost改成eureka6001.com)    127.0.0.1 eureka6002.com  5.修改yml文件    server:       port: 6002    eureka:       #server:         #enable-self-preservation: false #禁用自我保護機制       instance:         hostname: eureka6002.com #eureka服務端的實例名稱       client:         register-with-eureka: false #false不向註冊中心註冊本身         fetch-registry: false #false表示本身就是註冊中心,個人職責是維護服務實例,並不去檢索服務         service-url:         #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與eureka server交互的地址查詢服務和註冊服務都依賴這個地址         defaultZone: http://eureka6001.com:6001/eureka  4.修改要入住eureka的服務的yml配置文件    eureka:       client: #將客戶端註冊金eureka服務列表內       service-url:       defaultZone: http://eureka6001.com:6001/eureka/,http://eureka6002.com:6002/eureka/

相關文章
相關標籤/搜索