当前位置: 首页 > news >正文

AbTest —— 不同场景下的应用模式

文章目录

    • 不同人群眼中的 AbTest
    • AbTest 不同的功能倚重
      • 用户关联性弱,经典场景为 Feed - 部门组织形式大多非垂直业务
      • 用户关联性强,经典场景为 垂类/工具类APP;部门组织形式大多为垂直业务
    • 康为定律-组织决定产品形态
      • 不同应用模式下服务构建
        • 开机 & 后置
    • 小结

想了很久这章应该叫什么,最终还是定了 “不同场景下的应用模式”。介绍两种不同场景下的 AbTest 功能形态、及不同的形态造就原因。

注意:详细 AbTest 架构设计及实现,见文章

  • 广告业务系统 之 辅助决策 —— “ AB 实验平台”

  • AB ? Angelababy ? 噢不,拒绝老板拍板决策的神器 !用数据说话的决策实验平台 —— AbTest !

  • Overlapping Experiment Infrastructure: More, Better, Faster Experimentation

不同人群眼中的 AbTest

依据我不同阶段眼中 AbTest 模式的变化,把人生状态分为 三个阶段。

  • 首先是初识,初次遇到 AbTest 这种手段,但无实际的接触。只知道 AbTest 是通过“生物、化学…”做实验的方式,去决出最佳策略或方案,具体实现的见识固定在,谋篇介绍 AbTest 的架构或要点…文章;
  • 再次是真实接触 AbTest 服务,生产环境中切实需要实现 AbTest 功能。这是已经确认了 AbTest 的两个核心要素,随机性 + 正交性、及三个功能粒度点,uv + pv + 自定义。这个时候,脑海里会大概形成对 功能点、及 AbTest 服务应用模式的定义,对服务端流量做不同功能粒度的实验;
  • 第三个阶段是在另一个新的场景中,发现一个与已知 AbTest 应用方式有异正在运行的 AbTest。哦,其实不同场景中,AbTest 也是不一样的。

当然这是某个长度中对同一件事情的不同认知,因人而异,当然也欢迎雷同。下面就介绍两种应用模式。

AbTest 不同的功能倚重

用户关联性弱,经典场景为 Feed - 部门组织形式大多非垂直业务

在这类场景中,AbTest 的诉求是 对流量粒度越细越好。常规为,uv、pv。
在 Feed 的自然结果中,我可以通过 uid 和 pv 做实验。比如 A 部分用户做展示样式A,B 部分用户做展示样式B;也可以针对当前 C% 的流量做样式 C,D%的流量做样式 D。这样通过观察 用户的反馈数据,可以确认 A/B 样式的优缺;可以通过 相同比例流量下不同的点击/交互频次,可以确认 C/D 那种样式收益效果更好。

这个模式下,AbTest 需求方往往作为中台或者业务平行部门,对生产数据的视角更广、高,业务专业局限比较少。

用户关联性强,经典场景为 垂类/工具类APP;部门组织形式大多为垂直业务

这类场景中,AbTest 的诉求相对单一。常规为,uv。
在 地图/出行类强依赖登陆的状态下,uv 粒度的实验相对占据了全部实验的 99.9%,pv 或其他粒度 做起来及其复杂。比如 A 部分用户做展示样式A,B 部分用户做展示样式B…很常规与 Feed 类无异,但如果对 pv 做实验,显的不那么友好。因为要保证实验的正交性,就不可避免的出现 A 用户每次看到的实验效果不同,易对用户产生困扰或报 bug 的举动。当然,并不是不可以,比如一些用户关联性弱的场景,依旧可以做 pv 。

这个模式下,AbTest 需求方往往受垂类业务局限,部门方向走向为用户关联。这样状态下 AbTest 的应用模式就比较单一。

康为定律-组织决定产品形态

康威第一定律:组织设计的产品/设计等价于这个组织的沟通结构。

Conway’s law: Organizations which design systems are constrained to
produce designs which are copies of the communication structures of
these organizations.– Melvin Conway(1967)

线型系统和线型组织架构间有潜在的异质同态特性。异质同态指的是系统和组织虽然是两个东西,但是有相同的结构。

AbTest 不同的应用模式这个问题,也证实了这个定律。组织架构的不同,决定了部门前进的方向,进而确认了产品特征的趋势。

不同应用模式下服务构建

除了上文浅述的 AbTest 功能倚重不同,更深的是,功能的实现及构建方式也不同。准确的说,不同场景下,没有相同、完全一样的服务。 这里完善一下,对应上面场景的模块介入方式,希望可以给予你相关经验。

开机 & 后置

  • 针对 垂类、用户关联性强的产品/部门,可以把 AbTest 放置开机阶段,开机往往具有热加载及倒计时逻辑,可以融纳较多的服务。当然,前面重了,就意味着后面服务就轻了。
  • 针对 Feed 类,用户关联性弱的产品/部门,可以考虑把 AbTest 放置在 前置或后置服务,这样形成的漏斗具有两极性。

当然这样的方案并不唯一,也不全面。比如,还有 AbTest 往往具备更多的数据传输问题,是安排在 Header 还是 body、或者 特定协议…. 大家找到最适合当前场景的,才是最佳的。

小结

AbTest 只是一个例子,换做是其他模块/服务,或者是某件事情,在不同的场景下,都是有因果的、且合适、科学的。

相关文章:

AbTest —— 不同场景下的应用模式

文章目录不同人群眼中的 AbTestAbTest 不同的功能倚重用户关联性弱,经典场景为 Feed - 部门组织形式大多非垂直业务用户关联性强,经典场景为 垂类/工具类APP;部门组织形式大多为垂直业务康为定律-组织决定产品形态不同应用模式下服务构建开机…...

fast-api 一款快速将spring的bean发布成接口并生产对应swagger文档调试的轻量级工具

fast-api简介背景开发痛点:分析需求实战fast-api快速上手1. 引入依赖2. FastApiMapping标记service对象3. swagger2/knife4j 在线测试进阶使用开启调试模式支持指定类或包目录发布如何关闭fast-api自定义fast-api的前缀写在最后简介 fast-api 一款快速将spring的bean(service)发…...

以公益之名 让人类发现数学之美

目录 1.品牌理念高举高打 2.创新赛制 赋能品牌 3.全球化的品牌传播 9月26日,2022阿里巴巴全球数学竞赛获奖名单公布,4座金杯分别由平均年龄25岁,来自美国麻省理工学院、美国布朗大学、北京大学在读数学博士斩获。77位获奖者中00后超五成引热…...

JUC并发编程之HashMap(jdk1.7版本)-底层源码探究

目录 JUC并发编程之HashMap(jdk1.7版本)-底层源码探究 HashMap底层源码 - jdk1.7 基本概念 -采取层层递进,问答式 存储Key-Value的结构 常量和成员变量 构造方法 put方法 inflateTable方法 hash方法 indexFor方法 addEntry方法 resize方法 createEntry…...

QT Q_OBJECT 和 signals/slots

Q_OBJECT宏展开 #define Q_OBJECT \ public: \QT_WARNING_PUSH \Q_OBJECT_NO_OVERRIDE_WARNING \static const QMetaObject staticMetaObject; \virtual const QMetaObject *metaObject() const; \virtual void *qt_metacast(const char *); \virtual int qt_metacall(QMetaOb…...

APM新添加UAVCAN设备

简介 UAVCAN是一种轻量级协议,旨在通过CAN总线在航空航天和机器人应用中实现可靠通信。要实现通信,最基本需要data_type_ id, signature、数据结构、设备程序初始化。 添加设备数据结构文件(.uavcan格式) 1.在以下路径添加设备数据结构文件,根据设备类…...

【C++】string类基本用法

文章目录string类基本用法1. 为什么要学习string类?1.1 C语言中的字符串2. 标准库中的string类2.1 string类2.2 string类的常用接口说明小试牛刀1. 仅仅反转字母2. 字符串中第一个唯一字符3. 字符串中最后一个单词的长度string类基本用法 1. 为什么要学习string类&…...

KDZD耐电压高压击穿强度测试仪

一、技术参数 01、输入电压: 交流 220 V。 02、输出电压: 交流 0--50KV ; 直流 0—50kv 。 03、电器容量:3KVA。 04、高压分级:0—50KV,(全程可调)。 05、升压速率:0.1KV/s-…...

数组和指针面试题的补充(细的抠jio)

生命是一条艰险的峡谷&#xff0c;只有勇敢的人才能通过。 ——米歇潘 说明&#xff1a;用的vs都是x86的环境&#xff0c;也就是32位平台。 建议&#xff1a;对于难题来说&#xff0c;一定要配合画图来解决问题。 第一题&#xff1a; #include<stdio.h> int…...

Java多线程基础

文章目录Java多线程基础一、什么是进程与线程&#xff1f;二、线程和进程的区别【重点】三、线程的创建方式【重点】1. 继承Thread类2. 实现Runnable接口3. lambda 表达式四、Thread的常见属性线程中断自己定义一个标志位Thread类提供的静态方法线程的状态Java多线程基础 一、…...

爆品分析第5期 | 一条视频带货3700+,这款斋月不锈钢厨具套装火了!

俗话说民以食为天&#xff0c;吃在任何一种文化中都占据重要的位置&#xff0c;要做出一道美味佳肴&#xff0c;除了食材、烹饪者的自身厨艺之外&#xff0c;还少不了一口好锅。新冠疫情以来&#xff0c;全世界范围内的封闭让很多人养成了居家做饭的习惯&#xff0c;不仅为厨具…...

团队管理的七个要点

要掌握团队管理的要点和做好团队管理工作&#xff0c;不是一件容易的事&#xff0c;但也远非想象中那么难。首先&#xff0c;我个人比较推荐所有团队管理者都能阅读下《经理人参阅&#xff1a;团队管理》&#xff08;注意该书仅可其官网获得&#xff09;这本佳作。相信会为你带…...

Go语言容器之map、list和nil

一、map map和C中map一样&#xff0c;里面存放的是key-value键值对在Go中map是引用类型&#xff0c;声明语法&#xff1a;var map变量名 map[key的类型]value的类型package mainimport "fmt"func main() {var mp map[string]intmpls : map[string]int{"one&quo…...

软件测试的案例分析 - 闰年1

&#xff08;这是关于博客质量分的测试 https://www.csdn.net/qc) 我们谈了不少测试的名词, 软件是人写的, 测试计划和测试用例也是人写的, 人总会犯错误。错误发生之后, 总有人问: 为什么这个bug 没有测出来啊?! 我们看看一类简单的bug是如何发生的&#xff0c;以及如何预防…...

【强化学习】强化学习数学基础:值函数近似

值函数近似Value Function ApproximationMotivating examples: curve fittingAlgorithm for state value estimationObjective functionOptimization algorithmsSelection of function approximatorsIllustrative examplesSummary of the storyTheoretical analysisSarsa with …...

JVM系列——Java与线程,介绍线程原理和操作系统的关系

并发不一定要依赖多线程(如PHP中很常见的多进程并发)。 但是在Java里面谈论并发&#xff0c;基本上都与线程脱不开关系。因此我们讲一下从Java线程在虚拟机中的实现。 线程的实现 线程是比进程更轻量级的调度执行单位。 线程的引入&#xff0c;可以把一个进程的资源分配和执行调…...

C++打开文件夹对话框之BROWSEINFO

头文件 #include <shlobj.h> #include <windows.h> #include <stdio.h> using namespace std; 案例 string chooseFile(void) {//用户选择的路径&#xff0c;可以是TCHAR szBuffer[MAX_PATH] {0};然后再使用TCHAR 转char字符串&#xff0c;此处可以直接使…...

Nuxt项目配置、目录结构说明-实战教程基础-Day02

Nuxt项目配置、目录结构说明-实战教程基础-Day02一、Nuxt项目结构1.1资源目录1.2 组件目录1.3 布局目录1.4 中间件目录1.5 页面目录1.6 插件目录1.7 静态文件目录1.8 Store 目录1.9 nuxt.config.js 文件1.10 package.json 文件其他&#xff1a;别名二、项目配置2.1 build2.2 cs…...

单链表的头插,尾插,头删,尾删等操作

前言顺序表要求是具有连续的物理空间&#xff0c;并且数据的话是在这些空间当中是连续的存储。但这样会带来很多问题&#xff0c;比如说在头部或者说中间插入的话&#xff0c;效率不是很高&#xff1b;并且申请空间可能需要扩容&#xff0c;并且越往后一般来说都是异地扩容&…...

Qt扫盲-QProcess理论总结

QProcess理论使用总结一、概述二、使用三、通过 Channel 通道通信四、同步进程API五、注意事项1. 平台特性2. 不能实时读取一、概述 QProcess 其实更多的是与外面进程进行交互的一个工具类&#xff0c;通过这个类来启动外部进程&#xff0c;获取这个进程的标准输出&#xff0c…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...