<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Eureka服務(wù)注冊中心(高級)

          共 6450字,需瀏覽 13分鐘

           ·

          2021-09-15 17:00


          1.Eureka server 高可用集群

          在上一個章節(jié),實現(xiàn)了單節(jié)點的Eureka Server的服務(wù)注冊與服務(wù)發(fā)現(xiàn)功能。Eureka Client會定時連接Eureka Server ,獲取注冊表中的信息并緩存到本地。微服務(wù)在消費遠(yuǎn)程API時總是使用本地緩存中的數(shù)據(jù)。因此一般來說,即使Eureka Server發(fā)生宕機(jī),也不會影響到服務(wù)之間的調(diào)用。但如果EurekaServer宕機(jī)時,某些微服務(wù)也出現(xiàn)了不可用的情況, Eureka Server中的緩存若不被刷新,就可能會影響到微服務(wù)的調(diào)用,甚至影響到整個應(yīng)用系統(tǒng)的高可用。因此,在生成環(huán)境中,通常會部署一個高可用的Eureka Server集群。


          Eureka Server可以通過運行多個實例并相互注冊的方式實現(xiàn)高可用部署, Eureka Server實例會彼此增量地同步信息,從而確保所有節(jié)點數(shù)據(jù)一致。事實上,節(jié)點之間相互注冊是Eureka Server的默認(rèn)行為。


          大概:


          簡單的說:

          部署多個eureka server 節(jié)點集群,互相同步數(shù)據(jù)備份等,

          當(dāng)一個eureka server宕機(jī)后,另一個節(jié)點的eureka server繼續(xù)提供服務(wù),達(dá)到高可用的狀態(tài)。


          2. eureka server 注冊中心之間相互注冊

          1.準(zhǔn)備2個eureka server ,需要相互注冊與發(fā)現(xiàn)

          • eureka server節(jié)點1 端口9000

          • eureka server節(jié)點2 端口8000

          2.將多個服務(wù)注冊到多個eureka server中


          以下是步驟實現(xiàn):


          1.準(zhǔn)備2個eureka server ,需要相互注冊與發(fā)現(xiàn)

          eureka server 節(jié)點1工程yml配置文件

          server:
            port: 9000
          spring:
            application:
              name: server-eureka #注冊中心節(jié)點1服務(wù)名稱

          # 配置 eureka server 注冊中心
          eureka:
            instance:
              hostname: localhost
            client:
              #register-with-eureka-: false #是否將自己注冊到注冊中心 (默認(rèn)為true)
              #fetch-register: false  #是否從eureka中獲取注冊信息
              serviceUrl: #配置暴露給eureka client的請求地址
                defaultZone: http://${eureka.instance.hostname}:8000/eureka/ #注冊到節(jié)點2 server上

          eureka server 節(jié)點12工程yml配置文件

          server:
            port: 8000
          spring:
            application:
              name: server-eureka2 #注冊中心節(jié)點2服務(wù)名稱

          # 配置 eureka server 注冊中心
          eureka:
            instance:
              hostname: localhost
            client:
              #register-with-eureka-: false #是否將自己注冊到注冊中心 (默認(rèn)為true)
              #fetch-register: false  #是否從eureka中獲取注冊信息
              serviceUrl: #配置暴露給eureka client的請求地址
                defaultZone: http://${eureka.instance.hostname}:9000/eureka/ # 注冊到節(jié)點1 server上

          以上配置實現(xiàn)兩個eureka server的服務(wù)互相注冊與發(fā)現(xiàn)。


          啟動兩個節(jié)點后:

          訪問eureka server節(jié)點1

          訪問eureka server節(jié)點2


          2.服務(wù)注冊到多個eureka server中

          訂單工程服務(wù)(服務(wù)消費者)注冊到多個eureka server中

          server:
            port: 9002
          spring:
            application:
              name: service-order #訂單服務(wù)名稱(服務(wù)消費者)
          # 配置 eureka 服務(wù)注冊與發(fā)現(xiàn) (看這里!!!!)
          eureka:
            client:
              service-url:
                defaultZone: http://localhost:9000/eureka/,http://localhost:8000/eureka/ # 向多個注冊中心注冊服務(wù)(逗號分割)
            instance:
              prefer-ip-address: true # 使用ip地址注冊


          商品工程服務(wù)(服務(wù)提供者)注冊到多個eureka server中

          server:
            port: 9001
          spring:
            application:
              name: service-product #商品服務(wù)名稱(服務(wù)提供者)
          # 配置 eureka
          eureka:
            client:
              service-url:
                defaultZone: http://localhost:9000/eureka/,http://localhost:8080/eureka/ # 向多個注冊中心注冊地址
            instance:
              prefer-ip-address: true # 使用ip地址注冊

          測試,停止注冊中心節(jié)點2,模擬節(jié)點2宕機(jī)。

          一個eureka server節(jié)點宕機(jī)了,另一個eureka server還在服務(wù),并不影響整個服務(wù)的運行,從而保證了服務(wù)高可用。


          提示:

          只要兩個注冊中心互相注冊,就可默認(rèn)自動實現(xiàn)兩個節(jié)點之間的服務(wù)列表信息同步,但是最好還是在服務(wù)提供者注冊到多個注冊中心節(jié)點集群里好一些。



          3.Eureka常見問題

          1.控制臺顯示服務(wù)ip

          在服務(wù)提供者工程中修改顯示id

          server:
            port: 9001
          spring:
            application:
              name: service-product #商品服務(wù)名稱(服務(wù)提供者)
          # 配置 eureka
          eureka:
            client:
              service-url:
                defaultZone: http://localhost:9000/eureka/,http://localhost:8080/eureka/ # 向多個注冊中心注冊地址
            instance:
              prefer-ip-address: true # 使用ip地址注冊
              # 看這里,解決在控制臺顯示服務(wù)的ip和端口組成的請求地址
              instance-id: ${spring.cloud.client.ip-address}:${server.port} #向注冊中心注冊id(服務(wù)ip請求路徑)



          2.Eureka的服務(wù)剔除問題


          健康檢查:

          • 默認(rèn)30秒給注冊中心發(fā)送心跳

          • 90秒內(nèi)續(xù)約到期時間


          在已經(jīng)注冊的微服務(wù)列表中,微服務(wù)會默認(rèn)30秒給注冊中心發(fā)送一次心跳,證明我還活著,90秒內(nèi)沒有發(fā)送心跳(續(xù)約到期時間),證明該微服務(wù)已經(jīng)宕機(jī),那么就需要注冊中心及時剔除掉宕機(jī)微服務(wù)地址信息,注冊中心會自動剔除宕機(jī)的服務(wù)信息。


          大概:


          解決:

          在服務(wù)提供者工程yml設(shè)置發(fā)送心跳時間間隔和續(xù)約時間。

          server:
            port: 9001
          spring:
            application:
              name: service-product #商品服務(wù)名稱(服務(wù)提供者)
          # 配置 eureka
          eureka:
            client:
              service-url:
                defaultZone: http://localhost:9000/eureka/,http://localhost:8080/eureka/ # 向多個注冊中心注冊地址
            instance:
              prefer-ip-address: true # 使用ip地址注冊
              # 解決在控制臺顯示服務(wù)的ip和端口組成的請求地址
              instance-id: ${spring.cloud.client.ip-address}:${server.port} #向注冊中心注冊id(服務(wù)ip請求路徑)
              #看這里,發(fā)送心跳間隔與續(xù)約到期時間設(shè)置
              lease-renewal-interval-in-seconds: 5 #間隔5秒發(fā)送心跳給注冊中心
              lease-expiration-duration-in-seconds: 10 #續(xù)約到期時間 10秒沒發(fā)送心跳代表我宕機(jī)

          微服務(wù)每隔5秒給注冊中心發(fā)送心跳證明活著,如果10秒我沒發(fā)送心跳,證明我宕機(jī)了。


          服務(wù)提供者微服務(wù)宕機(jī)后,注冊中心會自動剔除該微服務(wù)。

          服務(wù)提供者正常運行時:

          停止服務(wù)提供者模擬宕機(jī):


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

          一般不建議用。

          eureka server注冊中心會自動檢測統(tǒng)計所有的微服務(wù)發(fā)送過來的心跳效率是否在85%以上,如果低于85%,則eureka自動開啟自我保護(hù)機(jī)制,不再剔除已經(jīng)注冊的微服務(wù)列表信息,如果某些微服務(wù)宕機(jī)了,但是微服務(wù)列表仍然存在信息,那么就不恰當(dāng),所以不建議使用自我保護(hù)機(jī)制。


          注冊中心關(guān)閉自我保護(hù)機(jī)制:

          server:
            port: 9000
          spring:
            application:
              name: server-eureka #注冊中心節(jié)點1服務(wù)名稱
          # 配置 eureka server 注冊中心
          eureka:
            instance:
              hostname: localhost
            client:
              #register-with-eureka-: false #是否將自己注冊到注冊中心 (默認(rèn)為true)
              #fetch-register: false  #是否從eureka中獲取注冊信息
              serviceUrl: #配置暴露給eureka client的請求地址
                defaultZone: http://${eureka.instance.hostname}:8000/eureka/ #注冊到節(jié)點2 server上
            # 看這里,關(guān)閉eureka server 自我保護(hù)機(jī)制
            server:
              enable-self-preservation: false # 關(guān)閉自我保護(hù)機(jī)制 (默認(rèn)是開啟的)
              eviction-interval-timer-in-ms: 4000 # 剔除服務(wù)間隔(4秒掃碼刪除一次宕機(jī)的服務(wù)信息)

          在開發(fā)測試階段縮短服務(wù)剔除間隔時間,能夠更快的得到服務(wù)數(shù)據(jù),上線可刪掉,使用默認(rèn)的時間。



          最后:

          測試項目工程結(jié)構(gòu)展示:

          聚合maven工程包含的是SpringBoot子工程


          4.總結(jié):

          到此,你已經(jīng)學(xué)會了如何使用Eureka server作為注冊中心,以及解決服務(wù)的注冊與發(fā)現(xiàn)的問題,我們注重的是yml的配置,來實現(xiàn)Erueka的服務(wù)發(fā)現(xiàn)與注冊。





          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美日韩中文在线视频 | 操B免费看 | 俺来也久草国产在线视频 | 五月激情丁香婷婷 | 97伊人|