Spring Cloud Alibaba Sidecar 多語言微服務異構

Spring Cloud Alibaba Sidecar 介紹

自 Spring Cloud Alibaba 2.1.1 版本後增加了 spring-cloud-alibaba-sidecar 模塊作為作為一個代理的服務來間接性的讓其他語言可以使用spring cloud alibaba等相關組件。通過與網關的來進行路由的映射,從而可以做到服務的獲取,然後可以使用Ribbon間接性調用。

Spring Cloud Alibaba Sidecar 多語言微服務異構

如上圖, 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進階學習路線圖。

戳這裡即可領取-->


分享到:


相關文章: