APP 多版本發佈之dubbox服務端配置

場景:近期小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個具有新表結構和對象的測試數據庫(預發佈環境)。

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

wKioL1mbxkKBMsjbAAE839KUT4I564.jpg-wh_50

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章