Dubbo的API包什么時候需要升級版本號?
- 1.接口里面方法的參數(shù)發(fā)生變化:
- 2.接口里面增加新的方法:
- 3.服務(wù)增加新的接口:
前言
盡管現(xiàn)在SpringCloud現(xiàn)在盛行市場,但是使用的dubbo的公司也大量存在,之前我使用SpringCloud的時候也借鑒了dubbo的api的架構(gòu),直接@FeignClient("classServer")注入接口的實例,完成微服務(wù)之間的調(diào)用。架構(gòu)如下:
就是借鑒了dubbo的api在controller層抽象出來一層接口。我算是同時使用過SpringCloud和Dubbo,二者確實都有優(yōu)缺點,不是這篇文章討論的重點,這篇文章主要討論下我們使用dubbo的時候什么時候升級版本號。
1.接口里面方法的參數(shù)發(fā)生變化:
當(dāng)方法里面的參數(shù)發(fā)生變化:比如舊的代碼:
- f(int a)->(int a,int b)
如果是這種的改造的話,消費者代碼和服務(wù)者代碼都的改變,服務(wù)需要重新部署,版本號升不升級已經(jīng)作用不大。
2.接口里面增加新的方法:
舉例:
- Public interface A{
- Integer f a(int b);
- }
- 升級為:
- Public interface A{
- Integer f a(int b);
- String f c (String d);
此時應(yīng)該版本升級,1.0.0->1.0.1,此種版本升級是為了避免非本地環(huán)境的其他環(huán)境服務(wù)重啟引用同一個包而沒有實現(xiàn)新方法導(dǎo)致構(gòu)建失敗的情況發(fā)生。
3.服務(wù)增加新的接口:
舉例子:
- Public interface A{
- Integer f a(int b);
- }
- 增加:
- Public interface A{
- Integer f a(int b);
- }
- Public interface B{
- Integer f c(int d);
- }
此種服務(wù)中增加新的接口文件,無論版本是否升級不會造成沖突無法構(gòu)建的情況發(fā)生。
總結(jié)
雖然說版本升級是一件小事情,但是如果不注意的話還會產(chǎn)生很大的項目問題,導(dǎo)致服務(wù)無法啟動的情況發(fā)生,如果你有不同的想法,歡迎關(guān)注我的公眾號:Java時間屋 隨時交流。