javascript
eureka hostname作用_SpringCloud基础教程(三)-Eureka进阶
? ?我的博客:http://www.hao127.com.cn/,歡迎瀏覽博客!
? ?上一章 http://hao127.com.cn/#/view/65當中,我們介紹了微服務組件當中的服務注冊和發現組件
Eureka,本章將繼續探索Eurea在生產環境中的配置和使用。
前言
?在上一章當中,我們初步了解了Eureka的使用,雖然最基本的場景,服務注冊、服務發現和消費都可以實現。但是在實際的企業應用時候,就會遇到很多的自定義的配置。特別是在生產環境。
一、Eureka的健康檢查
?在不添加任何配置的情況下,Eureka注冊中心和服務之間是通過心跳機制來監測的,如果心跳正常,那么代表服務是可以用的。但是實際上不是這樣。我們開發的微服務組件,大多數都會依賴緩存Redis、搜素引擎Solr等等外部的資源。如果這些資源不能提供應用,雖然服務組件能與Eureka正常的保持心跳,但是在這樣的情況下,服務的調用就不能獲得預期的效果。在這里,我們可以通過配置Eureka的健康檢查,將服務組件的狀態同步到Eureka中心。
?在開發的微服務組件中,修改application.xml 開啟健康檢查,默認是false,依賴心跳,這里修改成true,
eureka: client: healthcheck: enabled: true?并在pom.xml中添加actuator依賴(如果不添加,是不起作用的):
org.springframework.boot spring-boot-starter-actuator?Eureka中的實例包含了多種狀態:UP、DOWN、STARTING、OUTOFSERVICE、UNKNOWN.這里我們可以自定義的實現 org.springframework.boot.actuate.health.HealthIndicator 接口。通過HTTP接口手動的修改服務組件的狀態,并同步到Eureka.(在實際的應用中,例如緩存宕機,就可以改變當前的服務組件的健康狀態)。
?新建SelfHealthChecker的組件實現HealthIndicator接口,創建Health對象,當前服務的健康狀態隨著health的之變化而變化。
import org.springframework.boot.actuate.health.Health;import org.springframework.boot.actuate.health.HealthIndicator;import org.springframework.stereotype.Component;@Componentpublic class SelfHealthChecker implements HealthIndicator { private boolean health = true; @Override public Health health() { if (health) { return new Health.Builder() .withDetail("a", 10).withDetail("b", "up").up().build(); } else { return new Health.Builder() .withDetail("error", "client is down").down().build(); } } public boolean isHealth() { return health; } public void setHealth(boolean health) { this.health = health; }}?新建控制器,注入自定義的健康檢查組件,可以通過HTTP接口調用的方式,改變當前的微服務組件的健康狀態:
這個時候,再去查看Eureka的監控頁面,就可以看到服務提供方的狀態發生了變化:
這里我們是可以根據自己的場景進行操作的
二、 Eureka高可用集群
?如果是本機搭建,首先在host文件中,配置如下的映射(如果不配置,而是使用localhost,那么服務注冊的時候只能注冊到一個Eureka實例中,原因是eureka對localhost做了過濾。)
127.0.0.1 eureka7001.com127.0.0.1 eureka7002.com127.0.0.1 eureka7003.com?分別啟動3個eureka實例,并在每個實例的配置中配置其他可用的實例URL,如下
?appcaiton-s1.xml
#eureka 服務端spring: application: name: eureka-serverserver: port: 7001eureka: instance: hostname: eureka7001.com #服務端的實例名稱 client: service-url: # 設置與注冊中心交互的url , #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ #false表示自己就是服務中細膩 fetch-registry: false #注冊自己到注冊中心 register-with-eureka: true healthcheck: enabled: false?appcaiton-s2.xml
#eureka 服務端spring: application: name: eureka-serverserver: port: 7002eureka: instance: hostname: eureka7002.com #服務端的實例名稱 client: service-url: # 設置與注冊中心交互的url , #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ defaultZone: http://eureka7003.com:7003/eureka/,http://eureka7001.com:7001/eureka/ #false表示自己就是服務中細膩 fetch-registry: false #注冊自己到注冊中心 register-with-eureka: true healthcheck: enabled: false?appcaiton-s3.xml
#eureka 服務端spring: application: name: eureka-server server: port: 7003 eureka: instance: hostname: eureka7003.com #服務端的實例名稱 client: service-url: # 設置與注冊中心交互的url , #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/ #false表示自己就是服務中細膩 fetch-registry: false #注冊自己到注冊中心 register-with-eureka: true healthcheck: enabled: false?打開eureka任何一個示例的監控中心,可以看到,每個eureka將自己也注冊到了集群中了。
服務注冊:分別將服務提供方和服務調用方啟動,注冊到eureka集群中,例如服務提供方的配置文件applicaiton.yml配置如下:配置的eureka示例只要配置集群任何一個eureka示例就可以了
#服務提供方spring: application: name: server-providerserver: port: 9001eureka: instance: hostname: eureka7002.com #eureka服務端的實例名稱 client: service-url: # 與注冊中心交互的url defaultZone: http://eureka7002.com:7002/eureka/ enabled: true?通過集群監控面板可以看到如下的信息。這個時候,服務調用方就可以調用服務提供方接口了,就算eureka實例宕機一臺,也不影響服務的調用。
三、自我保護模式
?eureka在設計時候充分考慮到了分布式環境網絡的不可靠。因為網絡的原因會導致eureka的server沒有收到心跳,但是并不能說明eureka是宕機了。所以Eureka Server默認會打開保護模式。
?一旦進入保護模式,eureka不是刪除里面的服務注冊列表數據,即不會立刻注銷任何微服務。服務調用者任然嘗試調用服務提供者。如果調用失敗,則會使用熔斷模式。當網絡故障恢復后,eureka會自動的退出自我保護模式。
?修改配置的yml,打開或者關閉注冊中心的為我保護模式,false代表關閉。
eureka: server: enable-self-preservation: false四、其他配置
?eureka默認的服務名稱是
${spring.cloud.client.hostname}:${spring.application.name}:${spring.applicaiton.instance_id}:${port}:?如圖:
這里我們可以直接修改,修改成如下圖
eureka: instance: instance-id: P1??自定義Eureka的控制臺服務鏈接
??Eureka首頁顯示服務調用的地址默認是 http:hostName:port/
??可以通過配置
eureka: instance: prefer-ip-address: true #設置服務調用IP為先如下圖:
修改后:單擊服務變成了ip調用:
五、總結
?本章講解了Eureka的進階內容,包括Eureka健康檢查、生產環境的Eureka集群搭建,也對常用的配置進行了介紹。后期我們會在這些基礎之上繼續探索更多的微服務功能!
?以上就是本期的分享,你可以關注本博客的#http://hao127.com.cn/#
? ?還可以關注公眾號: 程序員笑笑生,關注更多精彩內容!
總結
以上是生活随笔為你收集整理的eureka hostname作用_SpringCloud基础教程(三)-Eureka进阶的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易传媒:亚运传播彰显内容影响力 AI加
- 下一篇: 小米申请注册澎湃智联商标,国际分类包含科