APP多版本共存,服务端如何兼容?
做過APP產品的技術人員都知道,APP應用屬于一種C/S架構的,所以在做多版本兼容,升級等處理則比較麻煩,不像web應用那么容易。下面將帶大家分析幾種常見的情況和應對方式:?
小改動或者新加功能的?
這種情況,數據庫結構和API程序一般是可以兼容多版本的,所以不用強制升級,可以坐到多版本共存。?
盡量采用數據庫層面新增字段和API的方式,應用程序層面就可以兼容了。當然,API層面也可以部署多個版本來同時提供,但這個不是必須的?
但最重要的是數據庫層面的表結構那些能夠兼容到。
?
或者:?
總結:?
數據庫層面,盡量采用新增字段,而不是修改字段的原則,避免影響以前的業務。?
而服務端程序層面,API層盡量設計靈活,接入層可以支持“路由”最佳。主要有幾種思路,1. 在API方法中通過新增參數或者直接新增API方法(也可以理解為重載)。?
較少的改動可以這樣去做處理,但是改動多了會比較麻煩,不利用擴展。?
2. 代碼分不同分支版本,API部署不同子站點。通過api.xx.com/V1 和api.xx.com/V2方式訪問,或者通過apiV1.xxx.com,apiV2.xxx.com等方式區分訪問。當然,也可以在APP不同版本中請求時傳入標識,服務端通過Nginx或者APIGateWay等來實現服務路由。?
這種直觀上更加清晰,工作量也會大一些,會增加一定的維護和管理成本。?
后端的原子服務,也需要盡可能支持多版本。
如果是大改動,底層數據結構都不兼容,那只能提示強制升級了?
如果是強制升級,就不會有多版本共存的問題了,?
也不會有多套數據庫,也不會存在數據同步的問題。?
只需要這樣操作:?
在蘋果提交審核之前,我們事先準備好“新版本的數據結構和對象(view、proc、function等)腳本、遷移腳本或者程序、程序發布文件”等。?
1. 部署1個具有新表結構和對象的測試數據庫(預發布環境)。?
2. 部署1個新的API站點(不同域名,建議域名中使用版本號區分?;蛘卟捎貌煌诱军c的方式),配置連接測試庫和測試的(API站點、DB、緩存、ES、Nosql …這些單獨有一套預發布環境)?
3. 等蘋果審核通過之后,更新最新的程序,數據庫結構等到生產環境,并將API地址的域名的指向切換到生產環境中(網站、admin后臺等等可以直接發布了),運營人員在蘋果商店點擊上架操作,服務端升級完成(APP端會有強制更新的提示)。當然,這個過程中可能會造成短暫的停機時間,所以一般是選擇在晚上操作。?
4. 提前將安卓最新APK放到我們的下載站或鏡像站,在3步服務端程序等都發布完成后,在運營后臺開啟安卓版本的強制升級提示(從我們的下載站或者鏡像站下載APK升級)。?
這樣,舊版本的安卓用戶,會強制升級到新的版本,不會影響到使用。?
與此同時,運營人員也需要在各大安卓市場去分發和上架最新的apk包,提供最新的其他渠道下載,避免用戶下載到舊程序,然后又提示強制升級影響體驗。
- 如果是大改動,數據庫結構和API程序都不兼容, 又不想去做強制升級,就會有多版本共存的問題
那就只能去部署兩套(或者更多個版本)數據庫,而且對于用戶產生內容和時效性要求較高的,需要雙向(甚至多向)去做同步。核心問題其實是數據庫有狀態,這種是很困難的。?
這種很容易出問題,容易出現沖突和數據不一致。?
而且數據結構不一樣的情況下,是很難去兼容的。
所以,對于改動較大的,產品新增了重量級新功能的,業務層面或者底層表結構上都不兼容的,建議是要做強制升級的。
或者:
2.如果是大改動,底層數據結構都不兼容,那只能提示強制升級了?
如果是強制升級,就不會有多版本共存的問題了,?
也不會有多套數據庫,也不會存在數據同步的問題。?
只需要這樣操作:?
在蘋果提交審核之前,我們事先準備好“新版本的數據結構和對象(view、proc、function等)腳本、遷移腳本或者程序、程序發布文件”等。?
1. 部署1個具有新表結構和對象的測試數據庫(預發布環境)。?
2. 部署1個新的API站點(不同域名,建議域名中使用版本號區分?;蛘卟捎貌煌诱军c的方式。通過api.xx.com/V1 和api.xx.com/V2方式區分),配置連接測試庫和測試的(API站點、DB、緩存、ES、Nosql …這些單獨有一套預發布環境)?
3. 等蘋果審核通過之后,更新最新的程序,數據庫結構等到生產環境,并將API地址的域名的指向切換到生產環境中(網站、admin后臺等等可以直接發布了),運營人員在蘋果商店點擊上架操作,服務端升級完成(APP端會有強制更新的提示)。當然,這個過程中可能會造成短暫的停機時間,所以一般是選擇在晚上操作。?
4. 提前將安卓最新APK放到我們的下載站或鏡像站,在3步服務端程序等都發布完成后,在運營后臺開啟安卓版本的強制升級提示(從我們的下載站或者鏡像站下載APK升級)。?
這樣,舊版本的安卓用戶,會強制升級到新的版本,不會影響到使用。?
與此同時,運營人員也需要在各大安卓市場去分發和上架最新的apk包,提供最新的其他渠道下載,避免用戶下載到舊程序,然后又提示強制升級影響體驗。
3.如果是大改動,數據庫結構和API程序都不兼容,?
又不想去做強制升級,就會有多版本共存的問題?
那就只能去部署兩套(或者更多個版本)數據庫,而且對于用戶產生內容和時效性要求較高的,需要雙向(甚至多向)去做同步。核心問題其實是數據庫有狀態,這種是很困難的。?
這種很容易出問題,容易出現沖突和數據不一致。?
而且數據結構不一樣的情況下,是很難去兼容的。
所以,對于改動較大的,產品新增了重量級新功能的,業務層面或者底層表結構上都不兼容的,建議是要做強制升級的。
轉載于:https://www.cnblogs.com/dinglang/p/6092405.html
總結
以上是生活随笔為你收集整理的APP多版本共存,服务端如何兼容?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS和JS样式属性对照表
- 下一篇: mac下mysql的安装