<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # 簡介 服務提供者要向EurekaServer注冊服務,并且完成服務續約等工作。 > 服務注冊 服務提供者在啟動時,會檢測配置屬性中的:`eureka.client.register-with-erueka=true`參數是否正確,事實上默認就是true。如果值確實為true,則會向EurekaServer發起一個Rest請求,并攜帶離己的元數據信息, Eureka Server會把這些信息保存到一個雙層Map結構中。 * 第一層Map的Key就是服務id,一般是配置中的spring.application.name屬性 * 第二層Map的key是服務的實例id。一般`host+serviceld+port`,例如:`locahost:user-service:8081` * 值則是服務的實例對象,也就是說一個服務,可以同時啟動多個不同實例,形成集群。 > 服務續約 在注冊服務完成以后,服務提供者會維持一個心跳(定時向EurekaServer發起Rest請求),告訴EurekaServer. 這個叫服務的續約(renew) ~~~ eureka: instance: # 表示eureka client間隔多久去拉取服務注冊信息,默認為30秒,如果要迅速獲取服務注冊狀態,可以縮小該值 lease-renewal-interval-in-seconds: 5 # 心跳時間,即服務續約間隔時間(缺省為30s) # 表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超時時間,在這個時間內若沒收到下一次心跳,則將移除該instance。 # 默認為90秒 # 如果該值太大,則很可能將流量轉發過去的時候,該instance已經不存活了。 # 如果該值設置太小了,則instance則很可能因為臨時的網絡抖動而被摘除掉。 # 該值至少應該大于 leaseRenewalIntervalInSeconds lease-expiration-duration-in-seconds: 15 # 發呆時間,即服務續約到期時間(缺省為90s) ~~~ 默認情況每30秒服務會向注冊中心發送一個心跳,證明自己還活著. 如果超過90秒沒有發心跳,Eureka會認為該服務已經宕機,會從服務列表中移除. > 獲取服務列表 當服務消費者啟動,會檢測`eureka.client.fetch-registry=true`參數的值,如果為true,則會從Eureka Server服務的列表只讀備份,然后緩存在本地。并且每隔30秒會重新獲取并更新數據。我們可以通過下面的參數來修改: ~~~ eureka: instance: registry-fetch-interval-seconds:30 ~~~ > 服務下線 當服務進行正常關閉操作時,它會觸發一個服務下線的REST請求給Eureka Server,告訴服務注冊中心:“我要下線了”。服務中心接受到請求之后,將該服務置為下線狀態。 > 失效別除 有時我們的服務可能由于內存溢出或網絡故障等原因使得服務不能正常的工作,而服務注冊中心并未收到“服務下 線”的請求。相對于服務提供者的“服務續約”操作,服務注冊中心在啟動時會創建一個定時任務,默認每隔一段時 間(默認為60秒)將當前清單中超時(默認為90秒)沒有續約的服務剔除,這個操作被稱為失效剔除。 可以通過`eureka.server.eviction-interval-timer-in-ms`參數對其進行修改,單位是毫秒。 # 配置信息 Eureka包含四部分配置 1. instance : 當前Eureka Instance實例配置信息 2. client : Eureka Client客戶端特性配置 3. server : Eureka Server注冊中心特性配置 4. dashboard : Eureka Server注冊中心儀表盤配置 ## Eureka Instance 實例信息配置 Eureka Instance的配置信息全部保存在`org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean`配置類中,實際上它是com.netflix.appinfo.EurekaInstanceConfig的實現類,替代了netflix的com.netflix.appinfo.CloudInstanceConfig的默認實現。 Eureka Instance的配置信息全部以eureka.instance.xxx的格式配置。 | 配置屬性 | 解釋 | 默認值 | | --- | --- | --- | | appname | 應用名,首先獲取spring.application.name的值,如果取值為空,則取默認unknown | unknown | | appGroupName | 應用組名 | null | | instanceEnabledOnit | 實例注冊到Eureka上是,是否立刻開啟通訊。有時候應用在準備好服務之前需要一些預處理 | false | | nonSecurePort | 非安全的端口 | 80 | | securePort | 安全的端口 | 443 | | nonSecurePortEnabled | 是否開啟非安全端口通訊 | true | | securePortEnabled | 是否開啟安全端口通訊 | false | | leaseRenewalIntervalInSeconds | 實例續約間隔時間(s) | 30 | | leaseExpirationDurationInSeconds | 實例超時時間,表示最大leaseExpirationDurationInSeconds秒后沒有續約,Server就認為他不可用了,隨之就會將其剔除(s) | 90 | | virtualHostName | 虛擬主機名,首先獲取spring.application.name的值,如果取值為空,則取默認unknown。 | unknown | | instanceId | 注冊到eureka上的唯一實例ID,不能與相同appname的其他實例重復 | | | secureVirtualHostName | 安全虛擬主機名,首先獲取spring.application.name的值,如果取值為空,則取默認unknown | unknown | | metadataMap | 實例元數據,可以供其他實例使用。比如spring-boot-admin在監控時,獲取實例的上下文和端口 | HashMap | | dataCenterInfo | 實例部署的數據中心。如AWS、MyOwn | new |MyDataCenterInfo(DataCenterInfo.Name.MyOwn) | | ipAddress | 實例的IP地址 | null | | statusPageUrlPath | 實例狀態頁相對url | "/actuator/info" | | statusPageUrl | 實例狀態頁絕對url | url | | homePageUrlPath | 實例主頁相對URL | / | | healthCheckUrlUrlPath | 實例健康檢查相對URL | "/actuator/health" | | healthCheckUrl | 實例健康檢查絕對URL | null | | secureHealthCheckUrl | 實例安全的健康檢查絕對URL | null | | namespace | 配置屬性的命名空間(Spring Cloud中被忽略) | "eureka" | | hostname | 主機名,不配置的時候講根據操作系統的主機名來獲取 | null | | preferIpAddress | 是否優先使用IP地址作為主機名的標識 | false | ## Eureka Client客戶端特性配置 Eureka Client客戶端特性配置是對作為Eureka客戶端的特性配置,包括Eureka注冊中心,本身也是一個Eureka Client。Eureka Client特性配置全部在`org.springframework.cloud.netflix.eureka.EurekaClientConfigBean`中,實際上它是`com.netflix.discovery.EurekaClientConfig`的實現類,替代了netxflix的默認實現 Eureka Client客戶端特性配置全部以eureka.client.xxx的格式配置。 | 配置屬性 | 解釋 | 默認值 | | :-- | --: | :-: | | enabled | 是否啟用 Eureka client | `true` | | registryFetchIntervalSeconds | 定時從 Eureka Server 拉取服務注冊信息的間隔時間 (s) | `30` | | instanceInfoReplicationIntervalSeconds | 定時將實例信息(如果變化了)復制到 Eureka Server 的間隔時間。(InstanceInfoReplicator 線程) | `30` | | initialInstanceInfoReplicationIntervalSeconds | 首次將實例信息復制到 Eureka Server 的延遲時間。(InstanceInfoReplicator 線程) | `40` | | eurekaServiceUrlPollIntervalSeconds | 拉取 Eureka Server 地址的間隔時間(Eureka Server 有可能增減) | `300` | | proxyPort | Eureka Server 的代理端口 | `null` | | proxyHost | Eureka Server 的代理主機名 | `null` | | proxyUserName | Eureka Server 的代理用戶名 | `null` | | proxyPassword | Eureka Server 的代理密碼 | `null` | | eurekaServerReadTimeoutSeconds | 從 Eureka Server 讀取信息的超時時間 (s) | `8` | | eurekaServerConnectTimeoutSeconds | 連接 Eureka Server 的超時時間 | `5` | | backupRegistryImpl | Eureka Client 第一次啟動時獲取服務注冊信息的調用的回溯實現。Eureka Client 啟動時首次會檢查有沒有 BackupRegistry 的實現類,如果有實現類,則優先從這個實現類里獲取服務注冊信息 | `null` | | eurekaServerTotalConnections | Eureka client 連接 Eureka Server 的鏈接總數 | `200` | | eurekaServerTotalConnectionsPerHost | Eureka client 連接單臺 Eureka Server 的鏈接總數 | `50` | | eurekaServerURLContext | 當 Eureka server 的列表在 DNS 中時,Eureka Server 的上下文路徑。如 http://xxxx/eureka | `null` | | eurekaServerPort | 當 Eureka server 的列表在 DNS 中時,Eureka Server 的端口 | `null` | | eurekaServerDNSName | 當 Eureka server 的列表在 DNS 中時,且要通過 DNSName 獲取 Eureka Server 列表時,DNS 名字 | `null` | | region | 實例所屬區域 | `us-east-1` | | eurekaConnectionIdleTimeoutSeconds | Eureka Client 和 Eureka Server 之間的 Http 連接的空閑超時時間 | `30` | | heartbeatExecutorThreadPoolSize | 心跳(續約)執行器線程池大小 | `2` | | heartbeatExecutorExponentialBackOffBound | 心跳執行器在續約過程中超時后的再次執行續約的最大延遲倍數。默認最大延遲時間 =`10 * eureka.instance.leaseRenewalIntervalInSeconds` | `10` | | cacheRefreshExecutorThreadPoolSize | cacheRefreshExecutord 的線程池大小(獲取注冊信息) | `2` | | cacheRefreshExecutorExponentialBackOffBound | cacheRefreshExecutord 的再次執行的最大延遲倍數。默認最大延遲時間 =`10 *eureka.client.registryFetchIntervalSeconds` | `10` | | serviceUrl | Eureka Server 的分區地址。默認添加了一個 defualtZone。也就是最常用的配置`eureka.client.service-url.defaultZone=xxx` | `new HashMap();serviceUrl.put(DEFAULT_ZONE, DEFAULT_URL)` | | registerWithEureka | 是否注冊到 Eureka Server | `true` | | preferSameZoneEureka | 是否使用相同 Zone 下的 Eureka server | `true` | | logDeltaDiff | 是否記錄 Eureka Server 和 Eureka Client 之間注冊信息的差異 | `false` | | disableDelta | 是否開啟增量同步注冊信息 | `false` | | fetchRemoteRegionsRegistry | 獲取注冊服務的遠程地區,以逗號隔開 | `null` | | availabilityZones | 可用分區列表。用逗號隔開 | `HashMap` | | filterOnlyUpInstances | 是否只拉取 UP 狀態的實例 | `true` | | fetchRegistry | 是否拉取注冊信息 | `true` | | shouldUnregisterOnShutdown | 是否在停止服務的時候向 Eureka Server 發起 Cancel 指令 | `true` | | shouldEnforceRegistrationAtInit | 是否在初始化過程中注冊服務 | `false` | ## Eureka Server注冊中心端配置 Eureka Server注冊中心端的配置是對注冊中心的特性配置。Eureka Server的配置全部在`org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean`里,實際上它是`com.netflix.eureka.EurekaServerConfig`的實現類,替代了netflix的默認實現 Eureka Server的配置全部以eureka.server.xxx的格式進行配置 | 配置屬性 | 解釋 | 默認值 | | :-- | --: | :-: | | enableSelfPreservation | 是否開啟自我保護 | `true` | | renewalPercentThreshold | 自我保護續約百分比閥值因子。如果實際續約數小于續約數閥值,則開啟自我保護 | `0.85` | | renewalThresholdUpdateIntervalMs | 續約數閥值更新頻率 | `15 * 60 * 1000` | | peerEurekaNodesUpdateIntervalMs | Eureka Server 節點更新頻率 | `10 * 60 * 1000` | | enableReplicatedRequestCompression | 是否啟用復制請求壓縮 | `false` | | waitTimeInMsWhenSyncEmpty | 當從其他節點同步實例信息為空時等待的時間 | `5 * 60 * 1000` | | peerNodeConnectTimeoutMs | 節點間連接的超時時間 | `200` | | peerNodeReadTimeoutMs | 節點間讀取信息的超時時間 | `200` | | peerNodeTotalConnectionsPerHost | 單個節點間連接總數 | `500` | | peerNodeConnectionIdleTimeoutSeconds | 節點間連接空閑超時時間 | `30` | | retentionTimeInMSInDeltaQueue | 增量隊列的緩存時間 | `3 * MINUTES` | | deltaRetentionTimerIntervalInMs | 清理增量隊列中過期的頻率 | `30 * 1000` | | evictionIntervalTimerInMs | 剔除任務頻率 | `60*1000` | | responseCacheAutoExpirationInSeconds | 注冊列表緩存超時時間(當注冊列表沒有變化時) | `180` | | responseCacheUpdateIntervalMs | 注冊列表緩存更新頻率 | `30 * 1000` | | useReadOnlyResponseCache | 是否開啟注冊列表的二級緩存 | `true` | | disableDelta | 是否為 client 提供增量信息 | `false` | | maxThreadsForStatusReplication | 狀態同步的最大線程數 | `1` | | maxElementsInStatusReplicationPool | 狀態同步隊列的最大容量 | `10000` | | syncWhenTimestampDiffers | 當時間差異時是否同步 | `true` | | registrySyncRetries | 注冊信息同步重試次數 | `0` | | registrySyncRetryWaitMs | 注冊信息同步重試期間的時間間隔 | `30 * 1000` | | maxElementsInPeerReplicationPool | 節點間同步事件的最大容量 | `10000` | | minThreadsForPeerReplication | 節點間同步的最小線程數 | `5` | | maxThreadsForPeerReplication | 節點間同步的最大線程數 | `20` | | maxTimeForReplication | 節點間同步的最大時間,單位為毫秒 | `30000` | | disableDeltaForRemoteRegions | 是否啟用遠程區域增量 | `false` | | remoteRegionConnectTimeoutMs | 遠程區域連接超時時間 | `1000` | | remoteRegionReadTimeoutMs | 遠程區域讀取超時時間 | `1000` | | remoteRegionTotalConnections | 遠程區域最大連接數 | `1000` | | remoteRegionTotalConnectionsPerHost | 遠程區域單機連接數 | `500` | | remoteRegionConnectionIdleTimeoutSeconds | 遠程區域連接空閑超時時間 | `30` | | remoteRegionRegistryFetchInterval | 遠程區域注冊信息拉取頻率 | `30` | | remoteRegionFetchThreadPoolSize | 遠程區域注冊信息線程數 | `20` | ## Eureka Server 注冊中心儀表盤配置 注冊中心儀表盤的配置主要是控制注冊中心的可視化展示。以`eureka.dashboard.xxx`的格式配置 **配置列表:** | 配置屬性 | 解釋 | 默認值 | | :-- | --: | :-: | | path | 儀表盤訪問路徑 | `/` | | enabled | 是否啟用儀表盤 | `` | # Self Preservation Mode(自我保護模式) 1. 服務的正常退出流程。 eureka要求當client退出的時候,它顯示的調用"注銷"接口. 進行優雅退出. 2. self preservation mode是一種保護/容錯機制 它主要是用來避免由于網絡抖動或者故障帶來的連接失敗,看下面2種情況。 * 網絡故障,或者若網,導致server沒有收到client的心跳信息,這時候其實client服務是活著的 * 及時client和server直接斷開了,但是服務A已經跟服務B建立了連接 3. 看幾個重要的配置參數 * eureka.instance.lease-renewal-interval-in-seconds=30 ? ? 這個標識多久發送一次心跳 ? * eureka.instance.lease-expiration-duration-in-seconds=90 ? ? 這個標識server過多久還沒有收到來自客戶端的心跳,就認為client已經掛了,把他踢掉的時間 * eureka.server.eviction-interval-timer-in-ms=5000 ? ? 每隔多久進行一次檢查,看是不是有掛了的client[關聯一個定時器] * eureka.server.renewal-threshold-update-interval-ms=6000 ? ? 每隔多久計算一次期望的每分鐘收到的心跳的次數[關聯一個定時器] * eureka.server.renewal-percent-threshold=0.85 ? ? 計算每分鐘最小心跳次數的threshold,? * 還有一個定時器,每分鐘執行一次,計算上一分鐘實際收到的心跳次數. ?? ? 4. 案例說明 有2個服務,A 和 B, 假設配置的參數值就是上面的值 4.1 任何服務連續3次發生心跳失敗(超過了90秒),就會被踢掉 ? 4.2 正常情況,1分鐘應收到的心跳次數是2(每分鐘的次數)*2(服務的數量),最小次數是 2(每分鐘的次數)*2(服務的數量)*0.85=3? 4.3 每分鐘計算一次最小的心跳次數(對應上面的3.4) 4.4 若實際的心跳次數小于最小的心跳次數,啟動自我保護模式 綜上,自我保護模式是一種應對網絡異常的安全保護措施。它的架構哲學是寧可同時保留所有微服務(健康的微服務和不健康的微服務都會保留),也不盲目注銷任何健康的微服務。使用自我保護模式,可以讓Eureka集群更加的健壯、穩定。 當我們在本地調試基于Eureka的程序時,基本上都會碰到這樣一個問題,在服務注冊中心的信息面板中出現類似的紅色警告信息: ~~~ EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE. ~~~ # server端 ~~~ @EnableEurekaServer @SpringBootApplication public class EurekaServer { public static void main(String[] args) { SpringApplication.run(EurekaServer.class, args); } } ~~~ ~~~ <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> ~~~ 配置文件 ~~~ # 單機版 # (registerWithEureka, fetchRegistry, hostname) # 無參數啟動 spring: application: name: eureka-server server: port: 10086 address: 0.0.0.0 eureka: datacenter: cloud # 修改Eureka監控頁面的System Status Data center environment: test # 修改Eureka監控頁面的System Status Environment instance: hostname: jdxia.local # Eureka 實例主機名,每一個 Eureka Server 都有自己的實例名 server: enable-self-preservation: false # 關閉自我保護模式(默認為打開) # eviction-interval-timer-in-ms: 5000 # 續期時間,即掃描失效服務的間隔時間(缺省為60*1000ms) client: fetchRegistry: false # 表示是否從 Eureka Server 服務注冊表中獲取注冊信息,默認為 true。同理自身本身就是服務端,而且是單機模式,不需要同步其他的 Eureka Server節點的數據,故而設置為 false registerWithEureka: false # 表示是否將自己注冊到 Eureka Server 服務注冊表中,默認為 true。因為當前應用本身就是 Eureka Server,所以設置為 false。Eureka Server 無需注冊,Eureka Client 才需要像 Server 端進行注冊。 service-url: defaultZone: http://${eureka.instance.hostname}/eureka/ ~~~ 訪問: [http://0.0.0.0:10086/](http://0.0.0.0:10086/) # client端 ~~~ <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> ~~~ 在啟用類上加入@EnableEurekaClient注解即可,通過該注解,項目下所有被@RestController注解的對外服務接口將可通過注冊-發布的方式對外提供服務。 ~~~ @EnableDiscoveryClient @SpringBootApplication @MapperScan("com.jdxia.user.mapper") public class UserApplication { public static void main(String[] args) { SpringApplication.run(UserApplication.class); } } ~~~ 配置文件 要名字,Eureka需要 ~~~ spring: application: name: consumer-server eureka: instance: # 表示eureka client間隔多久去拉取服務注冊信息,默認為30秒,如果要迅速獲取服務注冊狀態,可以縮小該值 lease-renewal-interval-in-seconds: 5 # 心跳時間,即服務續約間隔時間(缺省為30s) # 表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超時時間,在這個時間內若沒收到下一次心跳,則將移除該instance。 # 默認為90秒 # 如果該值太大,則很可能將流量轉發過去的時候,該instance已經不存活了。 # 如果該值設置太小了,則instance則很可能因為臨時的網絡抖動而被摘除掉。 # 該值至少應該大于 leaseRenewalIntervalInSeconds lease-expiration-duration-in-seconds: 15 # 發呆時間,即服務續約到期時間(缺省為90s) client: registry-fetch-interval-seconds: 10 # 拉取服務注冊信息間隔(缺省為30s) service-url: defaultZone: http://127.0.0.1:10086/eureka ~~~ # 消費者 ~~~ spring: application: name: consumer-server eureka: instance: lease-renewal-interval-in-seconds: 5 # 心跳時間,即服務續約間隔時間(缺省為30s) lease-expiration-duration-in-seconds: 15 # 發呆時間,即服務續約到期時間(缺省為90s) client: registry-fetch-interval-seconds: 10 # 拉取服務注冊信息間隔(缺省為30s) service-url: defaultZone: http://127.0.0.1:10086/eureka ~~~ ~~~ @Autowired private DiscoveryClient discoveryClient; ~~~ ~~~ //根據服務id獲取實例 List<ServiceInstance> list = discoveryClient.getInstances("user-service"); //從實例中取出ip和端口 ServiceInstance serviceInstance = list.get(0); ~~~ client也可以通過直接寫注冊服務方的名字也可以調用 這邊的restTemplate直接用注入的就行. 如果是要用ip那種,那restTemplate需要new,注入的會報`java.lang.IllegalStateException: No instances available for` ~~~ String url = "http://user-service/user/" + id; System.out.println(url); String user = restTemplate.getForObject(url, String.class); ~~~ # 單機多集群版 單文件版本 可以將application-server1.yml和application-server2.yml的配置信息都放到原application.yml配置中, 通過`‘---’` 三橫杠模加spring.profiles模式來啟動,同時增加啟動參數: `--spring.profiles.active=config-server1` **hosts** ~~~ 0.0.0.0 peer1 0.0.0.0 peer2 0.0.0.0 peer3 ~~~ **application.yml** ~~~ spring: application: name: mima-cloud-eureka-ha profiles: active: peer1 --- server: port: 8762 spring: profiles: peer1 eureka: instance: hostname: peer1 prefer-ip-address: true instance-id: ${spring.application.name}:${server.port} client: serviceUrl: defaultZone: http://peer2:8763/eureka/,http://peer3:8764/eureka/ --- server: port: 8763 spring: profiles: peer2 eureka: instance: hostname: peer2 prefer-ip-address: true instance-id: ${spring.application.name}:${server.port} client: serviceUrl: defaultZone: http://peer1:8762/eureka/,http://peer3:8764/eureka/ --- server: port: 8764 spring: profiles: peer3 eureka: instance: hostname: peer3 prefer-ip-address: true instance-id: ${spring.application.name}:${server.port} client: serviceUrl: defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka ~~~ 配置文件是通過三個Eureka Server互相注冊,這里有四段配置,第一段配置為公共配置,配置了應用名稱,第二段為名peer1的配置,第三段為peer2的配置,第三段為peer3的配置。在項目啟動可以通過 \--spring.profiles.active={配置名稱} 來啟動不同的配置。 **eureka客戶端修改eureka服務端的地址** ~~~ eureka: instance: prefer-ip-address: true instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${server.port} client: serviceUrl: defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/,http://peer3:8764/eureka/ #defaultZone: http://127.0.0.1:8762/eureka/,http://127.0.0.1:8763/eureka/,http://127.0.0.1:8764/eureka/ ~~~ 啟動eurekaClient客戶端 啟動eurekaServer服務端 因使用eureka集群,啟動的時候需要指定配置文件: 啟動peer1節點命令: `java -jar D:\\jar\\eurekaServer\\eurekaServerHigh.jar--spring.profiles.active=peer1` 啟動peer2節點命令: `java -jar D:\\jar\\eurekaServer\\eurekaServerHigh.jar--spring.profiles.active=peer2` 啟動peer3節點命令: `java -jar D:\\jar\\eurekaServer\\eurekaServerHigh.jar--spring.profiles.active=peer3` ![](https://img.kancloud.cn/20/94/209473949134971636d6084155c02f5e_1023x361.png) `program arguments: xxxx` --- **多文件方式** 如果你的配置是application-server1.yml 這種多文件配置 idea中 ![](https://img.kancloud.cn/dc/90/dc90100aedc0ea2beca4a20ad7dad578_2450x1332.png) # 主動下線 1. 為了讓注冊中心馬上知道服務要下線, 可以向eureka 注冊中心發送delete 請求 格式為 `/eureka/apps/{application.name}/` 下面是下線一個hello-service的例子。 ![](https://img.kancloud.cn/70/cf/70cf6e6592629fc6ea20a24da785dab9_756x274.png) **值得注意的是,Eureka客戶端每隔一段時間(默認30秒)會發送一次心跳到注冊中心續約。如果通過這種方式下線了一個服務,而沒有及時停掉的話,該服務很快又會回到服務列表中。** 所以,可以先停掉服務,再發送請求將其從列表中移除 2. 客戶端主動通知注冊中心下線? 如果你的eureka客戶端是是一個spring boot應用,可以通過調用以下代碼通知注冊中心下線。? ~~~ DiscoveryManager.getInstance().shutdownComponent(); ~~~ ~~~ @RestController public class HelloController { @Autowired private DiscoveryClient client; @RequestMapping(value = "/hello", method = RequestMethod.GET) public String index() { java.util.List<ServiceInstance> instances = client.getInstances("hello-service"); return "Hello World"; } @RequestMapping(value = "/offline", method = RequestMethod.GET) public void offLine(){ DiscoveryManager.getInstance().shutdownComponent(); } } ~~~ ![](https://img.kancloud.cn/c2/60/c26009b7ebbb75011163e968fee1af05_639x180.png) # 常見問題 **解決spring cloud eureka服務注冊出現的`Error creating bean with name 'org.springframework.cloud.netflix...`問題** 在pom文件中加入以下依賴 ~~~ <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>25.1-jre</version> </dependency> <dependency> <groupId>com.diffplug.guava</groupId> <artifactId>guava-cache</artifactId> <version>19.0.0</version> </dependency> ~~~
                  <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>

                              哎呀哎呀视频在线观看