线上流量对比应用实践

标签: 线上 流量 应用 | 发表时间:2022-01-18 03:12 | 作者:得物技术
出处:https://juejin.cn/tag/%E6%9E%B6%E6%9E%84

一、流量比对提出背景

我们在进行代码重构以及需求迭代时,在上线之前需要进行一轮、二轮以及回归测试,如果业务场景比较复杂,那么就会存在以下几个方面的问题:

(1)测试的周期就会相应的拉的比较长;

(2)随着业务功能的不断迭代,测试案例不一定能够覆盖全,一些冷门的隐藏比较深的问题不一定可以及时发现,回归测试难度逐渐增大;

(3)影响发布频率;

(4)开发以及测试人员消耗在测试阶段时间比较长,不利于腾出时间进行下一步的业务迭代、技术改造等工作;

(5)代码质量很多时候依赖人为的code review,迭代代码行较多,code review占用时间较多;

为此,我们能否解决这些痛点,使得我们的工作效率得到一定的提升,以及我们代码的质量得到一定的保证,是我们需要思考的一个问题。业内的做法一帮将线上的流量引入对比机器,将生产结果和对比机器进行实时对比,及时暴露问题,开发和测试能够及时发现并进行修改。

二、和流量回放平台的对比

目前业内的流量回放平台基本都是基于流量的录制,将流量引到测试环境进行回放,回放后分析系统存在的问题,在一定程度上只能释放一些回归测试的资源,并不能使我们开发中存在的问题在提测之前可以及时暴露,提前让开发人员解决问题,提高代码提测的质量,我们的目标是要做到即使没有测试参与,也要保证我们的代码质量,如果对线上存量业务的有影响,能够及时得到反馈,形成一个闭环处理,一个实时性的比对方案是很有必要的。

三、流量比对方案

对于一般的业务系统,我们比对的维度一般包括数据库落地数据、mq消息、接口调用请求参数以及输出四个维度,一般情况下在对比流量是整个生产流量50%情况下,基本可以覆盖生产案例场景,在此基础上针对这三个维度对比结果一致率接近100%,那么我们的上线的迭代版本对存量业务的影响是可以得到保证的。主要思路是构建请求报文,执行请求再到分析比对结果。

(1)整体架构

当生产应用处理完对应请求时,所有涉及接口的调用,mq消息的发送等埋点信息都会被记录到ES(鉴于ES是分布式、高扩展、高实时的搜索和数据分析引擎,通过其提供的接口,可以很方便的获取埋点信息),这时候会发出一条mq消息,对比工具监听mq消息进行消费,根据对应的订单信息,查询生产订单数据并进行mock,然后调用对比应用,对比工具延迟一定时间后,根据需要对比的内容进行对比,将比对结果发送ES,可以根据ES对比结果埋点查看对比一致率以及不一致的具体原因。

:生产应用:实际的生产应用集群

对比应用:我们的迭代版本部署集群

对比工具:单独专门用来跑对比的一个应用

(2)数据埋点

数据买点是比对的前提,包括接口请求的埋点、q消息的埋点,输入请求的埋点,后续对比工具读取数据进行比对

(3)数据mock

对比应用不能实际操作db以及和上下游系统进行交互,所有数据需要进行mock,mock的数据主要是调用下游接口的应答数据,mock的数据可以写入redis,对比应用在处理业务逻辑时,可以直接读取redis相应的mock数据作为返回。

(4)对比配置+数据对比

对比配置一般配置在配置中心,可以根据实际对比的维度进行配置化管理,对比表字段的对比,比如一些时间,可以配置成忽略字段,接口和mq里面的一些参数也可以进行配置化忽略对比,比如订单号、发送时间之类。

(5)结果一致率分析

对比工具可以将对比结果发送至ES,我们可以通过ES根据具体的埋点actionType筛选对应的比对结果,一致率和不一致原因。

四、总结

线上流量对比方案总体是基于基本的业务埋点,对一个业务流程里面所涉及到的具体接口,mq消息都需要有一个全面的梳理,需要指出的是,想要真正利用实时对比方案提前知道迭代风险的前提时,我们可以随时发布对比应用,这一点上面应该不要做限制。 我们的愿景是在即使没有测试参与的情况下,开发也可以保证上线代码的安全性,开发自己可以形成闭环。此对比方案存在一些优缺点如下:

优点

(1)可以及时发现代码重构以及版本迭代改动中存在的问题,并及时修复,不必等到提测之后再由测试发现,潜在问题可以提前暴露。不必过度依赖测试来发现问题;

(2)一定程度上释放回归测试的资源;

(3)保证整个研发过程的质量;

(4)可以提升发布频率;

(5)对比应用不需要单独搭建一套对比数据库用于对比,降低对比成本;

(6)对比应用和对比工具作为非核心应用,随改随发,有一定的灵活性;

(7)对比内容灵活化配置;

缺点

(1)对代码有一定程度的入侵,需要发出一个对比的mq消息

(2)对于增量业务,因为其没有对比参考对象,目前还没有有效的方式确保代码质量,只有通过ut单元测试、代码code review等手段进行辅助。

文/HUZHIMIN

关注得物技术,做最潮技术人!

相关 [线上 流量 应用] 推荐:

线上流量对比应用实践

- - 掘金 架构
我们在进行代码重构以及需求迭代时,在上线之前需要进行一轮、二轮以及回归测试,如果业务场景比较复杂,那么就会存在以下几个方面的问题:. (1)测试的周期就会相应的拉的比较长;. (2)随着业务功能的不断迭代,测试案例不一定能够覆盖全,一些冷门的隐藏比较深的问题不一定可以及时发现,回归测试难度逐渐增大;.

Java应用线上排查总结

- - arccode
本文总结了一些常见的线上应急现象和对应排查步骤和工具. 分享的主要目的是想让对线上问题接触少的同学有个预先认知,免得在遇到实际问题时手忙脚乱. 毕竟作者自己也是从手忙脚乱时走过来的. 在线上应急过程中要记住,只有一个总体目标: 尽快恢复服务,消除影响. 不管处于应急的哪个阶段,我们首先必须想到的是恢复问题,恢复问题不一定能够定位问题,也不一定有完美的解决方案,也许是通过经验判断,也许是预设开关等,但都可能让我们达到快速恢复的目的,然后 保留部分现场,再去定位问题、解决问题和复盘.

移动应用流量暴增的秘密:色情与垃圾信息泛滥

- - 行业资讯
  美国《连线》杂志日前发表署名为瑞安-泰特(RyanTate)的评论文章称,垃圾信息、色情内容以及欺诈数据已逐渐成为移动应用世界中一夜暴富的捷径,而包括Viddy、SocialCam等知名公司都乐于利用这些手段为公司获取有利的数据统计,并借机“骗取”融资.    以下是文章主要内容:.   随着资金流大量流入应用程序世界,应用程序开发商开始变得越来越疑神疑鬼.

详谈布隆过滤器在亿级流量电商系统的应用

- - 掘金 架构
本文已参与「新人创作礼」活动,一起开启掘金创作之路. 布隆过滤器在实际中发挥着非常重要的作用,一呢可以防止网站被攻击,二呢可以提高系统的性能. 接下来我们通过实际案例进行讲解. 例如在电商平台,下面商品访问的地址为 https://item.jd.com/ 857.html,其中 857 是商品的 SKU.

流量生意

- flypen - 张磊的blog
前些日子网上盛传某联盟的按月分成数据,其中番茄花园、雨木林风的分成都高达百万. 有人惊呼:原来做盗版软件这么赚钱. 也有人质疑:他们怎么可能赚这么多钱. 他们确实很赚钱,简单说,这就是流量生意. 为什么几乎每个巨头都有一个“网站联盟”. 为什么Google当年愿意付费推广Firefox. 为什么,推广Firefox、自己做Chrome的同时,把微软当作对手的Google还特意提供“优化的Internet Explorer”.

广电行业 | 大数据在用户流量分析中的应用 2015年上半年电视互动业务分析

- - 199IT互联网数据中心
199IT数据中心微信账户:i199IT. 我们可以先来设想一个生活场景:当你早上醒来打开电视,遥控器已经自动更换到你以往关注的财经频道;当你准备开车去上班,导航仪已经按照目前的路况规划了你的上班路线,及时避开了拥堵路段;在你上班的时候,手机提醒你快到结婚纪念日了,同时用你的消费喜好数据为你推荐了几款礼物以作备选;当你结束一天的工作回到家中,电视已经根据你的内容喜好为你推荐好了频道和节目,这就是大数据应用.

linux 查看流量

- - 开源软件 - ITeye博客
在Linux下怎么看网络流量. 在Windows下,我们可以很方便的通过360来查看网络流量,知道哪个进程占用的网络带宽比较多. 那在Linux下怎么看流量呢,对于Web服务器来说这是很重要的. 下面这边博客很仔细的介绍了Linux下看流量的方法:. Linux 各种查看网卡流量的方法  http://jasonyong.blog.51cto.com/47753/174197.

nginx 流量复制

- - 开源软件 - ITeye博客
# 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP. #设置 $url ==原url. #新接口地址改变的,需要转换url. #新接口地址改变的,需要转换url. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

超3亿活跃用户的多活架构,数据同步与流量调度怎么做? - 架构 - dbaplus社群:围绕Data、Blockchain、AiOps的企业级专业社群。技术大咖、原创干货,每天精品原创文章推送,每周线上技术分享,每月线下技术沙龙。

- -
1、OPPO多活架构原则   . 多活成本比较高的,双活是两倍,三活可能成本会低一些,但三活的难度更大. 因此没有办法对所有业务进行多活,只能对主线做多活. 举个例子,系统有个充值的功能,充值功能本身是强一致的,完全不能允许任何的延迟或者是副本的读. 但是多活切换之后,只有少数用户在切换的前几分钟有充值的,这部分用户余额可能没有通过过去,只需要对这部分用户进行服务降级,其他绝大多数用户是可以使用完整的服务的.

看懂流量来源,看懂异常流量原因,看懂流量质量!

- - 互联网分析
从网络营销管理的角度来定义网站流量统计分析,是指通过对用户访问网站的情况进行统计、分析,从中发现用户访问网站的规律,并将这些规律与网络营销策略相结合,从而发现目前网络营销活动中可能存在的问题,并为进一步修正或重新制定网络营销策略提供依据. 不管任何网站统计工具,流量来源大致分为三大块:直接流量,外部来源和搜索引擎.