背景
当前移动端的插件开发逐渐的由原来H5的方式转成了hybird的方式。而千牛当前有自己的插件[开发框架QAP](//open.taobao.com/docs/doc.htm?treeId=260&articleId=105783&docType=1),使用QAP框架之后开发插件的方式如下图
这种情况下,如果需要灰度或者测试某个功能的时候,需要经过一整套的开发测试流程(因为只有经过这样严格的流程之后才可能确保不会引入新的bug),如下图
这样做法的坏处就是耗时比较长,尤其是当某个bug出现的时候需要在非常短的时间内修复。
基于以上的背景,我们推出了远程配置服务,目标是:无需发布应用更新即可更改应用的行为的服务。
使用场景
理论上只要想通过简单的更改一个配置对应的值来更改应用行为的都可以使用。下面列举出来一些常见的场景
- **A/B Test**:比如:某个业务在具体的实现上有两种方案,而这两种方案不知道那种用户更加喜欢,这种情况下可以使用远程配置,配置中可以指定一定的规则,这个规则用来决定那些人使用A方案,那些人使用B方案。如果没有远程配置的话,同时只能给所有用户一个方案。
- **灰度**:比如:某个功能新的方案上线风险比较大,那么上线的时候使用原有的逻辑,在远程配置中增加一个配置,比如:灰度交易插件的某个功能,jiaoyi.open.new.plan.ratio=1(打开新方案的比例),达到降低此方案的上线风险。
- **动态修改变量的值**:比如:某个变量是控制不同等级的用户展示不同的内容。或者某个变量对应的值会在上线后需要动态变更。
- **细分人群,为不同的人群提供不同的服务**:比如:按照订单数,按照用户等级等等,举例如:经常使用应用的人,出现“评价此应用”按钮。订单量大的用户和订单量小的用户在订单列表页面展示不同的页面,提升他们的工作效率。
原理
原理如下图
isv在添加一个配置或者变更一个配置之后千牛服务端会实时的把当前这个变量同步到app的使用用户千牛客户端上,客户端可以使用最新的配置的值来更改应用的行为。
**注意事项:**
- **配置的key**:命名尽量见名知意,只允许英文和4种特殊字符(”.“、”:“、”-“、”_“)。比如:插件名.功能.行为,例如jiaoyi.open.new.plan.ratio
- **配置的value**:value建议是json格式。也可以是简单的文本格式。
- <font color="red" size="4" >因为每次变更都会把变更实时的同步到app得所有使用用户的千牛客户端,每次同步都会消耗服务端的资源,所以尽量减少不必要的变更。</font>
- 当前配置只能同步到移动千牛客户端,对于PC千牛客户端的同步正在实施中。
如何使用
服务端如何新增和修改一个配置
- 访问[千牛控制台](https://qnconsole.taobao.com)
- 按照:开发工具->配置管理。进入配置管理页面。如下图所示,点击配置列表之后可以看到当前已有的配置项,对于配置项当前区分android和ios。如果一个配置项需要在android上和ios上都要使用,需要分别在不同的平台上添加:
- 添加一个新的配置,如下图所示
- 测试配置,在添加好配置之后先测试一下插件上的表现,填写测试账号,点击保存后,服务端会把配置信息推送给测试账号的客户端。
- 正式发布,点击正式发布之后会把此配置信息推送到app的所有用户。
客户端如何使用配置
客户端通过协议来查询配置数据,协议使用见[查询数据协议](http://jdy.tmall.com/doc/detail?spm=0.0.0.0.a0hBaR&id=373),使用协议过程中的参数说明如下。协议的调用见协议调用文档。
- nameSpace:jdy\_remote\_config
- where : appkey= ? and config_key=?
- args: 第2个参数中需要指定的值,即,需要指定的appkey和config_key这两个参数的具体的值。比如:123456,jiaoyi.open.new.plan.ratio
举例如下:
`var application = TOP.mobile.application;
application.request({
event:'queryData',
biz:{
nameSpace : 'jdy_remote_config',
where : 'appkey= ? and config_key=?',
args : '123456,jiaoyi.open.new.plan.ratio'
},
success:function(){
},
error:function(){
}
});`
常见问题
当前这个服务还处于灰度阶段,如果使用过程中有任何问题,或者有一些新的需求,可以在旺旺群:239300039 进行咨询,群密码:qianniu
FAQ
关于此文档暂时还没有FAQ