1. 程式人生 > 程式設計 >詳解Spring Cloud Alibaba Sidecar多語言微服務異構

詳解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 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>

配置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

構建nacos consumer應用

application.yml

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() {    return restTemplate.getForObject("http://go-provider/sidecar",String.class);
  }

}

測試使用

訪問spring cloud consumer 應用

curl http://localhost:8087/test

輸出go-provider應用

hello spring cloud alibaba sidecar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。