本发明属于大数据处理技术领域,具体涉及一种流量染色方法。
背景技术:
流量染色是指根据流量协议设置对应的流量染色规则,对指定的流量进行染色标记,并在整个调用链中携带该标记。通过染色流量可以对特定的流量进行跟踪和路由。
流量染色广泛应用于abtest实验,abtest实验即为一个优化目标制定两个方案,让一部分用户使用方案a,另一部分使用方案b,然后收集这两个方案产生的用户数据,再根据用户数据判断两个方案的优劣,从而对方案的选择进行决策,提升转化率。在上述过程中,需要进行流量染色,参见图1、2,即将不同的流量(或不同的用户)染成不同的实验号。然后服务使用方根据返回的不同实验号,获取对应的实验配置,最后根据不同实验配置的效果和指标,评价哪种实验配置具有最好的效果。
但是现有的abtest实验中,需要保证两组实验具有充足的流量,如果同一时间实验过多,每组实验分到流量就会减少,从而降低了实验效果评价的可信度。且现有技术是把所有的流量当成一层,这样就降低了同时进行的实验数。另外现有技术只能根据一些简单的流量特征(例如机型,应用版本)进行分流,不能根据用户的特征进行分流。
技术实现要素:
针对现有技术中的缺陷,本发明提供一种流量染色方法,使用多层的方式对流量进行分层,还能够根据用户特征进行分流。
一种流量染色方法,包括以下步骤:
将待处理流量按照预设的分层规则分成多个层级;
获取待处理流量中的特征值;
在每个层级中,结合所述特征值对待处理流量进行染色,以获得实验号。
优选地,所述分层规则具体包括:
将所述待处理流量归为四个层级:ui层、算法层、内容层和广告层。
优选地,所述获得实验号具体包括:
分别获得所述四个层级输出的不同的实验号。
优选地,所述分层规则还将所述待处理流量归为独立流量层。
优选地,所述获得实验号具体包括:
获得所述独立流量层输出的四个相同的实验号。
优选地,所述在每个层级中,结合所述特征值对待处理流量进行染色,以获得实验号具体包括:
在每个层级中设置多个染色特征值及其对应的实验号;
当获取到待处理流量的特征值时,识别该层级中与所述特征值相符的染色特征值,输出该染色特征值对应的实验号,作为该待处理流量在该层级的染色结果。
优选地,该方法在所述将待处理流量按照预设的分层规则分成多个层级之后,还包括:
对每个层级进行哈希运算,使得待处理流量能够根据预设的占比染色配置分流到不同的实验号中进行染色。
优选地,所述对每个层级进行哈希运算,使得待处理流量能够根据预设的占比染色规则分流到不同的实验号中进行染色具体包括:
在每个层级中设置多个实验号以及包含有若干个数值的染色范围;
在每个层级中,根据所述占比染色配置将染色范围中所有的数值分配给不同的实验号,以获得每个实验号的染色数值;
当该层级接收到待处理流量时,使用随机算法输出一随机数;
对所述随机数进行运算,使得运算后的随机数落入该层级的染色范围中;
识别与运算后的随机数相符的染色数值,输出该染色数值对应的实验号,作为该待处理流量在该层级的染色结果。
优选地,所述在每个层级中,根据所述占比染色配置将染色范围中所有的数值分配给不同的实验号,以获得每个实验号的染色数值具体包括:
根据所述占比染色配置获得每个实验号的染色占比;
将染色范围中的数值按照不同实验号的染色占比依次连续分配给不同的实验号,以获得每个实验号的染色数值。
由上述技术方案可知,本发明提供的一种流量染色方法,使用多层的方式对流量进行分层,还能够根据用户特征进行分流,可以增加并行实验数量,并且对于不同类型的用户进行更为细致的实验。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1为背景技术提供的现有染色方法的数据交互图。
图2为背景技术提供的现有染色方法的流程图。
图3为本发明实施例一提供的流量染色方法的流程图。
图4为本发明实施例一提供的流量分层的层级示意图。
图5为本发明实施例二提供的根据用户特征进行分流的方法流程图。
图6为本发明实施例二提供的占比染色的方法流程图。
图7为本发明实施例三提供的实验号应用的数据交互图。
图8为本发明实施例三提供的实验号应用的外部模块
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
实施例一:
一种流量染色方法,参见图3,包括以下步骤:
将待处理流量按照预设的分层规则分成多个层级;
获取待处理流量中的特征值;
在每个层级中,结合所述特征值对待处理流量进行染色,以获得实验号。
具体地,该方法为了解决现有技术中存在的单层染色容易造成实验增多、流量减少的问题,将流量分为多个层级,使用多层的方式对流量进行分层。同时能够与用户特征进行结合染色,根据用户特征进行分流,可以增加并行实验数量,使得对于不同类型的用户进行更为细致的实验。该方法可以在网页或saas中实现。
参见图4,该方法可以将流量归为四个层级:ui层、算法层、内容层和广告层。或者是将流量归为独立流量层。当将流量归为四个层级时,该方法在对流量进行染色后,输出四个不同的实验号。当将流量归为独立流量层时,该方法在对流量进行染色后,输出四个相同的实验号。其中每个层级的染色方法是相同的。流量分层的层级根据用户的业务范围和客户群体确定。
实施例二:
实施例二在实施例一的基础上,提供了两种染色方法。
1、特征染色。
所述在每个层级中,结合所述特征值对待处理流量进行染色,以获得实验号具体包括:
在每个层级中设置多个染色特征值及其对应的实验号;
当获取到待处理流量的特征值时,识别该层级中与所述特征值相符的染色特征值,输出该染色特征值对应的实验号,作为该待处理流量在该层级的染色结果。
具体地,该方法可以根据使用过程中产生出的特征值进行染色,例如用户使用过程中产生的用户特征(例如用户点击、用户请求),地域特征等等。例如在算法层设置染色特征值a(使用算法a)对应的实验号为1001,染色特征值b(使用算法b)对应的实验号为1002。那么当接收到待处理流量a时,识别待处理流量a的特征值为使用算法a,那么待处理流量a经过算法层染色后,输出的实验号为1001。
还例如在ui层设置染色特征值a(使用红色的ui)对应的实验号为2001,染色特征值b(使用黑色的ui)对应的实验号为2002。那么当接收到待处理流量a时,识别待处理流量a的特征值为使用黑色的ui,那么待处理流量a经过ui层染色后,输出的实验号为2001。由此可见同一个待处理流量可以经过多个层级分别进行染色。
图5提供了一种根据用户特征进行分流的方法,当接收到带有用户标志待处理流量时,通过redis获取用户数据,然后通过用户特征配置对带有用户数据的待处理流量进行计算,获得用户特征。最后判断用户特征是否与染色特征值匹配,如果是,输出相应的实验号。其中在上述匹配过程中,分为独立流量层染色匹配和其他层级染色匹配两种。
2、占比染色。
参见图6,该方法在所述将待处理流量按照预设的分层规则分成多个层级之后,还包括:
对每个层级进行哈希运算,使得待处理流量能够根据预设的占比染色配置分流到不同的实验号中进行染色。
具体地,占比染色配置用于设置每个实验号的染色占比,例如当设置实验号a的流量占比为30%,实验号b的流量占比为70%,即表示给实验号a分配30%的流量,给实验号b分配70%的流量。用户可以根据自身需求设置各个实验号的染色占比,使得该方法能够按照占比染色配置对流量进行分流。该方法根据占比染色配置对每个层级进行哈希运算,使得流量按照占比染色配置分流到不同的实验号中。其中,在进行哈希运算时,还需要将独立流量层和其他层级分开进行运算。
优选地,所述对每个层级进行哈希运算,使得待处理流量能够根据预设的占比染色规则分流到不同的实验号中进行染色具体包括:
a:在每个层级中设置多个实验号以及包含有若干个数值的染色范围;
b:在每个层级中,根据所述占比染色配置将染色范围中所有的数值分配给不同的实验号,以获得每个实验号的染色数值;具体包括:
根据所述占比染色配置获得每个实验号的染色占比;
将染色范围中的数值按照不同实验号的染色占比依次连续分配给不同的实验号,以获得每个实验号的染色数值。
具体地,该方法提供了一种简单的分流方法,通过设置染色范围,将染色范围内的数值分配给不同的实验号,通过给不同实验号分配不同数量的数值来控制实验号的染色占比。例如:假设染色范围内有1000个数值,给实验号a分配300个数值,给实验号b分配剩余700的数值,那么就说明实验号a需要分30%的流量,实验号b需要分70%的流量。本实施例还提供了一种更方便的分配方法,将染色范围中的数值按照不同实验号的染色占比依次连续分配给不同的实验号。例如将染色范围内1000个数值中前面300个分配给实验号a,后面700个分配给实验号b,这样按顺序分配,容易管理,不容易混乱。
c:当该层级接收到待处理流量时,使用随机算法输出一随机数;
具体地,当随机算法足够随机时,最后分流的效果就越能接近占比染色配置。例如可以使用sha1算法获取32位的16进制数字,然后将该数字取余1000,得到一个0-999的数值。
d:对所述随机数进行运算,使得运算后的随机数落入该层级的染色范围中;
e:识别与运算后的随机数相符的染色数值,输出该染色数值对应的实验号,作为该待处理流量在该层级的染色结果。
具体地,例如假设接收到待处理流量时,使用sha1算法获取32位的16进制数字,然后将该数字取余1000后得到246,而该数值对应的实验号为实验号a,则该待处理流量输出的实验号为实验号a。如果对随机数取余1000后得到850,而该数值对应的实验号为实验号b,则该待处理流量输出的实验号为实验号b。
本发明实施例所提供的方法,为简要描述,实施例部分未提及之处,可参考前述方法实施例中相应内容。
实施例三:
实施例三在上述实施例的基础上,增加实验号的应用。
图7以一个新闻客户端举例,说明对上述染色结果的一种应用,包括以下步骤:
步骤1:用户首次打开新闻客户端。
步骤2:该新闻客户端向资讯服务端请求资讯(带上用户id,机型,应用版本等用户特征)。
步骤3:资讯服务端请求染色服务(带上用户特征)。
步骤4:染色服务根据用户特征返回实验号(4个,由于初次使用,该步骤还不能进行用户特征染色)。
步骤5:资讯服务器根据拿到的实验号确定该用户使用的染色配置(例如使用推荐算法a,或者ui展示使用uia),然后返回对应的内容给用户。
步骤6:用户使用应用后产生的用户数据(例如点击次数,展示次数)上报给日志服务,然后日志服务离线处理这些用户数据得出用户天级数据(例如每日请求、展示、点击和次数),并储存到redis。
步骤7:用户再次使用该应用时,重复步骤1~3。流程4中,染色服务可以根据该用户天级数据进行更细致的染色(即进行用户特征染色)。
步骤8:重复步骤1~6。
图8提供了一种染色服务的外部连接模块,包括:
apollo模块。染色中心。用于配置每层的实验号以及对应的染色配置(比如,ui层有2个实验号,1001,1002,算法层有3个实验号,2001,2002,2003,其中1001需要30%流量,1002需要70%流量,2001需要是新用户,2002需要10%流量,2003需要90%流量)。
redis模块,用于存储图7中获得的用户天级数据。
eureka模块,注册中心。染色服务注册到该服务中,注册中心的其他服务(比如说资讯服务)能够知道染色服务的地址,从而能够向染色服务发起请求。
falcon-agent模块,用于采集染色服务的各项监控指标,比如收到的请求次数,每个请求的耗时,服务出现异常的次数等。
告警模块,当falcon-agent模块收集到的某项指标超过阈值时(比如耗时超过10ms),该告警模块会向相关人员发送告警信息。
grafana(监控ui)模块,将falcon-agent模块收集到的各个指标通过图形界面实时展示出来。
本发明实施例所提供的方法,为简要描述,实施例部分未提及之处,可参考前述方法实施例中相应内容。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
1.一种流量染色方法,其特征在于,包括以下步骤:
将待处理流量按照预设的分层规则分成多个层级;
获取待处理流量中的特征值;
在每个层级中,结合所述特征值对待处理流量进行染色,以获得实验号。
2.根据权利要求1所述流量染色方法,其特征在于,
所述分层规则具体包括:
将所述待处理流量归为四个层级:ui层、算法层、内容层和广告层。
3.根据权利要求2所述流量染色方法,其特征在于,
所述获得实验号具体包括:
分别获得所述四个层级输出的不同的实验号。
4.根据权利要求2所述流量染色方法,其特征在于,
所述分层规则还将所述待处理流量归为独立流量层。
5.根据权利要求4所述流量染色方法,其特征在于,
所述获得实验号具体包括:
获得所述独立流量层输出的四个相同的实验号。
6.根据权利要求1~5中任一权利要求所述流量染色方法,其特征在于,所述在每个层级中,结合所述特征值对待处理流量进行染色,以获得实验号具体包括:
在每个层级中设置多个染色特征值及其对应的实验号;
当获取到待处理流量的特征值时,识别该层级中与所述特征值相符的染色特征值,输出该染色特征值对应的实验号,作为该待处理流量在该层级的染色结果。
7.根据权利要求1~5中任一权利要求所述流量染色方法,其特征在于,该方法在所述将待处理流量按照预设的分层规则分成多个层级之后,还包括:
对每个层级进行哈希运算,使得待处理流量能够根据预设的占比染色配置分流到不同的实验号中进行染色。
8.根据权利要求7所述流量染色方法,其特征在于,所述对每个层级进行哈希运算,使得待处理流量能够根据预设的占比染色规则分流到不同的实验号中进行染色具体包括:
在每个层级中设置多个实验号以及包含有若干个数值的染色范围;
在每个层级中,根据所述占比染色配置将染色范围中所有的数值分配给不同的实验号,以获得每个实验号的染色数值;
当该层级接收到待处理流量时,使用随机算法输出一随机数;
对所述随机数进行运算,使得运算后的随机数落入该层级的染色范围中;
识别与运算后的随机数相符的染色数值,输出该染色数值对应的实验号,作为该待处理流量在该层级的染色结果。
9.根据权利要求8所述流量染色方法,其特征在于,所述在每个层级中,根据所述占比染色配置将染色范围中所有的数值分配给不同的实验号,以获得每个实验号的染色数值具体包括:
根据所述占比染色配置获得每个实验号的染色占比;
将染色范围中的数值按照不同实验号的染色占比依次连续分配给不同的实验号,以获得每个实验号的染色数值。
技术总结