详解Spring Cloud Alibaba Sidecar多语言微服务异构!
自 SpringCloudAlibaba2.1.1 版本后增加了 spring-cloud-alibaba-sidecar 模块作为作为一个代理的服务来间接性的让其他语言可以使用springcloudalibaba等相关组件。通过与网关的来进行路由的映射,从而可以做到服务的获取,然后可以使用Ribbon间接性调用。
如上图,SpringCloud应用请求 sidercar 然后转发给其他语言的模块,优势是对于异构服务代码 零侵入,不需要直接根据 nacos 或其他注册中心api注册等
使用入门
构建其他语言接口服务
基于go写个简单的服务接口
http://127.0.0.1:8089/sidecar
packagemainimport( "encoding/json" "fmt" "log" "net/http")funcmain(){ http.HandleFunc("/sidecar",sidecar) http.HandleFunc("/heath",health) log.Fatal(http.ListenAndServe(":8089",nil)) }funcsidecar(whttp.ResponseWriter,r*http.Request){ _,_=fmt.Fprintf(w,"hellospringcloudalibabasidecar") } funchealth(whttp.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 依赖
com.alibaba.cloud spring-cloud-starter-alibaba-sidecar 2.1.1.RELEASE
配置 application.yml
server: port:8088spring: cloud: nacos: discovery: server-addr:localhost:8848 application: name:go-provider#配置异构服务sidecar: ip:localhost port:8089 health-check-url:http://localhost:8089/health
构建 nacosconsumer应用
application.yml
server: port:8087spring: cloud: nacos: discovery: server-addr:localhost:8848 application: name:nacos-consumer
consumer 逻辑
@RestController@EnableDiscoveryClient@SpringBootApplicationpublicclassNacosConsumerApplication{publicstaticvoidmain(String[]args){ SpringApplication.run(NacosConsumerApplication.class,args); }@Bean @LoadBalanced publicRestTemplaterestTemplate(){returnnewRestTemplate(); }@Autowired privateRestTemplaterestTemplate;@GetMapping("/test")publicStringtest(){returnrestTemplate.getForObject("http://go-provider/sidecar",String.class); } }
测试使用
访问springcloudconsumer应用
curlhttp://localhost:8087/test
输出 go-provider应用
hellospringcloudalibabasidecar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。