你是否有但願利用Eureka、Ribbon和Config Server的非JVM語言?Spring Cloud Netflix Sidecar的靈感來自Netflix Prana,它包含一個HTTP API,用於獲取給定服務的全部實例(按主機和端口)。你還能夠經過嵌入式Zuul代理代理服務調用,該代理從Eureka獲取其路由條目,能夠經過主機查找或Zuul代理直接訪問Spring Cloud Config Server,非JVM應用程序應實現健康檢查,以便Sidecar能夠向Eureka報告應用程序是啓動仍是關閉。git
要在項目中包含Sidecar,請使用組ID爲org.springframework.cloud
和工件IDspring-cloud-netflix-sidecar
的依賴項。github
要啓用Sidecar,請使用@EnableSidecar
建立Spring Boot應用程序,此註解包括@EnableCircuitBreaker
、@EnableDiscoveryClient
和@EnableZuulProxy
,在與非JVM應用程序相同的主機上運行生成的應用程序。spring
要配置Sidecar,請將sidecar.port
和sidecar.health-uri
添加到application.yml
,sidecar.port
屬性是非JVM應用程序偵聽的端口,這樣Sidecar能夠正確地向Eureka註冊應用程序,sidecar.health-uri
是可在非JVM應用程序上訪問的URI,它模仿Spring Boot健康指示器,它應該返回相似於如下內容的JSON文檔:json
health-uri-document服務器
{ "status":"UP" }
如下application.yml
示例顯示了Sidecar應用程序的示例配置:app
server: port: 5678 spring: application: name: sidecar sidecar: port: 8000 health-uri: http://localhost:8000/health.json
DiscoveryClient.getInstances()
方法的API是/hosts/{serviceId}
,如下針對/hosts/customers
的示例響應返回在不一樣主機上的兩個實例:ide
/hosts/customersui
[ { "host": "myhost", "port": 9000, "uri": "http://myhost:9000", "serviceId": "CUSTOMERS", "secure": false }, { "host": "myhost2", "port": 9000, "uri": "http://myhost2:9000", "serviceId": "CUSTOMERS", "secure": false } ]
非JVM應用程序(若是sidecar在端口5678上)能夠在http://localhost:5678/hosts/{serviceId}
訪問此API。url
Zuul代理自動將Eureka中已知的每一個服務的路由添加到/<serviceId>
,所以customers服務可在/customers
處得到,非JVM應用程序能夠訪問位於http://localhost:5678/customers
的customer服務(假設sidecar正在偵聽端口5678)。代理
若是配置服務器已在Eureka中註冊,則非JVM應用程序能夠經過Zuul代理訪問它,若是ConfigServer的serviceId
是configserver
且Sidecar在端口5678上,則能夠在http://localhost:5678/configserver
上訪問它。
非JVM應用程序能夠利用Config Server返回YAML文檔的能力,例如,調用http://sidecar.local.spring.io:5678/configserver/default-master.yml可能會致使YAML文檔相似於如下內容:
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ password: password info: description: Spring Cloud Samples url: https://github.com/spring-cloud-samples
要在使用HTTPs時將健康檢查請求設置爲接受全部證書,請將sidecar.accept-all-ssl-certificates
設置爲true
。