Spring Cloud Netflix 学习笔记(六)—多语言支持(Sidecar)
Sidecar用于将第三方服务接入进Spring Cloud生态圈中,从而添加Spring Cloud组件对其的支持。而我们访问第三方服务也变得简单。
Sidecar 包含一个简单的HTTP API来获取给定服务的所有实例(即主机和端口)。然后可以通过从Eureka获取其路由条目的嵌入式Zuul代理来代理服务调用。可以通过主机查找或通过Zuul代理访问Spring Cloud Config服务器。但是第三方程序必须执行健康检查,以便Sidecar可以向应用程序启动或关闭时向eureka报告。
1、使用示例
1.1、创建第三方服务
创建一个本地的第三方Spring Boot工程,并提供一个服务接口

@RestController
public class TestController {
@GetMapping("/test")
public String test() {
return "other : test";
}
}
server:
port: 8300
1.2、创建Sidecar工程
在springcloud父工程下创建一个名为sidecar的子模块

1.3、导入依赖
为sidecar工程导入eureka client 和sidecar依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-sidecar</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
1.4、添加配置
在sidecar的applic.yml中添加如下配置
server:
port: 8400
spring:
application:
name: sidecar
eureka:
client:
serviceUrl:
defaultZone: http://scott:scott@localhost:8761/eureka/,http://scott:scott@localhost:8762/eureka/
fetch-registry: true
register-with-eureka: true
instance:
instance-id: ${spring.cloud.client.hostname}:${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
#代理目标工程的端口
sidecar:
port: 8300
1.5、调用
修改emp模块,添加对other服务接口的调用
@FeignClient(value = "sidecar")
public interface OtherClient {
@RequestMapping("/test")
String test();
}
@RestController
@RequestMapping("/emp")
public class EmpController {
@Autowired
private OtherClient otherClient;
@GetMapping("/other/test")
public String other() {
return otherClient.test();
}
...
}
1.6、测试
在浏览器输入 http://localhost:8100/emp/other/test

浙公网安备 33010602011771号