Spring Cloud Alibaba Sidecar 介紹
自 Spring Cloud Alibaba 2.1.1 版本後增加了 spring-cloud-alibaba-sidecar 模塊作為作為一個代理的服務來間接性的讓其他語言可以使用spring cloud alibaba等相關組件。通過與網關的來進行路由的映射,從而可以做到服務的獲取,然後可以使用Ribbon間接性調用。
如上圖, Spring Cloud 應用 請求 sidercar 然後轉發給其他語言的模塊,優勢是對於異構服務代碼 零侵入,不需要直接根據 nacos 或其他註冊中心 api 註冊等
使用入門
構建其他語言接口服務
- 基於go 寫個簡單的服務接口
http://127.0.0.1:8089/sidecar
package main
import (
\t"encoding/json"
\t"fmt"
\t"log"
\t"net/http"
)
func main() {
\thttp.HandleFunc("/sidecar", sidecar)
\thttp.HandleFunc("/heath", health)
\tlog.Fatal(http.ListenAndServe(":8089", nil))
}
func sidecar(w http.ResponseWriter, r *http.Request) {
\t_, _ = fmt.Fprintf(w, "hello spring cloud alibaba sidecar")
}
func health(w http.ResponseWriter, r *http.Request) {
\tw.Header().Set("Content-Type", "application/json")
\tactuator := make(map[string]string)
\tactuator["status"] = "UP"
\t_ = json.NewEncoder(w).Encode(actuator)
}
構建 sidercar 應用
- 增加 sidecar 依賴
<dependency>
\t<groupid>com.alibaba.cloud/<groupid>
\t<artifactid>spring-cloud-starter-alibaba-sidecar/<artifactid>
\t<version>2.1.1.RELEASE/<version>
/<dependency>
- 配置 application.yml
server:
port: 8088
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
application:
name: go-provider
# 配置異構服務
sidecar:
ip: localhost
port: 8089
health-check-url: http://localhost:8089/health
構建 nacos consumer應用
- application.yml
server:
port: 8087
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
application:
name: nacos-consumer
- consumer 邏輯
@RestController
@EnableDiscoveryClient
@SpringBootApplication
public 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() {
return restTemplate.getForObject("http://go-provider/sidecar", String.class);
}
}
測試使用
- 訪問spring cloud consumer 應用
curl http://localhost:8087/test
- 輸出 go-provider應用
hello spring cloud alibaba sidecar
獲取資料:
最後給大家分享一份學習資料,裡面包括:(BATJ面試資料、高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)和Java進階學習路線圖。
戳這裡即可領取-->
閱讀更多 JAVA高級程序員 的文章