springcloud使用 sidecar實(shí)現(xiàn)跨語言微服務(wù)調(diào)用

引言

隨著近幾年微服務(wù)的興起,越來越多的人使用springcloud作為微服務(wù)框架(基于java語言實(shí)現(xiàn)的微服務(wù)框架),因此就產(chǎn)生了這樣的需求:能否將非java語言實(shí)現(xiàn)的項(xiàng)目接入到springcloud框架中。
答案是肯定的,springcloud為了解決此問題,推出了一款名叫sidecar的組件。

Sidecar

Spring Cloud Netflix Sidecar 包含一個簡單的http api來獲取給定服務(wù)的所有實(shí)例(即主機(jī)和端口)。然后可以通過從Eureka獲取其路由條目的嵌入式Zuul代理來代理服務(wù)調(diào)用。可以通過主機(jī)查找或通過Zuul代理訪問Spring Cloud Config服務(wù)器。但是第三方程序必須執(zhí)行健康檢查,以便Sidecar可以向應(yīng)用程序啟動或關(guān)閉時(shí)向eureka報(bào)告。

Sidecar使用步驟

  1. 首先我們需要一個第三方的程序,可以是python,nodejs等非java語言編寫的程序,本文我們使用了一個java編寫的第三方接口程序。

  2. 第三方程序提供health接口,接口返回如下格式的json字符串。

{
"status":"UP"
}
  1. 創(chuàng)建sidecar項(xiàng)目

1 引入依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-netflix-sidecar</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
</dependencies>

2 配置文件

spring:
  application:
    name: microservice-sidecar  #服務(wù)名
server:
  port: 8070
eureka: #加入到eureka
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka
  instance:
    prefer-ip-address: true
sidecar:
  port: 8060     #異構(gòu)微服務(wù)的端口
  healthUri: http://localhost:8060/health  #對應(yīng)第三方程序的health接口

3 編寫啟動類

@SpringBootApplication
@EnableSidecar
public class SidecarApplication {
  public static void main(String[] args) {
    SpringApplication.run(SidecarApplication.class, args);
  }
}

注意添加@EnableSidecar注解

經(jīng)過上面的幾步sidecar服務(wù)已經(jīng)可以正常啟動,并且可以代理第三方程序,下面我們進(jìn)行測試。

測試

架構(gòu)示意圖如下


demo架構(gòu)示意圖.png

第三方程序


第三方服務(wù).png

Online服務(wù)


online服務(wù)代碼.png
online服務(wù)代碼

在online服務(wù)的controller調(diào)用第三方程序,如果能調(diào)通,說明我們的sidecar服務(wù)搭建成功。

啟動第三方程序
啟動注冊中心
啟動sidecar服務(wù)
啟動online微服務(wù)
服務(wù)啟動成功


啟動成功.png

我們調(diào)用online服務(wù)的query端口,如果返回了 第三方服務(wù)的字符串“query”則調(diào)用成功。

調(diào)用成功.png

至此,我們的第三方程序,就接入到了springcloud框架中。

參考文檔
https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/1.3.5.RELEASE/multi/multi__polyglot_support_with_sidecar.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容