設計微服務介面時,盡量考慮介面相容性,這話怎麼理解,比如有以下的乙個微服務介面,一開始定義的引數只要username以及id:
void
sayhello
(string username, string id)
;
但是之後需要再加個引數age,就變成接下來這樣了:
void
sayhello
(string username, string id, string age)
;
這時候,由於介面被改變了,該介面所對應的微服務模組就要重新編譯發布,同時有呼叫該介面的微服務也需要修改介面對應的引數,否則引數不對應,一樣會報錯。
這時候其實有乙個模組可以作為切入點來配合做介面的相容,那就是公共模組,一般來說,如果是微服務架構,涉及到微服務間的通訊的類,都需要維護在乙個公共的模組,這樣可以避免多模組維護相同類,我碰到的專案中,這個模組一般被命名為***x-common,或者***x-facade,所以這時候在公共模組中定義乙個bean,如下:
public
class
userinfo
public
void
setid
(int id)
public string getusername()
public
void
setusername
(string username)
public
intgetage()
public
void
setage
(int age)
public
userinfo
(int id, string username,
int age)
}
通過定義乙個類,把引數容納進去,介面就變成了如下這樣:
public
void
sayhello
(userinfo userinfo);
使用以上的方式,如果還要再加引數,就可以很直接的加在該類中,介面引數也不會變,所以也無需再重新編譯介面所在的微服務,這樣對呼叫該介面的其他微服務來說,影響降到了最低,只需要公升級公共模組所在的jar包就可以相容舊版本了。 微服務RESTful 介面設計規範
網路應用程式,分為前端和後端兩個部分。當前的發展趨勢,就是前端裝置層出不窮 手機 平板 桌面電腦 其他專用裝置.因此,必須有一種統一的機制,方便不同的前端裝置與後端進行通訊。這導致api構架的流行,甚至出現 apifirst 的設計思想。restful api是目前比較成熟的一套網際網路應用程式的a...
微服務RESTful 介面設計規範
網路應用程式,分為前端和後端兩個部分。當前的發展趨勢,就是前端裝置層出不窮 手機 平板 桌面電腦 其他專用裝置.因此,必須有一種統一的機制,方便不同的前端裝置與後端進行通訊。這導致api構架的流行,甚至出現 apifirst 的設計思想。restful api是目前比較成熟的一套網際網路應用程式的a...
微服務架構中不同微服務之間的介面呼叫
假定系統管理微服務的例項名稱為system,在系統管理中查詢碼表 api system codetable querydatadictionarybydiccode 在自己的微服務中呼叫系統管理的查詢碼表介面寫法如下 datadictionaryservice authorizedfeignclie...