SpringCloud提供了一個組件Sidecar,可以將非Java的微服務整合到SpringCloud中,本質就是建立一個Sidecar工程作為代理,Sidecar工程注冊到Eureka服務,同時Sidecar工程調用非Java微服務的Http接口。
吐槽:看了很多博客,都是舉得一個Python微服務的例子,如果Python只有一個服務,而不是分布式的服務,直接通過Rest調用就完了,何必還要用Sidecar代理一下,繞了一圈,SpringCloud的初衷就是為了治理分布式應用,實際上是用不上SpringCloud的。
言歸正傳,如果是分布式的話,思路也很簡單,以Python為例,為每一個Python微服務副本都啟動一個Sidecar應用即可。
非Java微服務有一個條件,必須給Sidecar提供一個用於檢查其健康狀態的接口,這個接口需要返回 {“status”:“UP”} 固定返回值,配置完畢后,Python微服務就可以像Java Eureka客戶端一樣調用。
對於Python調用Java微服務如果需要考慮分布式的調用,可以看看Python有沒有相關的包,可以實現Http負載均衡調用。