仿真环境/流量回放/全链路压测

栏目: 数据库 · 发布时间: 4年前

内容简介:仿真环境是用线上流量转发到下线环境做线下实验。重点在于流量引入和数据/队列/push,im服务的隔离全链路压测 是用大量与线上流量类似的流量请求到线上,检测故障。重点在于大量数据与真实流量的模拟,压测数据隔离流量回放 可以用来定位问题,将有问题请求百分百还原到线下机器,对控制读写接口返回用线上真实mock,可不断重复。重点在于线下请求劫持到回放机器进行mock,和mock数据匹配。

仿真环境是用线上流量转发到下线环境做线下实验。重点在于流量引入和数据/队列/push,im服务的隔离

全链路压测 是用大量与线上流量类似的流量请求到线上,检测故障。重点在于大量数据与真实流量的模拟,压测数据隔离

流量回放 可以用来定位问题,将有问题请求百分百还原到线下机器,对控制读写接口返回用线上真实mock,可不断重复。重点在于线下请求劫持到回放机器进行mock,和mock数据匹配。

因为都是公司未开源东西。只简单介绍三个的实现。重点说下通用解决

引流:

1.通信框架实时引流:

  • 方案:
    框架层根据包头中的额外信息,判断哪些流量需要转发到仿真环境,只转发需要转发的流量,且实时转发
    判断转发条件在配置平台下发
    连接池,隔离目标server。
  • 优点:可以按业务细粒度引流
  • 缺点:无法回放

2.收到请求后写入MQ,引流系统消费

  • 优点:可以重读消费
  • 缺点:请求密集度和线上不一致

3.日志回放(全链路压测)

  • 方案:收集线上日志,通过日志还原请求
  • 优点:业务无侵入
  • 缺点:日志还原复杂

4.TCPCOPY

  • 方案
    基于数据链路层/网络层抓包回放
    tcpcopy通过libpcap(数据链路层)或rawsocket(IP层)抓包

    仿真环境/流量回放/全链路压测

    assistant server为了截获响应给TCPCopy,不会回给online server

  • 优点:业务无侵入
  • 缺点:网络层就无法按照业务选择

5.TCPDUMP流量(流量回放)

  • 方案
    单独机器采样TCPDUMP录制流量,编写 工具 读取并解析.cap文件,实现流量回放
  • 优点:可以多次回放请求
  • 缺点:解析.cap文件+cap文件存储+tcpdump对耗时稍有影响

数据隔离

1.全部单独数据配置。

数据同步+大量机器

2.数据访问流量劫持

写本地或写丢弃,读线上。

  • 本机访问线上数据流量劫持方案:iptable
    原理
    Netfilter是 Linux 用于网络数据包过滤的模块,它有四个表五个链。Iptables是用于向这Netfilter添加规则的用户空间程序。
    E.g.
    // 将本机发往9613的tcp包转到100.90.160.37的9613端口
    iptables -t nat -A OUTPUT -p tcp --dport 9613 -j DNAT --to 100.90.160.37:9613
    // 将本机非root用户发往beststg集群3000端口的流量重定向到本机9001端口
    iptables -t nat -A OUTPUT -p tcp --dport 3000 -m set --match-set beatstg dst -m owner ! --uid-owner 0 -j REDIRECT --to 9001
    // 将本机发往100.69.238.129 9000端口的tcp流量丢弃
    iptables -A OUTPUT -p tcp -d 100.69.238.129 --dport 9000 -j DROP
  • 需要数据劫持到单独模块
    redis
    mq topic、回调地址

需要考虑数据

redis,mq,mysql

仿真环境

  • 通信框架实时引流。
  • 对数据iptable劫持
    1.redis:劫持到RedisRouter
    2.mq
    1)发出去的请求带回调地址的(比如bridgemq),劫持到mqproxy。替换请求中的回调URL为目标环境URL
    2)topic都改成线下的,发送和的订阅都改

全链路压测

流量回放

  • 模拟数据:日志回放。
    按照接口配置顺序取高峰期几小时数据。对请求中部分数据替换为压测
  • 全部单独数据配置:
    压测用户信息单独存储,单独存储。mysql,redis加注释方式.mq的topic统一加前缀
  • 施压工具开发
    用的NIO
  • 整体架构

    仿真环境/流量回放/全链路压测

    ultron-server:web控制台,负责新建压测计划、压测任务,调整压测,修改压测配置,查看压测监控和性能数据等。

    daemon:远程调起agent。ultron-server新建压测任务只会在数据库添加一条待运行的压测任务记录,并将空闲agent分配给压测任务,ultron-server本身不负责发压,然后daemon会从数据库读取待运行的任务以及给任务分配好的agent,然后通过 shell 命令远程调起agent。

    datasource: 即数据源,全链路压测时向agent提供司乘基本信息和路线信息,http日志回放时向agent提供日志日志文件。datasource起了一个定时任务从redis(全链路压测)或者日志文件(http日志回放)读取数据,缓存到内存的队列里面,当压测agent启动后,从datasource的内存队列里面拉取压测数据。

    redisfiller: 将匹配好的路线信息和司乘数据写入redis,供datasource拉取数据用。

流量回放

  • TCPDUMP流量
    因为mock方案,需要保证串行。 http:nginx+lua ; thrift:server改。选则一台线上机器做串行到tcpdump机器即可
  • 数据iptable劫持
    劫持到proxy转发到mock机器。数据tcp级别的mock。配置白名单iptable不劫持放过
  • mock匹配
    完全串行。1s内单个请求所有子tcp都结束后才记录下一个,直接用时间匹配(tcp级别比如访问redis,mysql无法用traceid等,用线程id各语言不通用)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

游戏化革命:未来商业模式的驱动力

游戏化革命:未来商业模式的驱动力

[美]盖布·兹彻曼、[美]乔斯琳·林德 / 应皓 / 中国人民大学出版社有限公司 / 2014-8-1 / CNY 59.00

第一本植入游戏化理念、实现APP互动的游戏化商业图书 游戏化与商业的大融合、游戏化驱动未来商业革命的权威之作 作者被公认为“游戏界的天才”,具有很高的知名度 亚马逊五星级图书 本书观点新颖,游戏化正成为最热门的商业新策略 游戏化是当今最热门的商业新策略,它能帮助龙头企业创造出前所未有的客户和员工的参与度。商业游戏化策略通过利用从游戏设计、忠诚度计划和行为经济学中所汲取......一起来看看 《游戏化革命:未来商业模式的驱动力》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器