客户端升级系统升级策略
2015-07-28 19:32
169 查看
我们项目组的客户端多达20余种,两年前为这些客户端写了一个升级模块,但是不够强悍。去年年中重新做了一个客户端灰度升级系统,一个独立的系统专门为客户端升级提供服务。现在分享下这个新系统的升级策略。
为了灵活控制对外发布版的升级,发布版可以按百分比升级,按用户名升级,或者全量升级。
有些版本线上表现稳定,如果冒然升级,可能引发问题,因此提供这个升级选项。
如果版本有问题,或者太旧,就提供强制升级选项,必须让用户升级。
如果版本没有重大问题,跟新版本比较,可能仅仅缺少一些功能,那么提供非强制升级。用户如果不想升级,那么就cancel掉。
每种产品各自维护自己的产品线升级策略,互不干扰。
发布版
每种类型的客户端有且仅有一个对外发布版。版本号比发布版低的客户端都要升级到发布版。在客户端层面的升级形式有两种,登录升级和使用中升级。1.登录升级
登录前提示升级,一般是比较重要的升级方式才会配成登录升级。用户当然可以取消升级,但是如果旧版本配的是强制升级,那么登录升级就不会展示“取消”按钮。这个是系统的后门,防止有重大问题的客户端被使用。一旦出现这种情况,这个功能将是一根救命稻草。(我们线上某个版本的移动端3天内耗了用户4G流量,可惜它没有接入这个系统)2.使用中升级
如果提供了补丁包,那么升级将在后台静悄悄的发生,用户不会感知到升级过程。如果提供的只有全量包,那么新包下载好后,下次重启时将会安装发布版。为了灵活控制对外发布版的升级,发布版可以按百分比升级,按用户名升级,或者全量升级。
旧版本
老的版本有三种升级方式,1.强制升级,2.非强制升级,3.不升级。有些版本线上表现稳定,如果冒然升级,可能引发问题,因此提供这个升级选项。
如果版本有问题,或者太旧,就提供强制升级选项,必须让用户升级。
如果版本没有重大问题,跟新版本比较,可能仅仅缺少一些功能,那么提供非强制升级。用户如果不想升级,那么就cancel掉。
内测版
客户端版本包正式发布前,必须内测。以前我们遇到一个案例,一个有问题的包,没有内测,发出去后,就出大问题了。因此内测成为了客户端发包的一个基本流程(尤其是重要客户端)。如何获取内测包,给内测用户一人一个下载地址,让他们下下来然后把老的卸载,新的安起?NO,内测升级高于发布版升级,只要内测升级的名单列表里有的用户,会自动升级到内测版。内测升级还有另外一个策略,按百分比升级。全量正式对外发布前,可以设置一个百分比,根据灰度算法,会有一定比例的用户升级到内测版。手动升级
作为一个成熟的客户端,手动升级时必须要有的,QQ和微信都提供的这样的功能。当发布版的发布策略是按比例发布或者内测用户发布,那么就只用部分用户能自动获取最新版本的客户端。客户端的手动升级功能让不在灰度范围内的用户也升级到最新发布版。每种产品各自维护自己的产品线升级策略,互不干扰。
相关文章推荐
- USB驱动开发之mass storage的枚举识别过程
- Just Do It: 学习Sinatra
- linux系统管理之无人值守网络安装linux操作系统
- Mybatis 从0-10000
- Verilog之event
- iOS UILabel的输出自适应高度设置
- NYOJ-开心的小明
- HDU 1799
- C语言 static 的作用
- 如何找出单链表中的倒数第K个元素
- 报错:System.Data”中不存在类型或命名空间名称“OracleClient
- java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map
- Git远程操作详解
- beego环境配置须知
- 解决PHPCMS添加栏目时报错
- nginx实现动静分离负载均衡集群
- Class类,反射与注解
- HDOJ 1870 愚人节的礼物(水题)(栈练习)
- IE上传本地文件时,无需改变浏览器设置就能完美得到完整路径的解决方案
- nyoj苹果