<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## **1. 為什么要用注冊中心** 1. 微服務數量眾多,要進行遠程調用就需要知道服務端的ip地址和端口,注冊中心幫助我們管理這些服務 的ip和端口。 2. 微服務會實時上報自己的狀態,注冊中心統一管理這些微服務的狀態,將存在問題的服務踢出服務列 表,客戶端獲取到可用的服務進行調用。 ## 2. **Eureka簡介** 1. Spring Cloud Eureka 是對Netflix公司的Eureka的二次封裝,它實現了服務治理的功能。 2. Spring Cloud Eureka 提供 **Eureka Server 服務端**與 **Eureka Client 客戶端** ,服務端即是Eureka服務注冊中心,客戶端完成微服務向**Eureka服務的注冊與發現。** 下圖顯示了 Eureka Server 與 Eureka Client 的關系 ![](https://img.kancloud.cn/f6/f6/f6f6ca86a31d4f2c20a04a6e9b17d316_945x460.png) 如圖所示, 1. 對于web應用程序來說,server和client都是Eureka client。 2. **web應用服務端**向Eureka server注冊自己的服務信息(ip和端口號) 3. **web應用客戶端**向Eureka server查詢服務端的信息,然后進行訪問 ## **3. 搭建單機版 Eureka Server 服務注冊中心** ### 3.1 創建Eureka 服務端工程 1. ide創建Eureka server工程,maven模塊 ![](https://img.kancloud.cn/00/bd/00bda647b5512fdcc6851b544a5f645e_774x521.png) ![](https://img.kancloud.cn/74/0a/740aa4725cb21170ed9e218aef1f16c4_734x552.png) ![](https://img.kancloud.cn/5a/36/5a36dfd9e55e495781339bb9ed5fc4b2_734x552.png) ![](https://img.kancloud.cn/ff/d6/ffd638d5ddc8ad7c163b6665fcdbfe1d_320x255.png) **2. 修改pom,導入Eureka server依賴啟動器** ~~~ ... <dependencies> <!--導入Eureka 服務端依賴--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> </project> ~~~ **3. 配置 application.yml 文件** ~~~ server: port: 6001 # 服務端口 eureka: instance: hostname: eureka6001.com # eureka服務端的實例名稱 client: registerWithEureka: false # 服務注冊,false表示不將自已注冊到Eureka服務中 fetchRegistry: false # 服務發現,false表示自己不從Eureka服務中獲取注冊信息 serviceUrl: # Eureka客戶端與Eureka服務端的交互地址,集群版配置對方的地址,單機版配置自己(如果不配置則默認本機8761端口) defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ server: enable-self-preservation: false # 禁用自我保護機制 ~~~ **4. 創建啟動類** 在啟動類上用`@EnableEurekaServer`注解標識Eureka注冊中心 ~~~ package com.tuna.springcloud.eureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @EnableEurekaServer //標識一個Eureka Server 服務注冊中心 @SpringBootApplication public class EurekaServer_6001 { public static void main(String[] args) { SpringApplication.run(EurekaServer_6001.class, args); } } ~~~ ### 3.2 啟動Eureka工程并測試 [http://localhost:6001/](http://localhost:6001/) 或者[http://eureka6001.com:6001/](http://eureka6001.com:6001/) ![](https://img.kancloud.cn/71/70/7170a12b09339c6678d5d8b753c7b379_823x609.png) 上圖還沒有Eureka客戶端進行注冊 ## **4. 服務注冊到 Eureka Server 服務注冊中心** **將web應用程序服務端注冊到Eureka Server** ![](https://img.kancloud.cn/e4/4a/e44a08b32acfc27abee50afea4cab9aa_1010x297.png) **1. 修改web服務端pom,引入eureka-client 啟動器** ``` <!-- 導入Eureka客戶端的依賴,將 微服務提供者 注冊進 Eureka --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> ``` **2. 配置 application.yml 文件,向Eureka server注冊自己的服務信息** ~~~ eureka: client: registerWithEureka: true # 服務注冊開關 fetchRegistry: false #服務發現開關 serviceUrl: # 注冊到哪一個Eureka Server服務注冊中心,多個中間用逗號分隔 defaultZone: http://localhost:6001/eureka instance: instanceId: ${spring.application.name}:${server.port} # 等價于microservice-product:8001 # prefer-ip-address: true #訪問路徑就會顯示成IP地址 ~~~ **3. 啟動類上加`@EnableEurekaClient` 注解,本服務啟動后會自動注冊進Eureka中心** ~~~ package com.tuna.springcloud.server; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableEurekaClient @MapperScan("com.tuna.springcloud.server.mapper") @SpringBootApplication public class ProductProvider_8001 { public static void main(String[] args) { SpringApplication.run(ProductProvider_8001.class, args); } } ~~~ **4. 啟動服務** 有圖看到,web server已經注冊到Eureka ![](https://img.kancloud.cn/d9/3b/d93b47ceba02155f1f79686748ce8b3e_1123x476.png) ### 解決訪問路徑顯示ip 鼠標放在Eureka client上邊時,不顯示ip ![](https://img.kancloud.cn/ec/01/ec01c9ef66dd8587874dd681f41efae1_1184x493.png) 客戶端yml配置prefer-ip-address: true ~~~ prefer-ip-address: true #客戶端yml訪問路徑就會顯示成IP地址 ~~~ ![](https://img.kancloud.cn/eb/4b/eb4b5680cf86a302a88b72c5defad44d_918x340.png) 再次訪問 ![](https://img.kancloud.cn/df/f8/dff87a11c001b764a54d9457254c6c07_1216x437.png) ## 5. Eureka Server自我保護機制 ### **5.1 自我保護模式介紹** 1. 當Eureka Server 在一定時間內(默認90秒)沒有接收到某個微服務的心跳,Eureka Server會從服務列表將此服務實例注銷。但是如果出現網絡異常情況(微服務本身是正常的),微服務與Eureka Server之間無法正常通信! **以上行為可能變得非常危險了——因為微服務本身其實是正常的,此時本不應該注銷這個微服務。** 2. Eureka Server有一種 **“自我保護模式”** 來解決這個問題——**當Eureka Server在短時間內丟失過多客戶端時(可能發 生了網絡故障),此時Eureka Server會進入自保護模式,一旦進入該模式,Eureka Server就會保護服務注冊表中的信息,不再刪除服務注冊表中的數據(也就是不會注銷任何微服務)。當網絡故障恢復后,該Eureka Server會自動退出自我保護模式。** 3. ***自我保護模式是一種應對網絡異常的安全保護措施。*** 它的架構哲學是寧可同時保留所有微服務(健康的微服務和不健康的微服務都會保留),也不盲目注銷任何健康的微服務。使用自我保護模式,可以讓Eureka集群更加的健壯、穩定。 ### 5.2 開啟自我保護機制 ~~~ server: enable-self-preservation: true # 禁用自我保護機制 ~~~ ## **6. 集群版 Eureka Server** ### 6.1 集群模式簡介 1. 為了保證Eureka的高可用性,spring提供了Eureka server的集群模式。 2. 集群模式下各個Eureka server之間互相注冊。 3. 微服務需要連接兩臺Eureka Server注冊,當其中一臺Eureka死掉也不會影響服務的注冊與發現。 4. 微服務會定時向Eureka Server發送心跳,報告自己的狀態。 5. 微服務從注冊中心獲取服務地址以RESTful方式發起遠程調用。 ![](https://img.kancloud.cn/dc/61/dc6122ffeb7a3d9f736b63c403ccfbe2_994x515.png) ### 6.2 集群模式搭建 **1. 按照單機版Eureka server,再次新建一個Eureka02** ![](https://img.kancloud.cn/7c/80/7c80cc7813bb8bb39e446c6374181e7e_345x275.png) **2. 參考Eureka單機版修改pom,啟動類** **3. 修改yml文件** 修改配置 6002端口的指向6001端口,**多個用逗號分隔,**即要向集群中的其他Eureka 節點注冊自己的信息 ~~~ serviceUrl: defaultZone: http://eureka6001.com:6001/eureka/ # 集群版,指向其他Eureka server節點 ~~~ 完整 ~~~ server: port: 6002 # 服務端口 eureka: instance: hostname: eureka6002.com # eureka服務端的實例名稱 client: registerWithEureka: false # 服務注冊,false表示不將自已注冊到Eureka服務中 fetchRegistry: false # 服務發現,false表示自己不從Eureka服務中獲取注冊信息 serviceUrl: defaultZone: http://eureka6001.com:6001/eureka/ # 集群版,指向其他Eureka server節點 # Eureka客戶端與Eureka服務端的交互地址,集群版配置對方的地址,單機版配置自己(如果不配置則默認本機8761端口) server: enable-self-preservation: true # 禁用自我保護機制 ~~~ **4. 配置域名,區分兩個Eureka server** `C:\Windows\System32\drivers\etc\hosts `文件 ``` 127.0.0.1 eureka6001.com 127.0.0.1 eureka6002.com ``` ![](https://img.kancloud.cn/38/c2/38c25720f03d840633ffea50d3d4eba7_615x226.png) ![](https://img.kancloud.cn/15/d4/15d48167552013833b84319833556812_736x259.png) ## 7. Eureka 集群模式 client如何配置 yml文件中,將所有節點連接加入即可 ``` serviceUrl: # 注冊到哪一個Eureka Server服務注冊中心,多個中間用逗號分隔 #defaultZone: http://localhost:6001/eureka defaultZone: http://eureka6001.com:6001/eureka,http://eureka6002.com:6002/eureka ``` 完整 ``` eureka: client: registerWithEureka: true # 服務注冊開關 fetchRegistry: true # 服務發現開關 serviceUrl: # 注冊到哪一個Eureka Server服務注冊中心,多個中間用逗號分隔 #defaultZone: http://localhost:6001/eureka defaultZone: http://eureka6001.com:6001/eureka,http://eureka6002.com:6002/eureka instance: instanceId: ${spring.application.name}:${server.port} # 等價于microservice-product:8001 prefer-ip-address: true #訪問路徑就會顯示成IP地址 ``` 應用在兩個集群節點都進行了注冊 ![](https://img.kancloud.cn/5d/0b/5d0b1a487b80d193b1a9be18a24fd751_914x419.png) ![](https://img.kancloud.cn/0c/10/0c107fdd678d7e9cc90c63869b70efbf_905x231.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看