《Spring Cloud Netflix官方文档》10. 使用 Sidecar支持多语言

原文链接

你有non-jvm语言也想使用Eureka,Ribbon和Config Server? Spring Cloud Netflix Sidecar灵感来自Netflix Prana,它包含一个简单的http api去获取给定服务的所有实例(主机和端口)。你也可以通过嵌入式Zuul代理代理服务调用,Zuul 代理从Eureka获取全部路由信息。可直接通过主机查找或通过Zuul代理访问Spring Cloud Config Server。non-jvm程序需要实现健康检查,这样Sidecar 才能向eureka 报告程序是否在线或宕机。

要把Sidecar 引入到你的项目中,只需加入依赖 group:org.springframework.cloudartifact ,artifact id :spring-cloud-netflix-sidecar。

要启用Sidecar ,创建一个Spring Boot应用并包含@EnableSidecar注释。这个注释由@EnableCircuitBreaker,@EnableDiscoveryClient和@EnableZuulProxy构成。把这个non-jvm应用在同一台主机上跑起来。

配置Sidecar,在application.yml中增加sidecar.port和sidecar.health-uri。sidecar.port属性是non-jvm应用的监听端口。这样Sidecar能够注册应用到Eureka中。sidecar.health-uri是一个non-jvm应用的可访问uri模拟Spring Boot的健康检查。uri应该返一个如下的json文档:

health-uri-document. 

{
  "status":"UP"
}

这是一个Sidecar应用application.yml的例子:

application.yml. 

server:
  port: 5678
spring:
  application:
    name: sidecar

sidecar:
  port: 8000
  health-uri: http://localhost:8000/health.json

调用DiscoveryClient.getInstances()方法的api是/hosts/{serviceId}。这个例子调用/hosts/customers并返回两个不同主机的实例。这个api non-jvm应用也能访问(如果是sidecar,端口是5678)地址是:
http://localhost:5678/hosts/{serviceId}

.

/hosts/customers. 

[
    {
        "host": "myhost",
        "port": 9000,
        "uri": "http://myhost:9000",
        "serviceId": "CUSTOMERS",
        "secure": false
    },
    {
        "host": "myhost2",
        "port": 9000,
        "uri": "http://myhost2:9000",
        "serviceId": "CUSTOMERS",
        "secure": false
    }
]

Zuul代理为每个以/<serviceId>被eureka已知的服务原子的添加路由,so the customers service is available at
/customers。non-jvm应用能够通过http://localhost:5678/customers访问客户服务(假设sidecar监听5678端口)

如果Config Server注册到Eureka,non-jvm应用能够通过Zuul  代理访问。如果ConfigServer的 serviceId是configserver并且Sidecar 监听的端口是5678,那么Config Server能通过http://localhost:5678/configserver 访问。

non-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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98831.html

(0)
上一篇 2021年8月21日
下一篇 2021年8月21日

相关推荐

发表回复

登录后才能评论