敖胤

绳锯木断,水滴石穿;聚沙成塔,集腋成裘。

导航

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

posted on 2021-03-26 16:45  敖胤  阅读(849)  评论(0)    收藏  举报