日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

eureka hostname作用_SpringCloud基础教程(三)-Eureka进阶

發布時間:2024/9/19 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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进阶的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。