在性能测试时,涉及到注册等需要手机号码的接口,且此手机号码不能重复以及在数据库中已存在,通过什么方式可以解决这个问题?

方案一

通过另外一个接口将创建信息注销或删除

如:注册接口可通过注销的方式将该手机号码

优点:

  • 号码可重复使用

缺点:

  • 需要额外增加另外一个接口 数据库中业务可能注
  • 销接口仅仅将is_delete的状态置为1,导致实际的请求和业务场景不一致
  • 大概率产生热点数据

方案二

通过数据库操作将已注册的信息删除

如使用jmeter的JDBC 后置处理程序

优点

  • 号码可重复使用

缺点

  • 需要额外增加对业务数据库的操作
  • 数据库添加用户信息等不一样,sql语句复杂且可能产生脏数据
  • 大概率产生热点数据

方案三

jmeter中使用BeanShell 预处理生成电话号码

sql如下:

//${__time(/100000,)}由函数助手生成,见下图
ts=String.valueOf(${__time(/1000,)});String []t = ts.split("");// 电话号码第1-3位
String phone = String.valueOf(${__Random(1,9,)}) + String.valueOf(${__Random(0,9,)}) + String.valueOf(${__Random(0,9,)});// 电话号码第4-10位
for (int i=3; i<10; i++) {phone = phone + t[i];
}// 电话号码第11位
phone = phone + String.valueOf(${__Random(0,9,)});//将phone设置为变量
vars.put("phone",phone);

ps:因为当前服务校验电话号码仅校验是否为11位数字,故可以使用以上的方式

优点

  • 可自动生成手机号码,且不需要额外对服务和数据库进行操作

缺点

  • 并发量大的时候会出现重复手机号,且分布式运行时更加明显

100个线程并发,循环100次,错误率0.4%,如果线程数增大时错误率猛增

方案四

实现一个唯一手机号码生成服务

使用的是一个美团开源的代码上进行改造Leaf ,号段模式

优点

  • 生成手机号码重复率极低

缺点

  • 需要额外进行接口请求
  • 需要在线上环境部署该服务

100个线程并发,循环100次,错误率0%

综合评估,选择方案四做为此次性能测试的手机号码生成

【数据构造】手机号码并发生成相关推荐

  1. 大数据量高并发的数据库优化(转载)

    对其进行处理是一项艰巨而复杂的任务.原因有以下几个方面: 一.数据量过大,数据中什么情况都可能存在.如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千 ...

  2. 数据量高并发的数据库优化

    数据量高并发的数据库优化一.数据库结构的设计如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据 ...

  3. 京东到家数据构造平台设计与实践

    文|袁盼 李磊 编辑|刘慧卿 一 前言 二 背景和目标 三 系统架构设计 3.1 系统介绍 3.2 典型功能详解 四 成果与展望 一 前言 随着到家业务与小时购业务的快速发展,系统迭代日新月异,测试效 ...

  4. JSON数据构造及解析详解

    JSON数据构造及解析详解 1.JSON格式数据长啥样? 2.JSON简介 JSON(Javascript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和 ...

  5. 对于TF密码卡而言,如果本身不能进行多线程加密,那么有什么方法可以对不同会话密钥进行加密以及不同数据进行类似并发的加密呢?...

    对于 TF 密码卡而言,如果本身不能进行多线程加密,可以使用以下方法对不同会话密钥进行加密以及对不同数据进行类似并发的加密: 使用多个 TF 密码卡,分别对不同数据进行加密. 使用密钥派生函数(KDF ...

  6. 大数据量高并发的数据库优化详解

    转自:https://www.jb51.net/article/71041.htm 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能. ...

  7. 大数据与高并发解决方案

    1.海量数据 1. 缓存和页面静态化 1.1 缓存 数据量大这个问题最直接的解决方案就是使用缓存,缓存就是将数据库中获取的结果暂时保存起来在,在下次使用的时候无需从数据库中提取,这样可以大大降低数据库 ...

  8. Jmeter做数据构造步骤详解

    Jmeter做数据构造步骤详解 引入 什么是数据构造 数据构造的方式 数据构造的意义 一.JDBC请求执行SQL语句构造数据 01 环境准备:添加Jmeter插件 02 使用步骤 二.HTTP请求调用 ...

  9. mysql并发更新数据,多用户并发修改数据解决方案。

    mysql并发更新数据,多用户并发修改数据解决方案. 在系统中,有一些如余额.资产.积分的数据,是要保证数据一致性的.如,一个人使用两个设备同时进行消费操作,如何保证数据一致性的问题. 我们一起来思考 ...

最新文章

  1. 多线程 Thread类
  2. c语言遍历exe的目录,如何用纯C获取一个文件目录。
  3. P4245 【模板】任意模数多项式乘法
  4. 在线MSN代码(如同QQ在线咨询那种的)
  5. 存储过程的参数可以使用sql的函数
  6. Python抓取豆瓣电影详情并提取信息
  7. Python---字符串与列表
  8. C#自动识别文件编码
  9. testbench的简单例子和模板
  10. 电子电路设计小目录------面包板制作130例
  11. Office-004 Word插入脚注尾注
  12. Mac电脑上哪个解压缩软件好用?MAC上好用的解压缩软件分享
  13. ERROR: Maven JVM terminated unexpectedly with exit code 137
  14. Docker创建容器后无法update更新以及Job for docker.service failed because the control……错误
  15. NCEP再分析数据(FNL)Python下载
  16. abaqus python 读取文件_ABAQUS Command 如何调用或执行 Python 脚本文件
  17. 全国计算机考试第五套,计算机等级一级MS Office考试考题:第五套字处理题
  18. 用Python实现微信公众号WCI指数计算器
  19. 常见的BeanUtils.populate异常 解决方案
  20. 树莓派Pico C/C++语言开发

热门文章

  1. SPOJ AMR12E Dyslexic Gollum 解题报告
  2. 仓鼠的故事(部分原创)
  3. 《疑案里的中国史》——很多奇怪的历史故事其实都有合理的逻辑支撑
  4. [渗透]网站劫持分析与验证方法总结
  5. 爬虫中遇到的问题Crawled (404),[scrapy.spidermiddlewares.offsite] DEBUG: Filtered offsite request to
  6. 解决Invalid bound statement (not found): com.cqupt.ssm.dao.UserDao.queryMenu问题
  7. 2015定额企业取费证规费费率核定标准摘录绵建价【2016】3 号
  8. mmhik green blue
  9. 抖音短视频SEO优化排名,抖音SEO搜索关键字排名
  10. gstream 录制音频