天天看點

APP 多版本釋出之dubbox服務端配置

場景:近期小L釋出app的時候遇到個頭疼的事情,由于蘋果app store需要稽核原因,項目需要部署最新版本,但又不能影響來版本的正常使用;

    分析問題:如果是app業務相關的程式bug、或者是預釋出版本

    解決方案:配置dubbo多版本

1

2

3

4

5

6

7

8

9

10

<code>&lt;dubbo:protocol id=</code><code>"customerRest"</code> <code>name=</code><code>"rest"</code> <code>port=</code><code>"xxxxx"</code> <code>/&gt;</code>

<code>&lt;!-- ref:要注入的Service實作 --&gt;</code>

<code>&lt;dubbo:service </code><code>interface</code><code>=</code><code>"com.jlj.erp.app.dubbo.service.customer.CustomerApi"</code> 

<code>                </code><code>ref=</code><code>"customerApi"</code> <code>version=</code><code>"1.0"</code> <code>group=</code><code>"group-customer"</code>

<code>                </code><code>protocol=</code><code>"customerRest"</code>  <code>timeout=</code><code>"60000"</code> <code>/&gt;</code>

<code>                </code><code>ref=</code><code>"customerVApi"</code> <code>version=</code><code>"1.1"</code> <code>group=</code><code>"group-customer"</code>

<code>                </code><code>protocol=</code><code>"customerRest"</code> <code>timeout=</code><code>"60000"</code> <code>/&gt;    </code>

實作相同的接口,隻是接口對應的版本不一樣從1.0到1.1,按照需求對1.1版本的接口進行實作,這樣釋出時,新老接口就會并存,如果需要強制更新稽核通過之後會将老版本(1.0版本代碼去掉)停掉運作新版本,如果不需強制更新,那麼就可以新老版本并存

用戶端調用,小L用的是dubbox 是以不同的版本配置不同的路徑即可

<code>        </code><code>http:</code><code>//127.0.0.1:80/a//xxx/v1(老)</code>

<code>    </code><code>@GET</code>

<code>    </code><code>@Path</code><code>(</code><code>"/xxx/v1"</code><code>)</code>

<code>    </code><code>public</code> <code>ApiResult xxx(</code><code>@QueryParam</code><code>(</code><code>"code"</code><code>) String resourceCode)</code>

<code>    </code> 

<code>     </code><code>http:</code><code>//127.0.0.1:80/a//xxx/v2(新)</code>

<code>    </code><code>@Path</code><code>(</code><code>"/xxx/v2"</code><code>)</code>

如果是資料結構發生變化的話小L不建議使用該方式

這樣的情況需要具體問題具體定解決方案,可以分開部署,可以做預釋出環境,部署1個具有新表結構和對象的測試資料庫(預釋出環境)。

對于改動較大的,産品新增了重量級新功能的,業務層面或者底層表結構上都不相容的,建議是要做強制更新的。

<a href="https://s5.51cto.com/wyfs02/M00/9F/5D/wKioL1mbxkKBMsjbAAE839KUT4I564.jpg-wh_500x0-wm_3-wmp_4-s_1554331599.jpg" target="_blank"></a>

注:接口的實作方法 按照接口版本定;接口新加的方法寫在V1版本中,如果V1版本中的某個方法參數條件變化了,那麼把新的實作寫在V2版本裡面,V1版本的實作保留

本文轉自 xinsir999 51CTO部落格,原文連結:http://blog.51cto.com/xinsir/1954550,如需轉載請自行聯系原作者

繼續閱讀