2. 服務發現:Eureka服務器
2.1 如何創建Eureka服務器
引用org.springframework.cloud的spring-cloud-starter-eureka-server就可以創建Eureka服務器。在當前Spring Cloud版本中如何進行詳細設置可以查看Spring Cloud工程頁面。
?
2.2 如何運行Eureka服務器
Eureka服務器的示例代碼:
| 3 | public?class?Application { |
| 5 | ????public?static?void?main(String[] args) { |
| 6 | ????????newSpringApplicationBuilder(Application.class).web(true).run(args); |
該服務器有一個UI主頁,并且Eureka每一個功能點都可以通過/eurake/*形式的HTTP API來訪問。
Eureka背景閱讀:查看flux capacitor和google group discussion頁面。
提示:由于Gradle缺少設置父工程的方式,僅僅靠spring-cloud-starter-eureka-server會使得應用在啟動時失敗。要解決這個問題必須將Spring Boot的Gradle插件添加進來,并且像下面這種方式導入Spring cloud的父工程。
build.gradle.
| 03 | ????classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE") |
| 07 | apply plugin:?"spring-boot" |
| 11 | ????mavenBom?"org.springframework.cloud:spring-cloud-dependencies:Brixton.RELEASE" |
2.3 高可用性,區塊和區域
Eureka服務器并沒有一個后臺存儲,但是注冊表中的所有服務實例都要得發送心跳以更新它們的注冊信息(所以這可以在內存中操作)。客戶端也會有一個對eurake注冊信息的緩存(所以它們的每次單獨服務請求并不非得去注冊表中查詢)。
默認情況下Eureka服務器也是一個Eureka客戶端并且需要(至少)一個服務URL來定位到節點。如果你沒有提供它也會運行,但是在日志中會出現很多關于沒有注冊該節點的雜亂信息。
關于客戶端側的區塊和區域可以查看如下Ribbon詳細支持頁面。
2.4 單機模式
只要有某種監控或者是彈性運行時間(比如Cloud Foundry)來使服務存活,兩個緩存(客戶端和服務器)和心跳機制的整合使得單機Eureka服務器對故障保有相關的彈性。在單機模式下,你可能更喜歡關掉服務器的客戶端行為,使得它不會不斷失敗的訪問節點。例如:
| 06 | ????hostname: localhost |
| 08 | ????registerWithEureka:?false |
| 09 | ????fetchRegistry:?false |
| 11 | ??????defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ |
注意serviceUrl和本地實例指向同一個主機。
2.5 節點感知
Eureka通過運行多個實例并要求它們彼此注冊來使其高可用。實際上,這是它的默認行為,所以你需要做的就是給節點添加一個有效的serviceUrl來使其正常工作,例如:
Application.yml(兩個相互感知的Eureka服務器節點)
| 09 | ??????defaultZone: http://peer2/eureka/ |
| 19 | ??????defaultZone: http://peer1/eureka/ |
在本例中YAML配置文件通過不同的Spring profiles使得同一個服務器可以運行在兩臺主機上。你可更改/etc/hosts文件來解析主機名,用這個配置文件在單機上測試節點感知(在生產中這樣做是沒有多少意義的)。實際上如果你運行的機器知道自己的主機名(默認會通過java.net.InetAddress查找),那么eureka.instance.hostname是不需要的。
你可以在一個系統中添加多個節點,他們之間只要相互連接就能自己同步注冊信息。如果這些節點在物理上是分離的(在一個或多個數據中心),那么該系統原則上是可以避免split-brain型故障。
2.6 IP地址偏好
在某些情況下,使用服務的IP地址比主機名好。通過將eureka.instance.preferIPAddress設置為true,應用在注冊eureka時就會使用IP地址而不是主機名。
原創文章,轉載請注明:?轉載自并發編程網 – ifeve.com本文鏈接地址:?《Spring Cloud Netflix官方文檔》2. 服務發現:Eureka服務器
總結
以上是生活随笔為你收集整理的《Spring Cloud Netflix官方文档》2. 服务发现:Eureka服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。