一种软件功能发布的方法及系统与流程

文档序号:17988255发布日期:2019-06-22 00:34阅读:276来源:国知局
一种软件功能发布的方法及系统与流程

本发明涉及软件技术领域,尤其涉及一种软件功能发布的方法及系统。



背景技术:

当一个拥有大量用户的软件产品需要增加新功能时,往往需要对该新功能进行预先测试,获取用户反馈,根据用户反馈来决定是否增加该新功能或者改用其它功能。例如,开发人员在现有软件产品的基础上设计了两套新功能,分别为方案1和方案2。此时让用户a,b,c继续使用现有产品的方案,用户d,e,f使用方案1,用户g,h使用方案2,如果最终用户对方案1的反馈好于方案2和现有产品,则采用方案1替换现有方案进行在线发布,并抛弃方案2。

而让哪些用户使用现有方案、哪些用户使用方案1、哪些用户使用方案2、如何获取用户对某一个方案的反馈等问题,现有技术的实现过程较复杂,开发周期较长,且无法准确地获取用户反馈。因此,需要一套简单、有效的实现方案来解决上述技术问题。



技术实现要素:

本发明旨在提供一种软件功能发布的方法及系统,能够简单有效地对大量用户进行分流、对不同用户使用不同软件方案的反馈情况进行统计,从而发布最受用户喜爱的软件功能。

为达到上述目的,本发明采用的技术方案如下:

一种软件功能发布的方法,包括:通过预设的负载均衡器,将访问用户按照预设的分流规则分流到不同的访问服务器;所述访问服务器上发布有两个以上软件方案;每个所述软件方案中设置有不同的软件功能;每个所述访问服务器通过预设的nginx分割模块,给分流到自身的访问用户分配所述软件方案;统计每个所述软件方案中所述软件功能的点击量;根据所述点击量和所述点击量对应的软件方案的预设发布量,计算每个所述软件方案中所述软件功能的点击率;将所述点击率最高的软件功能对应的软件方案进行在线发布。

优选地,所述将所述点击率最高的软件功能对应的软件方案进行在线发布包括:从对应的代码仓库拉取所需发布的软件方案对应的代码至所述访问服务器的预设目录;在nginx的配置文件中设置所需发布的软件方案的发布量后,对拉取的所述代码进行发布。

优选地,所述每个所述访问服务器通过预设的nginx分割模块,给分流到自身的访问用户分配所述软件方案包括:采用murmurhash2算法进行hash散列,获取hash值对应的访问用户流量比例;根据所述访问用户流量比例,从所述预设目录中动态地加载所述软件方案对应的代码。

优选地,所述统计每个所述软件方案中所述软件功能的点击量包括:根据所述访问用户的标识,获取所述访问用户被分配到的软件方案;根据所述访问用户的标识,统计所述访问用户对分配到的软件方案中软件功能的点击量。

一种软件功能发布的系统,包括:负载均衡器,两个以上访问服务器,统计计算模块,发布模块;所述负载均衡器用于将访问用户按照预设的分流规则分流到不同的所述访问服务器;所述访问服务器上发布有两个以上软件方案;每个所述软件方案中设置有不同的软件功能;所述访问服务器用于通过预设的nginx分割模块,给分流到自身的访问用户分配所述软件方案;所述统计计算模块用于统计每个所述软件方案中所述软件功能的点击量;还用于根据所述点击量和所述点击量对应的软件方案的预设发布量,计算每个所述软件方案中所述软件功能的点击率;所述发布模块用于将所述点击率最高的软件功能对应的软件方案进行在线发布。

进一步地,所述发布模块包括:拉取单元,用于从对应的代码仓库拉取所需发布的软件方案对应的代码至所述访问服务器的预设目录;发布单元,用于在nginx的配置文件中设置所需发布的软件方案的发布量后,对拉取的代码进行发布。

本发明实施例提供的软件功能发布的方法及系统,首先通过负载均衡器对访问用户进行初步分流,然后通过访问服务器上预设的nginx分割模块对访问用户进行二次分流,即对分流到每个访问服务器上的用户进行软件方案的分配,最后通过用户对每个软件方案中对应的软件功能的点击量来计算该软件功能的点击率,将点击率最高的软件功能对应的软件方案作为用户最喜爱的软件方案进行在线发布。与现有技术中需要设计复杂的分流方案、且无法准确地获取用户反馈情况相比,本发明的技术方案更加简单、有效。

附图说明

图1为本发明实施例的方法流程图;

图2为本发明实施例的系统结构图;

图3为本发明实施例中每个软件方案对应的代码仓库的结构示意图;

图4为本发明实施例中负载均衡器和访问服务器对访问用户进行分流的结构示意图;

图5为本发明实施例对软件方案进行发布时的数据交互图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。

图1为本发明实施例的方法流程图,包括:

步骤101,通过预设的负载均衡器,将访问用户按照预设的分流规则分流到不同的访问服务器;所述访问服务器上发布有两个以上软件方案;每个所述软件方案中设置有不同的软件功能;

步骤102,每个所述访问服务器通过预设的nginx分割模块,给分流到自身的访问用户分配所述软件方案;

本实施例中,采用nginx分割模块的流量分割功能,将分流到本访问服务器的访问用户自动分配至不同的软件方案,执行不同的软件方案代码。具体地,采用murmurhash2算法进行hash散列,获取hash值对应的访问用户流量比例;根据所述访问用户流量比例,从所述预设目录中动态地加载所述软件方案对应的代码。nginx为一种开源软件,可提供高性能的http和反向代理服务。

步骤103,统计每个所述软件方案中所述软件功能的点击量;

本步骤中,所述统计每个所述软件方案中所述软件功能的点击量包括:根据所述访问用户的标识,获取所述访问用户被分配到的软件方案;根据所述访问用户的标识,统计所述访问用户对分配到的软件方案中软件功能的点击量。本实施例中,所述访问用户的标识,为每个移动设备的唯一标识。

本实施例中,假设要对三个软件方案plan1、plan2和online进行发布,则对nginx的配置文件的修改如下:

root/home/www/$grayroot

其中,软件方案plan1的发布量设置为10%,软件方案plan2的发布量设置为10%,软件方案online的发布量设置为80%。即有10%的访问用户被分配至执行软件方案plan1的代码,有10%的访问用户被分配至执行软件方案plan2的代码,有80%的访问用户被分配至执行软件方案online的代码。本实施例中,plan1和plan2发布量的设置总和不能大于100%,如果plan1和plan2发布量的设置总和小于100%,剩余流量走online方案。

通过开源软件nginx分割模块ngx_http_split_clients_module自动实现流量分割;eid为每个移动设备的唯一标示;根据获取参数eid,采用murmurhash2算法进行hash散列,获取hash值对应的访问用户流量比例,动态地为$grayroot赋值;设置环境变量plan=$grayroot;通过$grayroot变量动态设置root,加载不同的方案代码,使用户分配到不同的软件方案。

然后通过参数eid,可获取每个用户具体被分配到了哪个软件方案,并获取每个用户在该软件方案中对该软件方案中设置的软件功能的点击量。

上述代码中,环境变量plan的作用是在后面的数据统计当中,获取不同的方案标示,从自己的代码可以获取到plan这个值,以便区分当前用户被分为哪个方案。root是nginx.conf里面的配置项,代表设置哪个目录作为访问服务器的目录。不同软件方案的代码存在于不同目录,动态改变了root值,nginx就会动态加载不同目录下的代码。例如,软件方案plan1在/home/www/plan1目录中,软件方案plan2在/home/www/plan2目录中,软件方案online在/home/www/online目录中。

步骤104,根据所述点击量和所述点击量对应的软件方案的预设发布量,计算每个所述软件方案中所述软件功能的点击率;

本步骤中,点击率的计算采用如下公式:

其中,r为所述点击率,a为所述点击量,u为总用户数,b为对应的软件方案的预设发布量。

步骤105,将所述点击率最高的软件功能对应的软件方案进行在线发布。

本实施例中,如图3和图5所示,在所述访问服务器上发布所述软件方案包括:从对应的代码仓库拉取所述软件方案对应的代码至所述访问服务器的预设目录;在nginx的配置文件中设置所述软件方案的发布量后,对拉取的所述代码进行发布。本实施例中,通过salt工具把nginx.conf(即nginx的配置文件)同步到每个访问服务器,并平滑重启nginx,使配置生效。

本实施例中,在确定了最佳软件方案后,将最佳软件方案的代码合并到代码仓库a,即本实施例中online方案所对应的代码仓库,再对其进行发布。具体的对nginx的配置文件的修改如下:

split_clients″${arg_eid}aaa″$grayroot{

*online

}

下面采用一个具体的例子来对本方案进行进一步说明:

假设某个软件产品的某页面有一个按钮,现在是红底黑字(默认方案,online方案),需要新增两套方案,方案1的新增软件功能为黄底白字,方案2的新增软件功能为蓝底白字。

步骤一,将黄底白字功能所对应的软件方案的代码提交到代码仓库b,在发布模块中新增方案1(plan1)发布项,并设置其发布量为10%,进行发布;

步骤二,将蓝底白字功能所对应的软件方案的代码提交到代码仓库c,在发布模块中新增方案2(plan2)发布项,并设置其发布量为10%,进行发布;

步骤三,统计在24小时内,总的访问用户数为10000人;

步骤四,通过环境变量plan统计到plan1中新增软件功能的点击量为:800,plan2中新增软件点击数为500,online中新增软件功能的点击量为3000;

步骤五,分别计算plan1中新增软件功能的点击率、plan2中新增软件功能的点击率和online中新增软件功能的点击率:

步骤六,选取点击率数值最大的软件功能对应的软件方案——plan1进行在线发布。

本发明还公开一种软件功能发布的系统,包括:负载均衡器,两个以上访问服务器,统计计算模块,发布模块;所述负载均衡器用于将访问用户按照预设的分流规则分流到不同的所述访问服务器;所述访问服务器上发布有两个以上软件方案;每个所述软件方案中设置有不同的软件功能;所述访问服务器用于通过预设的nginx分割模块,给分流到自身的访问用户分配所述软件方案;所述统计计算模块用于统计每个所述软件方案中所述软件功能的点击量;还用于根据所述点击量和所述点击量对应的软件方案的预设发布量,计算每个所述软件方案中所述软件功能的点击率;所述发布模块用于将所述点击率最高的软件功能对应的软件方案进行在线发布。

进一步地,所述发布模块包括:拉取单元,用于从对应的代码仓库拉取所需发布的软件方案对应的代码至所述访问服务器的预设目录;发布单元,用于在nginx的配置文件中设置所需发布的软件方案的发布量后,对拉取的代码进行发布。

本发明系统的工作原理与工作流程已在本发明方法中进行了详细说明,此处不再赘述。

本发明实施例提供的软件功能发布的方法及系统,首先通过负载均衡器对访问用户进行初步分流,然后通过访问服务器上预设的nginx分割模块对访问用户进行二次分流,即对分流到每个访问服务器上的用户进行软件方案的分配,最后通过用户对每个软件方案中对应的软件功能的点击量来计算该软件功能的点击率,将点击率最高的软件功能对应的软件方案作为用户最喜爱的软件方案进行在线发布。与现有技术中需要设计复杂的分流方案、且无法准确地获取用户反馈情况相比,本发明的技术方案更加简单、有效。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1