引言
隨著近幾年微服務(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使用步驟
首先我們需要一個第三方的程序,可以是python,nodejs等非java語言編寫的程序,本文我們使用了一個java編寫的第三方接口程序。
第三方程序提供health接口,接口返回如下格式的json字符串。
{
"status":"UP"
}
- 創(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)示意圖如下

第三方程序

Online服務(wù)


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

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

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