场景:近期小L发布app的时候遇到个头疼的事情,由于苹果app store需要审核原因,项目需要部署最新版本,但又不能影响来版本的正常使用;
分析问题:如果是app业务相关的程序bug、或者是预发布版本
解决方案:配置dubbo多版本
1
2
3
4
5
6
7
8
9
10
<code><dubbo:protocol id=</code><code>"customerRest"</code> <code>name=</code><code>"rest"</code> <code>port=</code><code>"xxxxx"</code> <code>/></code>
<code><!-- ref:要注入的Service实现 --></code>
<code><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>/></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>/> </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,如需转载请自行联系原作者