go语言服务接入springcloud(sidecar)
一.Sidecar简介
Spring Cloud Netflix Sidecar 包含一个简单的http api来获取给定服务的所有实例(即主机和端口)。然后可以通过从Eureka获取其路由条目的嵌入式Zuul代理来代理服务调用。可以通过主机查找或通过Zuul代理访问Spring Cloud Config服务器。但是第三方程序必须执行健康检查,以便Sidecar可以向应用程序启动或关闭时向eureka报告。
上面是网上找的介绍,简单来说大概就是Sidecar可以拿到各种异构语言上面服务的所有信息,并将之兼容到springcloud框架中
重点是需要给异构语言加一个模仿springboot健康检查接口的可访问uri,返回一个json文档
{ status: ‘UP’ } ----一定是一个json文档
原有服务都不用做改变,只需要添加一个返回json文本的方法即可
一.编写go程序
二,创建sidecar项目(maven项目,一切默认就好)
需要注意配置application.properties,还有pom.xml,项目启动类中要加入@EnableSidecar注解
dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-sidecar</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
三,构建注册中心(springcloud项目,需要选择是eureka server)
同样后续配置pom.xml和application.properties,启动类中加入@EnableEurekaServer
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
四,配置客户端访问,(springcloud项目,默认即可)
同样后续配置pom.xml和application.properties,启动类中加入@EnableEurekaClient,@EnableFeignClients标签,暂时不知道到底用哪个
客户端的两个控制器代码如下:
用来与sidecar进行关联
@FeignClient("sidecar")
public interface GoController {
@RequestMapping("/helloWorld")
public String helloWorld();
}
用来和本地服务消费
@Controller
public class SidecarController {
@Autowired
private GoController goController;
@ResponseBody
@RequestMapping("/helloGo")
public String helloGo() {
return goController.helloWorld();
}
}
五,启动顺序
go项目先启动
启动eureka server
启动sidecar服务
启动客户端
启动sidecar服务后可以在eureka的界面看到服务注册并有消费记录1条
在客户端启动后,访问客户端的helloGo方法,可以调用到go项目中的返回结果,和go项目8060匹配
项目参考:https://blog.csdn.net/weixin_43859733/article/details/88241593