CN110046092A - 实验分流方法、装置、电子设备和计算机可读存储介质 - Google Patents
实验分流方法、装置、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN110046092A CN110046092A CN201910188025.1A CN201910188025A CN110046092A CN 110046092 A CN110046092 A CN 110046092A CN 201910188025 A CN201910188025 A CN 201910188025A CN 110046092 A CN110046092 A CN 110046092A
- Authority
- CN
- China
- Prior art keywords
- flow layer
- access request
- experiment
- configuration information
- experimental configuration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了实验分流方法和装置。实验分流方法包括:获取客户端发送的访问请求,其中,访问请求包括请求来源标识和待访问页面的页面标识符;将访问请求和预先获得的实验配置信息进行匹配,获得与访问请求相匹配的流量层,其中,实验配置信息包括流量层标识符、流量层关键字和流量层内实验占比信息,并且其中,流量层包括一个或多个实验;将请求来源标识和流量层的流量层关键字进行拼接,获得流量层拼接字;对流量层拼接字进行散列,获得流量层散列值;根据流量层散列值和流量层内实验占比信息,在流量层中的一个或多个实验中确定访问请求将要进入的实验。本发明利于实现预期的流量占比分布,不同流量层的实验互相独立。
Description
技术领域
本发明一般地涉及信息技术,更具体地,涉及实验分流方法、装置、电子设备和计算机可读存储介质。
背景技术
在互联网产品的设计场景中,经常会遇到多个设计方案的选择。对于方案的选择,目前经常采用ABtest(AB测试)的方式选择更符合预期涉及目标的方案。
目前常见的ABtest方案是针对客户端的一些请求做信息提取,然后根据分流实验进行简单散列分流。
发明内容
为了解决现有技术中存在的上述问题,本发明的一个方面提供一种实验分流方法,该方法包括:获取客户端发送的访问请求,其中,访问请求包括请求来源标识和待访问页面的页面标识符;将访问请求和预先获得的实验配置信息进行匹配,获得与访问请求相匹配的流量层,其中,实验配置信息包括流量层标识符、流量层关键字和流量层内实验占比信息,并且其中,流量层包括一个或多个实验;将请求来源标识和流量层的流量层关键字进行拼接,获得流量层拼接字;对流量层拼接字进行散列,获得流量层散列值;根据流量层散列值和流量层内实验占比信息,在流量层中的一个或多个实验中确定访问请求将要进入的实验。
本发明的另一方面提供一种实验分流装置,该装置包括:访问请求获取模块,配置用于获取客户端发送的访问请求,其中,访问请求包括请求来源标识和待访问页面的页面标识符;流量层匹配模块,配置用于将访问请求和预先获得的实验配置信息进行匹配,获得与访问请求相匹配的流量层,其中,实验配置信息包括流量层标识符、流量层关键字和流量层内实验占比信息,并且其中,流量层包括一个或多个实验;流量层拼接模块,配置用于将请求来源标识和流量层的流量层关键字进行拼接,获得流量层拼接字;流量层散列模块,配置用于对流量层拼接字进行散列,获得流量层散列值;实验确定模块,配置用于根据流量层散列值和流量层内实验占比信息,在流量层中的一个或多个实验中确定访问请求将要进入的实验。
本发明的又一方面提供一种电子设备,电子设备包括:存储器,配置用于存储指令;以及处理器,配置用于调用指令执行上述方法。
本发明的又一方面提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在由处理器执行时,执行上述方法。
本发明提出的实验分流方法、装置、电子设备和计算机可读存储介质利于实现预期的流量占比分布,不同流量层的实验互相独立。
附图说明
通过参考附图阅读下文的详细描述,本发明实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示出了根据本发明的实施方式的实验分流方法的流程图;
图2示出了根据本发明的实施方式的实验分流装置的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
需要注意,虽然本文中使用“第一”、“第二”等表述来描述本发明的实施方式的不同模块、步骤和数据等,但是“第一”、“第二”等表述仅是为了在不同的模块、步骤和数据等之间进行区分,而并不表示特定的顺序或者重要程度。实际上,“第一”、“第二”等表述完全可以互换使用。
如图1所示,本发明的一个实施方式提供了一种实验分流方法100。在一些实施方式中,方法100可以在服务器上实现。备选地,方法100也可以在具有计算能力的任何电子设备上实现。在本说明书中,方法100实现的功能也可以称为分流系统。方法100包括步骤S101-S105。
在步骤S101中,获取客户端发送的访问请求。其中,访问请求可以包括请求来源标识和待访问页面的页面标识符。
在一些实施方式中,客户端可以包括手持式智能终端、台式计算机、膝上型计算机、个人数字助理(PDA)、智能可穿戴设备等等,本发明在此方面不做限制。
在一些实施方式中,客户端发送的访问请求可以包括通过手机客户端上的应用程序(APP)发送的APP访问请求、通过计算机上的网络浏览器发送的网页请求等等。
在一些实施方式中,访问请求可以通过任何网络协议进行传输,例如,通过HTTP(HyperText Transfer Protocol,超文本传输协议)或者GRPC(Google Remote ProcedureCall Protocol,谷歌远程程序调用协议)。
在一些实施方式中,请求来源标识可以包括用户设备的唯一标识。例如,用户设备的udid(Unique Device Identifier,唯一设备标识符)或者uuid(Universally UniqueIdentifier,全局唯一标识符)。例如,当用户通过装载在智能终端上的应用程序(APP)发送访问请求时,请求来源标识可以是该智能终端的open_udid(Open-Unique DeviceIdentifier,开放唯一设备标识符),当用户通过其他方式发送访问请求时,请求来源标识可以是用户设备的uuid。
在另一些实施方式中,请求来源标识可以包括用户的标识,例如uid(UserIdentifier,用户标识)。当用户在登录状态时,可以使用用户的uid作为请求来源标识。
在一些实施方式中,请求来源标识可以包括在访问请求的Cookie(浏览器缓存)信息中。
在一些实施方式中,页面标识符可以包括页面的URI(Uniform ResourceIdentifier,统一资源标识符)或者URL(Uniform Resource Locator,统一资源定位符)。当然,页面标识符不限于以上形式。
在步骤S102中,将访问请求和预先获得的实验配置信息进行匹配,获得与访问请求相匹配的流量层。其中,实验配置信息包括流量层标识符、流量层关键字和流量层内实验占比信息。并且其中,流量层包括一个或多个实验。
在一些实施方式中,实验配置信息是由运营后台预先设置的。其可以预先存储在服务器的存储器中,或者可以从外部数据库调取。
在一些实施方式中,流量层可以是一组实验的集合,包括一个或多个实验。例如,一个流量层是用户能看到的一个页面,比如APP首页、网站搜索页、列表页等。举例而言,流量层是列表页,在该流量层中,可以包括图文混排列表实验和纯图列表实验两个不同的实验。作为示例,流量层标识符可以包括流量层页面的URI。
在一些实施方式中,将访问请求和预先获得的实验配置信息进行匹配可以包括将访问请求中的待访问页面的页面标识符与实验配置信息中的流量层标识符进行匹配。
在一些实施方式中,同一流量层中的不同实验流量独立,用户只能进入其中一个实验。例如,图文混排列表实验和纯图列表实验,同一个用户在同一时刻只能看到一个实验,可以称为这两个实验互斥。
举例而言,旅游网站的机票保险业务需要改版,引入保险购买的引导功能。后台可以新建流量层,流量层的名字为马蜂窝机票保险页面。然后创建保险导购实验,设置实验配置信息。例如,设置流量层内实验占比信息,比如设置为50%,即,当前页面会有50%的流量进入到该实验。
作为另一示例,流量层可以是列表页,列表页流量层上包括图文混排列表实验和纯图列表实验,流量层内实验占比信息可以是两个实验分别占流量的60%和40%。
在一些实施方式中,将页面标识符和预先获得的实验配置信息中的流量层标识符进行匹配可以通过在实验池中的流量层标识符中进行遍历匹配,找到与页面标识符相匹配的实验流量层。相匹配可以包括页面标识符与流量层标识符完全相同,也可以包括页面标识符与流量层标识符中的某些字段相同。
在步骤S103中,将请求来源标识和流量层的流量层关键字(key)进行拼接,获得流量层拼接字,或称设备唯一流量层信息。
在一些实施方式中,拼接可以包括字符串的顺序拼接。
在步骤S104中,对流量层拼接字进行散列,获得流量层散列值。
在一些实施方式中,散列(hash)操作可以采用MurmurHash2算法等任何适合的hash算法。Hash算法可以使得请求来源标识有微小变化的情况下,流量层关键字不同会导致散列(hash)值变化激烈。
MurmurHash2是一种非加密型哈希函数,适用于一般的哈希检索操作。与其他流行的哈希函数相比,对于规律性较强的关键字,MurmurHash2的随机分布特征表现更良好。本发明的实施方式利用了其对于规律关键字随机分布特性表现更良好的特性。
在步骤S105中,根据流量层散列值和流量层内实验占比信息,在流量层中的一个或多个实验中确定访问请求将要进入的实验。
仅作为示例,可以将流量层hash值对100求余之后+1,最终得到1到100之间的数值。将该数值与流量层内实验占比信息进行比较,如果在区间内则命中实验,继续分流操作。否则不进行分流操作。对于流量层内实验占比信息,可以按照流量分布倒叙排列。比如有流量层内有三个实验a、b、c分别占比30、60、10。则排列顺序为b、a、c。然后依次将hash后的值和前面所有项的和比对,如果小于该值,则命中该版本。如果hash后的值为80,首先和b的值60比较,80大于等于60,继续和下一位比较。当进行到下一位时,应该和前面所有项的和比较,即b+a=60+30=90,80小于90,则命中实验a。如果当前区间未命中则继续匹配下一位直到结束或者匹配上。
在一些实施方式中,当访问请求命中多个流量层时,例如一个访问请求中包含了多个功能模块,这时候会命中多个实验。此时先逐层按照单层实验进行分流,然后获取到多个实验的对应关系。由于流量层标识和关键字不同,所以每一流量层的流量层拼接字也是不同的,所以两个实验的分流是相互独立无干扰的。
本发明实施例提出的实验分流方法100,通过对请求来源标识和流量层关键字的拼接字进行hash操作,保证了在请求来源标识变化微小或者没有变化的情况下,流量层关键字的变化能够导致hash值的剧烈变化,使得访问请求的散列更加均匀,避免了因请求来源标识不变而导致访问请求集中在流量层内的局部位置,可以更好地实现预设的实验占比分布。并且,通过这种方式,进入一个流量层的访问请求再进行其他实验时,hash值也是均匀分布的,而不是集中在某一区间内,使得没有关联关系的不同流量层内的实验可以实现正交,互相独立无影响。
另外,该方法接入方不必考虑现有的业务实现语言和方案,只要约定好协议即可,例如HTTP、GRPC等等,从而可以实现跨平台的实验分流。
而且,通过引入流量层内实验互斥的概念,可以方便地表达针对同一功能的不同设计方案的分流,在进行实验配置时便于利用流量分层来绑定实验的策略,可以更精细直观的定义分流实验,便于实验配置信息的设置、维护和管理。
作为本发明的一个实施例,访问请求还包括历史实验标识,实验配置信息还包括与流量层标识符相对应的在前实验标识。并且,上述步骤S102可以包括:将访问请求中的页面标识符与实验配置信息中的流量层标识符进行匹配,并且将访问请求中的历史实验标识与流量层标识符相对应的在前实验标识进行匹配,获得与访问请求相匹配的流量层。
在一些实施方式中,在串行实验中,后续流量层的实验配置可以要求访问请求已经命中了某个在前的实验。为了清楚地描述,说明书中采用“第一流量层”和“第二流量层”来表示串行实验中先后进入的两个流量层。在进行流量层匹配时,如果访问请求中包括的历史实验标识与实验配置信息中第二流量层要求的在前实验标识的要求一致,则该访问请求可以进入第二流量层。如果不一致,则不能进入该第二流量层。例如,第一流量层是搜索推荐页面,该流量层有两个实验a、b,a是有推荐词,b是没有。第二流量层是推荐列表页面,两个流量层的步骤是用户先通过搜索然后到达推荐列表,有一定的先后顺序,那么推荐列表页面可以要求只有命中搜索推荐a实验才可以到达推荐列表页,否则只会到达普通列表页。
作为本发明的一个实施例,分流实验方法还可以包括:将访问请求当前进入的实验标识发送给客户端,以便客户端将访问请求当前进入的实验标识记录为历史实验标识。例如,将访问请求将要进入的实验的实验标识添加到访问请求中。例如,可以将实验标识添加到HTTP请求的头部信息中。便于后续处理根据访问请求中的实验标识信息,也即分流信息,而作出差异化的响应。
在一些实施方式中,在将第一流量层的实验标识添加到访问请求中之后,可以将访问请求发送给分流系统,并最终由分流系统返回给客户端,由客户端将访问请求中携带的实验标识记录为历史实验标识。当客户端再次请求时,会将已获取到的分流信息即历史实验标识上报,例如,将历史实验标识添加到后续的访问请求中,分流系统通过对客户端已经产生的分流信息结合系统预设的实验配置信息再次分流,从而达到多实验串行的分流功能。
通过将在前流量层的实验标识信息添加到访问请求中,减少了服务数据的存储并可以实现串行实验分流的功能。并且,在数据传输方面,通过在访问请求中传输分流信息,工作在业务方的上游,业务方无需关心业务方具体的实现语言,可以实现跨平台的分流业务。
可选地,还可以将实验标识添加到本地日志信息中,方便问题的定位和数据统计。
作为本发明的一个实施例,获取访问请求包括:拦截访问请求。
在常见的ABtest实验分流场景中,往往通过提供接口,由业务方获取用户数据然后调用接口,这样会将原有的流量放大一倍,而且对业务侵入比较明显。本发明实施方式可以通过拦截的方式来获取访问请求,对业务代码没有侵入,性能没有明显影响,并且不会产生二次流量。
在一些实施方式中,可以通过Openresty实现访问请求的拦截,由于Openresty自带流量分发的特性故不会产生二次流量。仅作为示例,可以采用Openresty中的rewrite_by_lua对访问请求的流量进行拦截。其中,rewrite_by_lua是Openresty中的一个功能。在Openresty重定向阶段工作,rewrite_by_lua可以实现复杂的转发定向逻辑。由于Openresty的重定向是原有流程,本发明实施例的分流实验方法中的流量拦截只是改变了其分流方式。相对于其它调用接口实现方式而言,该实现没有二次流量产生。
作为本发明的一个实施例,实验配置信息还包括实验内版本占比信息,并且其中,实验包括一个或多个版本。本发明实施例提供的实验分流方法还可以包括:将请求来源标识、流量层的流量层关键字和实验标识进行拼接,获得实验拼接字;对实验拼接字进行散列,获得实验散列值;根据实验散列值和实验内版本占比信息,确定访问请求将要进入的实验版本。
在一些实施方式中,将请求来源标识、流量层的流量层关键字和实验标识进行拼接与上文描述的将请求来源标识和流量层关键字进行拼接的方式可以相同或者不同。并且,对实验拼接字进行散列的方式可以与上文描述的对流量层拼接字进行散列的方式相同或者不同。
在一些实施方式中,一个实验可以具有一个或多个版本。以产品展示页页面流量层为例,该页面可以包括两个实验,列表展示和块状展示,列表展示实验中可以包括两个版本,例如纯图列表和图文混排列表。
在一些实施方式中,与流量层内多个实验之间互斥的概念相似,一个实验中的多个版本可以是互斥的,一个访问请求只能进入其中一个版本。
在一些实施方式中,版本之下还可以具有更细的划分,而分流的方式可以与上文描述的针对流量层中的一个或多个实验进行分流以及针对一个实验中的一个或多个版本进行分流的方式相似。
在针对不同版本进行分流的过程中,通过请求来源标识、流量层的流量层关键字和实验标识的拼接,可以使得在请求来源标识和流量层关键字变化微小的情况下,实验标识的变化可以引起散列值的剧烈变化,可以使得散列更加均匀,避免了因请求来源标识不变而导致访问请求集中在流量层内的局部位置,有利于达到预期的版本分流占比。并且,通过这种方式,进入一个流量层的访问请求再进行其他实验版本时,hash值也是均匀分布的,而不是集中在某一区间内,使得没有关联关系的不同流量层内的实验版本可以实现正交,互相独立无影响。
作为本发明的一个实施例,分流实验方法还可以包括将访问请求将要进入的实验版本的实验版本标识添加到访问请求中。
作为本发明的一个实施例,访问请求还可以包括历史实验版本标识,实验配置信息还可以包括与流量层标识符相对应的在前实验版本标识。并且,将访问请求和预先获得的实验配置信息进行匹配,获得与访问请求相匹配的流量层可以包括:将访问请求中的页面标识符与实验配置信息中的流量层标识符进行匹配,并且将访问请求中的历史实验版本标识与实验配置信息中与流量层标识符相对应的在前实验版本标识进行匹配,获得与访问请求相匹配的流量层。
作为本发明的一个实施例,分流实验方法还可以包括:将访问请求当前进入的实验版本标识发送给客户端,以便客户端将访问请求当前进入的实验版本标识记录为历史实验版本标识。
在一些实施方式中,在将第一流量层的实验版本标识添加到访问请求中之后,可以将访问请求发送给分流系统,并最终由分流系统返回给客户端,由客户端将访问请求中携带的实验版本标识记录为历史实验版本标识。当客户端再次请求时,会将已获取到的分流信息即历史实验版本标识上报,例如,将历史实验版本标识添加到后续的访问请求中,分流系统通过对客户端已经产生的分流信息结合系统预设的实验配置信息再次分流,从而达到多实验串行的分流功能。
通过将在前流量层的实验版本标识信息添加到访问请求中,减少了服务数据的存储并可以实现串行实验分流的功能。并且,在数据传输方面,通过在访问请求中传输分流信息,工作在业务方的上游,业务方无需关心业务方具体的实现语言,可以实现跨平台的分流业务。
作为本发明的一个实施例,实验分流方法可以在服务器上执行,该方法还可以包括:从数据库中读取实验配置信息;将实验配置信息加载到服务器的内存中。
在一些实施方式中,分流系统从数据库中读取提前配好的实验策略,然后加载到服务器内存中,以后当再次获取策略信息时,先从服务器内存中读取。这样可以有效的减少网络IO的消耗,大大的提升性能和稳定性。读取到的实验配置信息可以组成实验池供后续调用。
作为本发明的一个实施例,分流实验方法还可以包括:设置实验配置信息的加载时间;在将访问请求和实验配置信息进行匹配之前,判断当前时间是否超出加载时间;如果当前时间超出加载时间,则重新从数据库中读取实验配置信息;如果当前时间没有超出加载时间,则使用实验配置信息。
在一些实施方式中,实验配置信息可以是由运营后台实时调整的,因此可能会随时间而变化。通过设置加载时间,在超出加载时间时重新从数据库中读取,可以使得执行分流方法的服务器内存中对实验配置信息定期更新,获得最新的实验配置信息,更好地实现实验预期的效果。
如图2所示,本发明的一个实施方式提供了一种实验分流装置200。该实验分流装置200包括以下模块:访问请求获取模块201,配置用于获取客户端发送的访问请求,其中,访问请求包括请求来源标识和待访问页面的页面标识符;流量层匹配模块202,配置用于将访问请求和预先获得的实验配置信息进行匹配,获得与访问请求相匹配的流量层,其中,实验配置信息包括流量层标识符、流量层关键字和流量层内实验占比信息,并且其中,流量层包括一个或多个实验;流量层拼接模块203,配置用于将请求来源标识和流量层的流量层关键字进行拼接,获得流量层拼接字;流量层散列模块204,配置用于对流量层拼接字进行散列,获得流量层散列值;实验确定模块205,配置用于根据流量层散列值和流量层内实验占比信息,在流量层中的一个或多个实验中确定访问请求将要进入的实验。
作为本发明的一个实施例,装置200还可以包括;实验标识添加模块,配置用于将访问请求将要进入的实验的实验标识添加到访问请求中。
作为本发明的一个实施例,访问请求还包括历史实验标识,实验配置信息还包括与流量层标识符相对应的在前实验标识。并且,流量层匹配模块202还配置用于:将访问请求中的页面标识符与实验配置信息中的流量层标识符进行匹配,并且将访问请求中的历史实验标识与实验配置信息中与流量层标识符相对应的在前实验标识进行匹配,获得与访问请求相匹配的流量层。
作为本发明的一个实施例,装置200还可以包括:实验标识发送模块,配置用于将访问请求当前进入的实验标识发送给客户端,以便客户端将访问请求当前进入的实验标识记录为历史实验标识。
作为本发明的一个实施例,访问请求获取模块还可以配置用于:拦截访问请求。
作为本发明的一个实施例,实验配置信息还包括实验内版本占比信息,并且其中,实验包括一个或多个版本。装置200还可以包括:实验拼接模块,配置用于将请求来源标识、流量层的流量层关键字和实验标识进行拼接,获得实验拼接字;实验散列模块,配置用于对实验拼接字进行散列,获得实验散列值;版本确定模块,配置用于根据实验散列值和实验内版本占比信息,确定访问请求将要进入的实验版本。
作为本发明的一个实施例,装置200还可以包括:实验版本标识添加模块,配置用于将访问请求将要进入的实验版本的实验版本标识添加到访问请求中。
作为本发明的一个实施例,访问请求还包括历史实验版本标识,实验配置信息还包括与流量层标识符相对应的在前实验版本标识。并且,流量层匹配模块202还配置用于:将访问请求中的页面标识符与实验配置信息中的流量层标识符进行匹配,并且将访问请求中的历史实验版本标识与实验配置信息中与流量层标识符相对应的在前实验版本标识进行匹配,获得与访问请求相匹配的流量层。
作为本发明的一个实施例,装置200还可以包括:实验版本标识发送模块,配置用于将访问请求当前进入的实验版本标识发送给客户端,以便客户端将访问请求当前进入的实验版本标识记录为历史实验版本标识。
作为本发明的一个实施例,装置在服务器上实现。并且,装置200还可以包括:实验配置信息读取模块,配置用于从数据库中读取实验配置信息;实验配置信息加载模块,配置用于将实验配置信息加载到服务器的内存中。
作为本发明的一个实施例,装置200还可以包括加载时间判断模块,配置用于:设置实验配置信息的加载时间;在将访问请求和实验配置信息进行匹配之前,判断当前时间是否超出加载时间;如果当前时间超出加载时间,则重新从数据库中读取实验配置信息;如果当前时间没有超出加载时间,则使用实验配置信息。
装置中的各个模块所实现的功能与上文描述的方法中的步骤相对应,其具体实现和技术效果请参见上文对于方法步骤的描述,在此不再赘述。
在一些实施方式中,本发明提供了一种电子设备,该电子设备包括:存储器,配置用于存储指令;以及处理器,配置用于调用所述指令执行上文所述的任何方法。
在一些实施方式中,本发明提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在由处理器执行时,执行上文所述的任何方法。
在一些实施方式中,本发明还提供了以下技术方案:
方案1.一种实验分流方法,所述方法包括:
获取客户端发送的访问请求,其中,所述访问请求包括请求来源标识和待访问页面的页面标识符;
将所述访问请求和预先获得的实验配置信息进行匹配,获得与所述访问请求相匹配的流量层,其中,所述实验配置信息包括流量层标识符、流量层关键字和流量层内实验占比信息,并且其中,所述流量层包括一个或多个实验;
将所述请求来源标识和所述流量层的流量层关键字进行拼接,获得流量层拼接字;
对所述流量层拼接字进行散列,获得流量层散列值;
根据所述流量层散列值和所述流量层内实验占比信息,在所述流量层中的一个或多个实验中确定所述访问请求将要进入的实验。
方案2.根据方案1所述的方法,所述方法还包括:
将所述访问请求将要进入的实验的实验标识添加到所述访问请求中。
方案3.根据方案1所述的方法,其中,所述访问请求还包括历史实验标识,所述实验配置信息还包括与所述流量层标识符相对应的在前实验标识,
并且,将所述访问请求和预先获得的实验配置信息进行匹配,获得与所述访问请求相匹配的流量层包括:
将所述访问请求中的所述页面标识符与所述实验配置信息中的所述流量层标识符进行匹配,并且将所述访问请求中的所述历史实验标识与所述实验配置信息中与所述流量层标识符相对应的所述在前实验标识进行匹配,获得与所述访问请求相匹配的所述流量层。
方案4.根据方案3所述的方法,所述方法还包括:
将所述访问请求当前进入的实验标识发送给所述客户端,以便所述客户端将所述访问请求当前进入的实验标识记录为所述历史实验标识。
方案5.根据方案1所述的方法,其中,获取客户端发送的访问请求包括:
拦截所述访问请求。
方案6.根据方案1所述的方法,其中,所述实验配置信息还包括实验内版本占比信息,并且其中,所述实验包括一个或多个版本,
所述方法还包括:
将所述请求来源标识、所述流量层的流量层关键字和所述实验标识进行拼接,获得实验拼接字;
对所述实验拼接字进行散列,获得实验散列值;
根据所述实验散列值和所述实验内版本占比信息,确定所述访问请求将要进入的实验版本。
方案7.根据方案6所述的方法,所述方法还包括:
将所述访问请求将要进入的实验版本的实验版本标识添加到所述访问请求中。
方案8.根据方案6所述的方法,其中,所述访问请求还包括历史实验版本标识,所述实验配置信息还包括与所述流量层标识符相对应的在前实验版本标识,
并且,将所述访问请求和预先获得的实验配置信息进行匹配,获得与所述访问请求相匹配的流量层包括:
将所述访问请求中的所述页面标识符与所述实验配置信息中的所述流量层标识符进行匹配,并且将所述访问请求中的所述历史实验版本标识与所述实验配置信息中与所述流量层标识符相对应的所述在前实验版本标识进行匹配,获得与所述访问请求相匹配的流量层。
方案9.根据方案8所述的方法,所述方法还包括:
将所述访问请求当前进入的实验版本标识发送给所述客户端,以便所述客户端将所述访问请求当前进入的实验版本标识记录为所述历史实验版本标识。
方案10.根据方案1所述的方法,其中,所述方法在服务器上执行,
并且,所述方法还包括:
从数据库中读取所述实验配置信息;
将所述实验配置信息加载到所述服务器的内存中。
方案11.根据方案10所述的方法,所述方法还包括:
设置所述实验配置信息的加载时间;
在将所述访问请求和所述实验配置信息进行匹配之前,判断当前时间是否超出所述加载时间;
如果所述当前时间超出所述加载时间,则重新从所述数据库中读取所述实验配置信息;
如果所述当前时间没有超出所述加载时间,则使用所述实验配置信息。
方案12.一种实验分流装置,所述装置包括:
访问请求获取模块,配置用于获取客户端发送的访问请求,其中,所述访问请求包括请求来源标识和待访问页面的页面标识符;
流量层匹配模块,配置用于将所述访问请求和预先获得的实验配置信息进行匹配,获得与所述访问请求相匹配的流量层,其中,所述实验配置信息包括流量层标识符、流量层关键字和流量层内实验占比信息,并且其中,所述流量层包括一个或多个实验;
流量层拼接模块,配置用于将所述请求来源标识和所述流量层的流量层关键字进行拼接,获得流量层拼接字;
流量层散列模块,配置用于对所述流量层拼接字进行散列,获得流量层散列值;
实验确定模块,配置用于根据所述流量层散列值和所述流量层内实验占比信息,在所述流量层中的一个或多个实验中确定所述访问请求将要进入的实验。
方案13.根据方案12所述的装置,所述装置还包括:
实验标识添加模块,配置用于将所述访问请求将要进入的实验的实验标识添加到所述访问请求中。
方案14.根据方案12所述的装置,其中,所述访问请求还包括历史实验标识,所述实验配置信息还包括与所述流量层标识符相对应的在前实验标识,
并且,所述流量层匹配模块还配置用于:
将所述访问请求中的所述页面标识符与所述实验配置信息中的所述流量层标识符进行匹配,并且将所述访问请求中的所述历史实验标识与所述实验配置信息中与所述流量层标识符相对应的所述在前实验标识进行匹配,获得与所述访问请求相匹配的所述流量层。
方案15.根据方案14所述的装置,所述装置还包括:
实验标识发送模块,配置用于将所述访问请求当前进入的实验标识发送给所述客户端,以便所述客户端将所述访问请求当前进入的实验标识记录为所述历史实验标识。
方案16.根据方案12所述的装置,其中,访问请求获取模块还配置用于:拦截所述访问请求。
方案17.根据方案12所述的装置,其中,所述实验配置信息还包括实验内版本占比信息,并且其中,所述实验包括一个或多个版本,
所述装置还包括:
实验拼接模块,配置用于将所述请求来源标识、所述流量层的流量层关键字和所述实验标识进行拼接,获得实验拼接字;
实验散列模块,配置用于对所述实验拼接字进行散列,获得实验散列值;
版本确定模块,配置用于根据所述实验散列值和所述实验内版本占比信息,确定所述访问请求将要进入的实验版本。
方案18.根据方案17所述的装置,所述装置还包括:
实验版本标识添加模块,配置用于将所述访问请求将要进入的实验版本的实验版本标识添加到所述访问请求中。
方案19.根据方案17所述的装置,其中,所述访问请求还包括历史实验版本标识,所述实验配置信息还包括与所述流量层标识符相对应的在前实验版本标识,
并且,所述流量层匹配模块还配置用于:
将所述访问请求中的所述页面标识符与所述实验配置信息中的所述流量层标识符进行匹配,并且将所述访问请求中的所述历史实验版本标识与所述实验配置信息中与所述流量层标识符相对应的所述在前实验版本标识进行匹配,获得与所述访问请求相匹配的流量层。
方案20.根据方案19所述的装置,所述装置还包括:
实验版本标识发送模块,配置用于将所述访问请求当前进入的实验版本标识发送给所述客户端,以便所述客户端将所述访问请求当前进入的实验版本标识记录为所述历史实验版本标识。
方案21.根据方案12所述的装置,其中,所述装置在服务器上实现,
并且,所述装置还包括:
实验配置信息读取模块,配置用于从数据库中读取所述实验配置信息;
实验配置信息加载模块,配置用于将所述实验配置信息加载到所述服务器的内存中。
方案22.根据方案21所述的装置,所述装置还包括加载时间判断模块,配置用于:
设置所述实验配置信息的加载时间;
在将所述访问请求和所述实验配置信息进行匹配之前,判断当前时间是否超出所述加载时间;
如果所述当前时间超出所述加载时间,则重新从所述数据库中读取所述实验配置信息;
如果所述当前时间没有超出所述加载时间,则使用所述实验配置信息。
方案23.一种电子设备,所述电子设备包括:
存储器,配置用于存储指令;以及
处理器,配置用于调用所述指令执行方案1-11中任一项所述的方法。
方案24.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,执行方案1-11中任一项所述的方法。
尽管在附图中以特定的顺序描述操作,但是不应将其理解为要求按照所示的特定顺序或是串行顺序来执行这些操作,或是要求执行全部所示的操作以得到期望的结果。在特定环境中,多任务和并行处理可能是有利的。
本发明的方法和装置能够利用标准编程技术来完成,利用基于规则的逻辑或者其他逻辑来实现各种方法步骤。还应当注意的是,此处以及权利要求书中使用的词语“装置”和“模块”意在包括使用一行或者多行软件代码的实现和/或硬件实现和/或用于接收输入的设备。
此处描述的任何步骤、操作或程序可以使用单独的或与其他设备组合的一个或多个硬件或软件模块来执行或实现。在一个实施方式中,软件模块使用包括包含计算机程序代码的计算机可读介质的计算机程序产品实现,其能够由计算机处理器执行用于执行任何或全部的所描述的步骤、操作或程序。
出于示例和描述的目的,已经给出了本发明实施的前述说明。前述说明并非是穷举性的也并非要将本发明限制到所公开的确切形式,根据上述教导还可能存在各种变形和修改,或者是可能从本发明的实践中得到各种变形和修改。选择和描述这些实施例是为了说明本发明的原理及其实际应用,以使得本领域的技术人员能够以适合于构思的特定用途来以各种实施方式和各种修改而利用本发明。
Claims (10)
1.一种实验分流方法,所述方法包括:
获取客户端发送的访问请求,其中,所述访问请求包括请求来源标识和待访问页面的页面标识符;
将所述访问请求和预先获得的实验配置信息进行匹配,获得与所述访问请求相匹配的流量层,其中,所述实验配置信息包括流量层标识符、流量层关键字和流量层内实验占比信息,并且其中,所述流量层包括一个或多个实验;
将所述请求来源标识和所述流量层的流量层关键字进行拼接,获得流量层拼接字;
对所述流量层拼接字进行散列,获得流量层散列值;
根据所述流量层散列值和所述流量层内实验占比信息,在所述流量层中的一个或多个实验中确定所述访问请求将要进入的实验。
2.根据权利要求1所述的方法,所述方法还包括:
将所述访问请求将要进入的实验的实验标识添加到所述访问请求中。
3.根据权利要求1所述的方法,其中,所述访问请求还包括历史实验标识,所述实验配置信息还包括与所述流量层标识符相对应的在前实验标识,
并且,将所述访问请求和预先获得的实验配置信息进行匹配,获得与所述访问请求相匹配的流量层包括:
将所述访问请求中的所述页面标识符与所述实验配置信息中的所述流量层标识符进行匹配,并且将所述访问请求中的所述历史实验标识与所述实验配置信息中与所述流量层标识符相对应的所述在前实验标识进行匹配,获得与所述访问请求相匹配的所述流量层。
4.根据权利要求3所述的方法,所述方法还包括:
将所述访问请求当前进入的实验标识发送给所述客户端,以便所述客户端将所述访问请求当前进入的实验标识记录为所述历史实验标识。
5.根据权利要求1所述的方法,其中,获取客户端发送的访问请求包括:
拦截所述访问请求。
6.根据权利要求1所述的方法,其中,所述方法在服务器上执行,
并且,所述方法还包括:
从数据库中读取所述实验配置信息;
将所述实验配置信息加载到所述服务器的内存中。
7.根据权利要求6所述的方法,所述方法还包括:
设置所述实验配置信息的加载时间;
在将所述访问请求和所述实验配置信息进行匹配之前,判断当前时间是否超出所述加载时间;
如果所述当前时间超出所述加载时间,则重新从所述数据库中读取所述实验配置信息;
如果所述当前时间没有超出所述加载时间,则使用所述实验配置信息。
8.一种实验分流装置,所述装置包括:
访问请求获取模块,配置用于获取客户端发送的访问请求,其中,所述访问请求包括请求来源标识和待访问页面的页面标识符;
流量层匹配模块,配置用于将所述访问请求和预先获得的实验配置信息进行匹配,获得与所述访问请求相匹配的流量层,其中,所述实验配置信息包括流量层标识符、流量层关键字和流量层内实验占比信息,并且其中,所述流量层包括一个或多个实验;
流量层拼接模块,配置用于将所述请求来源标识和所述流量层的流量层关键字进行拼接,获得流量层拼接字;
流量层散列模块,配置用于对所述流量层拼接字进行散列,获得流量层散列值;
实验确定模块,配置用于根据所述流量层散列值和所述流量层内实验占比信息,在所述流量层中的一个或多个实验中确定所述访问请求将要进入的实验。
9.一种电子设备,所述电子设备包括:
存储器,配置用于存储指令;以及
处理器,配置用于调用所述指令执行权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,执行权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910188025.1A CN110046092B (zh) | 2019-03-12 | 2019-03-12 | 实验分流方法、装置、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910188025.1A CN110046092B (zh) | 2019-03-12 | 2019-03-12 | 实验分流方法、装置、电子设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110046092A true CN110046092A (zh) | 2019-07-23 |
CN110046092B CN110046092B (zh) | 2020-07-07 |
Family
ID=67274891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910188025.1A Active CN110046092B (zh) | 2019-03-12 | 2019-03-12 | 实验分流方法、装置、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110046092B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110601922A (zh) * | 2019-09-18 | 2019-12-20 | 北京三快在线科技有限公司 | 一种对照实验的实现方法、装置、电子设备和存储介质 |
CN110808872A (zh) * | 2019-10-21 | 2020-02-18 | 微梦创科网络科技(中国)有限公司 | 一种流量实验的实现方法、装置及电子设备 |
CN112333246A (zh) * | 2020-10-26 | 2021-02-05 | 深圳市酷开网络科技有限公司 | 一种ABtest实验方法、装置、智能终端及存储介质 |
CN112966180A (zh) * | 2021-03-05 | 2021-06-15 | 北京百度网讯科技有限公司 | 请求处理方法、装置、设备、介质和程序产品 |
CN113064820A (zh) * | 2021-03-26 | 2021-07-02 | 深圳依时货拉拉科技有限公司 | 更新a/b实验sdk的方法、设备和计算机可读存储介质 |
CN113076195A (zh) * | 2021-03-31 | 2021-07-06 | 北京字节跳动网络技术有限公司 | 对象的分流方法、装置、可读介质和电子设备 |
CN113965522A (zh) * | 2021-11-11 | 2022-01-21 | 湖南快乐阳光互动娱乐传媒有限公司 | 行为日志分组方法、装置、存储介质和设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1984071A (zh) * | 2006-06-05 | 2007-06-20 | 华为技术有限公司 | 通讯网络中对数据流的分流方法和装置 |
CN102868628A (zh) * | 2011-07-06 | 2013-01-09 | 阿里巴巴集团控股有限公司 | 流量切分方法、装置和系统 |
CN103281213A (zh) * | 2013-04-18 | 2013-09-04 | 西安交通大学 | 一种网络流量内容提取和分析检索方法 |
CN103577321A (zh) * | 2012-08-07 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 一种网站页面的多版本并行测试方法和服务器 |
US20150277901A1 (en) * | 2014-04-01 | 2015-10-01 | International Business Machines Corporation | Recording, replaying and modifying an Unstructured Information Management Architecture (UIMA) pipeline |
CN105376151A (zh) * | 2015-12-15 | 2016-03-02 | 广州唯品会信息科技有限公司 | ABtest平台的分流方法及系统 |
CN105373480A (zh) * | 2015-12-15 | 2016-03-02 | 广州唯品会信息科技有限公司 | 优化ABTest系统分流的方法及系统 |
CN107635010A (zh) * | 2017-10-13 | 2018-01-26 | 网易(杭州)网络有限公司 | 流量调度方法、装置、计算机可读存储介质及电子设备 |
CN108319554A (zh) * | 2018-02-13 | 2018-07-24 | 广州市百果园信息技术有限公司 | 应用功能的测试方法、计算机可读存储介质和终端设备 |
US20180285186A1 (en) * | 2017-03-31 | 2018-10-04 | Microsoft Technology Licensing, Llc | Machine learning for input fuzzing |
-
2019
- 2019-03-12 CN CN201910188025.1A patent/CN110046092B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1984071A (zh) * | 2006-06-05 | 2007-06-20 | 华为技术有限公司 | 通讯网络中对数据流的分流方法和装置 |
CN102868628A (zh) * | 2011-07-06 | 2013-01-09 | 阿里巴巴集团控股有限公司 | 流量切分方法、装置和系统 |
CN103577321A (zh) * | 2012-08-07 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 一种网站页面的多版本并行测试方法和服务器 |
CN103281213A (zh) * | 2013-04-18 | 2013-09-04 | 西安交通大学 | 一种网络流量内容提取和分析检索方法 |
US20150277901A1 (en) * | 2014-04-01 | 2015-10-01 | International Business Machines Corporation | Recording, replaying and modifying an Unstructured Information Management Architecture (UIMA) pipeline |
CN105376151A (zh) * | 2015-12-15 | 2016-03-02 | 广州唯品会信息科技有限公司 | ABtest平台的分流方法及系统 |
CN105373480A (zh) * | 2015-12-15 | 2016-03-02 | 广州唯品会信息科技有限公司 | 优化ABTest系统分流的方法及系统 |
US20180285186A1 (en) * | 2017-03-31 | 2018-10-04 | Microsoft Technology Licensing, Llc | Machine learning for input fuzzing |
CN107635010A (zh) * | 2017-10-13 | 2018-01-26 | 网易(杭州)网络有限公司 | 流量调度方法、装置、计算机可读存储介质及电子设备 |
CN108319554A (zh) * | 2018-02-13 | 2018-07-24 | 广州市百果园信息技术有限公司 | 应用功能的测试方法、计算机可读存储介质和终端设备 |
Non-Patent Citations (2)
Title |
---|
XIN JIN: "A Web-App Auto-Testing System based on Test-Flow and Control Constrain s", 《2008 INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE AND SOFTWARE ENGINEERING》 * |
赵佳等: "分级网格服务的Apache ab测试分析", 《测控与仪器仪表》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110601922A (zh) * | 2019-09-18 | 2019-12-20 | 北京三快在线科技有限公司 | 一种对照实验的实现方法、装置、电子设备和存储介质 |
CN110808872A (zh) * | 2019-10-21 | 2020-02-18 | 微梦创科网络科技(中国)有限公司 | 一种流量实验的实现方法、装置及电子设备 |
CN112333246A (zh) * | 2020-10-26 | 2021-02-05 | 深圳市酷开网络科技有限公司 | 一种ABtest实验方法、装置、智能终端及存储介质 |
CN112333246B (zh) * | 2020-10-26 | 2023-05-05 | 深圳市酷开网络科技股份有限公司 | 一种ABtest实验方法、装置、智能终端及存储介质 |
CN112966180A (zh) * | 2021-03-05 | 2021-06-15 | 北京百度网讯科技有限公司 | 请求处理方法、装置、设备、介质和程序产品 |
CN112966180B (zh) * | 2021-03-05 | 2024-05-17 | 北京百度网讯科技有限公司 | 请求处理方法、装置、设备、介质和程序产品 |
CN113064820A (zh) * | 2021-03-26 | 2021-07-02 | 深圳依时货拉拉科技有限公司 | 更新a/b实验sdk的方法、设备和计算机可读存储介质 |
CN113064820B (zh) * | 2021-03-26 | 2022-09-16 | 深圳依时货拉拉科技有限公司 | 更新a/b实验sdk的方法、设备和计算机可读存储介质 |
CN113076195A (zh) * | 2021-03-31 | 2021-07-06 | 北京字节跳动网络技术有限公司 | 对象的分流方法、装置、可读介质和电子设备 |
CN113076195B (zh) * | 2021-03-31 | 2023-04-07 | 抖音视界有限公司 | 对象的分流方法、装置、可读介质和电子设备 |
CN113965522A (zh) * | 2021-11-11 | 2022-01-21 | 湖南快乐阳光互动娱乐传媒有限公司 | 行为日志分组方法、装置、存储介质和设备 |
CN113965522B (zh) * | 2021-11-11 | 2024-04-05 | 湖南快乐阳光互动娱乐传媒有限公司 | 行为日志分组方法、装置、存储介质和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110046092B (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110046092A (zh) | 实验分流方法、装置、电子设备和计算机可读存储介质 | |
US7827166B2 (en) | Handling dynamic URLs in crawl for better coverage of unique content | |
US8645355B2 (en) | Mapping Uniform Resource Locators of different indexes | |
CN109542980B (zh) | 一种区块链的数据处理方法、装置、设备及介质 | |
CN106780045B (zh) | 保单信息批改方法和装置 | |
CN107391735A (zh) | 基于区块链的业务数据溯源方法、装置、系统和存储设备 | |
US10362086B2 (en) | Method and system for automating submission of issue reports | |
CN107040585A (zh) | 一种业务校验的方法及装置 | |
CN105577454A (zh) | 一种基于日志快速定位业务故障的方法 | |
CN107609135A (zh) | 页面元素确定方法及设备、用户行为路径确定方法及装置 | |
CN110457199A (zh) | 性能测试的方法和装置 | |
RU2631769C2 (ru) | Способ и устройство для определения цели обработки информации | |
CN109614262A (zh) | 业务校验方法、装置及计算机可读存储介质 | |
CN106878370A (zh) | 一种本地缓存的更新方法和设备 | |
US10374934B2 (en) | Method and program product for a private performance network with geographical load simulation | |
CN106899549A (zh) | 一种网络安全检测方法及装置 | |
CN110516173B (zh) | 一种非法网站识别方法、装置、设备及介质 | |
CN109783543A (zh) | 数据查询方法、装置、设备和存储介质 | |
CN108647357A (zh) | 数据查询的方法及装置 | |
CN111488995A (zh) | 用于评估联合训练模型的方法和装置 | |
CN108074033A (zh) | 指标数据的处理方法、系统、电子设备和存储介质 | |
US10241957B2 (en) | Workload patterns for realistic load recreation in performance testing | |
CN103684823A (zh) | 网络日志记录方法、网络访问路径确定方法及相关装置 | |
CN110019363A (zh) | 一种校验数据的方法和装置 | |
KR20170124194A (ko) | 여행정보 제공서비스방법 및 프로그램 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |