在Eureka的服務治理體系中,主要分為服務端和客戶端兩個不同的角色,服務端為服務注冊中心,客戶端為提供各個接口的微服務應用,這里介紹一下Eureka的配置。
Eureka服務端配置
在實際應用中,我們所做的配置內容都是對客戶端進行的操作,而Eureka服務端更像一個現成的產品,大多數情況下我們不需要修改它的配置。
如果你想了解的話,可以去這個類中查看org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean,服務端的屬性都是以eureka.server為前綴。
Eureka客戶端的主要配置
服務注冊相關的配置信息,包括服務注冊中心的地址,服務獲取的間隔時間、可用區域等。
服務實例相關的配置信息,包括服務實例的名稱、IP地址、端口號、健康檢查路徑等。
服務注冊類配置
關於服務注冊類的配置信息可用通過org.springframework.cloud.netflix.eureka.EurekaClientConfigBean查看,這些配置信息前綴都是eureka.client。
指定注冊中心:通過eureka.client.serviceUrl參數實現,該參數的定義如下,它的配置值存儲在HashMap類型中,並且有一組默認值,默認的key是defaultZone,默認的value為http://localhost:8761/eureka。我們通過這樣設置就可以重新設置注冊中心:eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/。如果是高可用注冊中心則多個地址之間逗號隔開。
private Map<String, String> serviceUrl = new HashMap<>();
其他配置
這些配置都以eureka.client開頭
服務實例類配置
關於服務實例類的配置信息可以在org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean類查看,這些配置信息的前綴都是eureka.instance。
元數據
在org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean中的配置信息中,有一大部分內容是對服務實例元數據的配置,元數據就是指Eureka客戶端在向服務注冊中心發送注冊請求時,用來描述自身服務信息的對象,其中包含了一些標准化的元數據,比如服務名稱、實例名稱、實例IP、實力端口等。
在使用Spring Cloud Eureka時,所有的配置信息都通過org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean進行加載,但在真正進行服務注冊時還是會包裝成com.netflix.appinfo.InstanceInfo對象發送給Eureka客戶端。這兩個類定義非常相似,在com.netflix.appinfo.InstanceInfo類中Map<String, String> metadata = new ConcurrentHashMap<String, String>()是自定義的元數據信息,而其他則是標准化的元數據信息。
我們可以通過eureka.instance.<properties>=<value>的格式對標准化的元數據信息直接進行配置,其中<properties>就是EurekaInstanceConfigBean對象中的成員變量名。而對於自定義元數據,可以通過eureka.instance.metadataMap.<key>=<value>的格式進行配置,比如:
eureka.instance.metadataMap.zone=shanghai
實例名配置
它是區分同一服務不同實例的唯一標識。在Netflix Eureka的原生實現中,默認是以主機名作為默認值,這樣的設置使得在同一主機上無法啟動多個相同的服務實例。所以在Spring Cloud Eureka中針對同一主機啟動多個實例的情況,對實例名的默認命名做了更合理的擴展,采用如下規則
${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${server.port}
我們可以通過eureka.instance.instanceId來配置實例名。當我們在本地做負載均衡調試時,采用的是指定多個端口來啟動同一服務的多個實例,但這樣你會發現實例名其實還是一樣的只是端口不一樣,我們可以這樣設置指定不同的實例名
eureka.instance.instanceId=${spring.application.name}:${random.int}
這樣就可以通過不指定端口就啟動同一服務的多個實例。
端點配置
在org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean類中,有一些URL的配置信息,如homePageUrl、statusPageUrl、healthCheckUrl。其中狀態頁和健康檢查的URL默認是使用actuator提供的info和health端點。我們必須保證客戶端的health端點是一個可以被注冊中心正確訪問到的地址,否則注冊中心不會根據應用的健康檢查來改變應用狀態(僅當開啟了healthcheck功能時,以該端點信息作為健康檢查標准而不是心跳)。如果info端點不能正常訪問,則在Eureka面板單擊服務時不能訪問到服務實例提供的信息接口。一般情況下我們不需要配置這些信息,如果你修改了info端點和health端點的路徑,那么就需要修改這個配置了,只需要和actuator的做同樣修改即可,比如加上相同的前綴、改為同樣的新路徑等。
eureka.instance.statusPageUrlPath=info端點的路徑
eureka.instance.healthCheckUrlPath=health端點的路徑
上述配置是使用相對路徑進行配置,如果客戶端應用以HTTPS的方式而不是HTTP的方式來暴露服務和監控端點時,要使用絕對路徑。
eureka.instance.statusPageUrlPath=https://${eureka.instance.hostname}/actuator/info
eureka.instance.healthCheckUrlPath=https://${eureka.instance.hostname}/actuator/health
其他配置
除了前三個可能會修改外,其余使用默認配置就可以。
---------------------
作者:myCat、
來源:CSDN
原文:https://blog.csdn.net/WYA1993/article/details/82288605
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!