自动更新系统使用指南

一、系统介绍:

该系统是更新服务器,项目地址: http://github.com/feiyan35488/cloud ,正在考虑想mongodb的移植,由于本身用了jpa移植起来应该难度不大

二、系统使用手册


  1.      部署系统到WEB服务器下,修改db信息,将offline.sql导入到数据库中,启动服务器
  2. 访问 127.0.0.1/ ,输入admin,mucang 登录
  3. 该用户为超级管理员,可以添加用户,这里我们不做额外操作,直接新建模块:名称:android_ad;中文名称:android广告;描述:广告数据。   保存
  4. 新建发布, 输入名称:广告第一版;描述:随意;时间:为该发布的有效时间,不填则一直有效;选择模块;条件用于限制客户端范围; 选择发布的更新包(更新包内不能含有中文或中文路径)。 保存
  5. 客户端发送一个post json请求, url为 http://127.0.0.1/update.do?version=1.2.23&jsonSign=xxx&sign=xxx, post的json数据为:{"offlineVersion":"1.1","modules":[{"name":"module1","version":0,"update":1234,"extra":{"a":"2"}}]}
  6. 响应结果为json格式,如下:{ result:true/false,
           errcode:         ,
           message:         ,(当result=true时,errcode和message两个参数不存在)
           updatetime:      ,值为 System.currentMileSecends()
           data:[{result:true/false,
                  errcode:   ,   当result == true时 errcode和message不存在
                  message:   ,
                  version:   ,
                  name:      ,
                  updatetime: ,  当result = false时, md5,url ,size不存在,version也可能不存在
                  md5:       ,
                  url:      ,
                  size:      
                  },{}], 为各模块的返回结果
         }
  7. jsonSign为 post的json串的md5结果, sign为 除&sign=xxx以外的url的md5加密结果,这是采用盐值加密,系统默认是mucang,可在服务端配置

三、具体处理过程


  1. 客户端发送请求之后,首先会验证jsonSign 是否正确, sign是否正确,确保请求合法
  2. 请求合法,则解析json串,遍历处理每个module的更新情况
  3. 根据模块最新版本和 客户端module当前版本, 生成两个更新包的差异包,生成manifest文件记录差异信息,然后将manifest信息和需要添加和修改的文件重新打包为一个差异包,将该差异包上传到aliyun上,将下载流量导向外站。生成完后将差异包的url返回给客户端
  4. 实际处理中将生成差异包过程使用单任务队列来完成,请求时根据任务表的完成情况就可以直接返回
  5. 第一个需要该差异包的客户端会触发该任务,然后等任务完成后结果才会可用。
  6. 客户端发送请求时,判断模块是否更新根据该发布设置的条件,没有条件直接通过,有条件的话 只要有一条条件通过则算通过,每个条件由多个规则构成,模块需要通过条件的所有规则才算通过。
  7. 规则的构成: key 、操作符、value,  key从get参数 和module的 extra 中取值, 到这里就可以知道,可以通过对发布设置条件,就可以控制发布的影响范围了

具体的例子我就不提供了,使用客户端按要求发送post json请求即可




你可能感兴趣的:(自动更新系统使用指南)