您好,登錄后才能下訂單哦!
場景:近期小L發布app的時候遇到個頭疼的事情,由于蘋果app store需要審核原因,項目需要部署最新版本,但又不能影響來版本的正常使用;
????分析問題:如果是app業務相關的程序bug、或者是預發布版本
????解決方案:配置dubbo多版本
<dubbo:protocol?id="customerRest"?name="rest"?port="xxxxx"?/> <!--?ref:要注入的Service實現?--> <dubbo:service?interface="com.jlj.erp.app.dubbo.service.customer.CustomerApi"? ref="customerApi"?version="1.0"?group="group-customer" protocol="customerRest"??timeout="60000"?/> <!--?ref:要注入的Service實現?--> <dubbo:service?interface="com.jlj.erp.app.dubbo.service.customer.CustomerApi"? ref="customerVApi2"?version="1.1"?group="group-customer" protocol="customerRest"?timeout="60000"?/>
實現相同的接口,只是接口對應的版本不一樣從1.0到1.1,按照需求對1.1版本的接口進行實現,這樣發布時,新老接口就會并存,如果需要強制更新審核通過之后會將老版本(1.0版本代碼去掉)停掉運行新版本,如果不需強制更新,那么就可以新老版本并存
客戶端調用,小L用的是dubbox 所以不同的版本配置不同的路徑即可
????????http://127.0.0.1:80/a//xxx/v1(老) @GET @Path("/xxx/v1") public?ApiResult?xxx(@QueryParam("code")?String?resourceCode) ?http://127.0.0.1:80/a//xxx/v2(新) @GET @Path("/xxx/v2") public?ApiResult?xxx(@QueryParam("code")?String?resourceCode)
如果是數據結構發生變化的話小L不建議使用該方式
這樣的情況需要具體問題具體定解決方案,可以分開部署,可以做預發布環境,部署1個具有新表結構和對象的測試數據庫(預發布環境)。
對于改動較大的,產品新增了重量級新功能的,業務層面或者底層表結構上都不兼容的,建議是要做強制升級的。
注:接口的實現方法 按照接口版本定;接口新加的方法寫在V1版本中,如果V1版本中的某個方法參數條件變化了,那么把新的實現寫在V2版本里面,V1版本的實現保留
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。