详解SpringCloudAlibabaSidecar多语⾔微服务异构
⾃Spring Cloud Alibaba 2.1.1版本后增加了spring-cloud-alibaba-sidecar模块作为作为⼀个代理的服务来间接性的让其他语⾔可以使⽤spring cloud alibaba等相关组件。通过与⽹关的来进⾏路由的映射,从⽽可以做到服务的获取,然后可以使⽤Ribbon间接性调⽤。
如上图, Spring Cloud 应⽤请求sidercar然后转发给其他语⾔的模块,优势是对于异构服务代码零侵⼊,不需要直接根据nacos或其他注册中⼼ api 注册等
使⽤⼊门
构建其他语⾔接⼝服务
基于go 写个简单的服务接⼝
package mainimport ( "encoding/json"
"fmt"
"log"
"net/http")func main() {
http.HandleFunc("/sidecar", sidecar)
http.HandleFunc("/heath", health) log.Fatal(http.ListenAndServe(":8089", nil))
}func sidecar(w http.ResponseWriter, r *http.Request) {
_, _ = fmt.Fprintf(w, "hello spring cloud alibaba sidecar")
}
func health(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
actuator := make(map[string]string)
actuator["status"] = "UP"
_ = json.NewEncoder(w).Encode(actuator)
}
构建 sidercar 应⽤
增加sidecar依赖
<dependency>
<groupid>com.alibaba.cloud</groupid>
<artifactid>spring-cloud-starter-alibaba-sidecar</artifactid>
<version>2.1.1.RELEASE</version></dependency>
配置l
springcloud和springboot
server:
port: 8088spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
application:
name: go-provider# 配置异构服务sidecar:
ip: localhost
port: 8089
health-check-url: localhost:8089/health
构建 nacos consumer应⽤
server:
port: 8087spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
application:
name: nacos-consumer
consumer逻辑
@RestController@EnableDiscoveryClient@SpringBootApplicationpublic class NacosConsumerApplication {  public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}  @Bean
@LoadBalanced
public RestTemplate restTemplate() {    return new RestTemplate();
}  @Autowired
private RestTemplate restTemplate;  @GetMapping("/test")  public String test() {    ForObject("go-provider/sidecar", String.class);  }
}
测试使⽤
访问spring cloud consumer 应⽤
curl localhost:8087/test
输出go-provider应⽤
hello spring cloud alibaba sidecar
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。