首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于Redis Set的消息同步(执行)方案

需求: 短时间内游戏用户数据会多次修改,直接操作数据库并发有限,需要一个方案解决既同步存储数据库,又满足高并发下修改读取操作,避免重复 实现思路: 将请求分为 处理方 ,生产方 生产方将需要更新的数据放在一边...fixedDelay方式,执行完一个定时任务以后间隔 xxx ms再次执行,定时任务中从生产方存储更新数据的set中pop弹出一条或者多条数据进行持久化处理或者消息消费。...执行成功的弹出以后set中就自动移除了,如果执行失败就可以将这个key放回去或者别的处理方式。时间间隔根据业务时间重要性画风,同步要求高的间隔可以设置短一点,要求低的比如统计之类的就可以稍微长一点。...user:uid: "+user.getUid()+"----"); } } } } set中存储的可以是需要修改的数据的key,也可以是一个指令的请求地址,基于...set的唯一key机制,自动去重,该方法用于过滤短时间内多次重复请求,比如500ms内修改了3次user数据,3次都修改的是redis中存储的user信息,500ms间隔一到,定时任务开始执行,持久化保存到数据库中的那一次即是最新最近修改的一次

23110

Gatling性能测试工具入门

前言 Gatling基于Scala开发的压测工具,我们可以通过录制自动生成脚本,也可以自己编写脚本....熟悉jmeter的同学应该知道Jmeter基于jvm的多线程,一但请求连接数太大,性能就会急速下降. Gatling使用是异步IO,并发性更强.基于jvm的Actors模型,用更少的内存和cpu....解压后,目录结构如下: bin目录是可执行文件,在windows执行.bat文件,mac和 linux执行.sh文件....,不能实时查看当前压测QPS及RT时间. jmeter方案 在jmeter方案中,如果想实时查看压测qps及rt时间,是在脚本中配置后端监听器并且配置influxdb地址,jmeter会把压测过程中数据实时传给...influxdb存储,前端配合grafana展示就可以完成实时展示了. gatling方案gatling方案中也是类似的思路,但是不知道怎么把压测试试传到influxdb上.

2.6K21
您找到你想要的搜索结果了吗?
是的
没有找到

有赞全链路压测引擎的设计与实现

我们做了很多前期调研和论证,最终决定基于 Gatling 开发有赞自己的分布式全链路压测引擎 —— MAXIM。...,有一定开发成本 以上,我们最终选择基于 Gatling 做二次开发。...这样设计最大层度的解耦了核心业务逻辑和其他功能的特定实现,我们在保持接缝层 API 不变的情况下,可以自由选择技术方案实现相应的功能。...四、改造 Gatling 原生 Gatling 是将压测日志写入本地日志文件的,而在分布式中,如果每个压力注入器都把日志写在本地,则为了基于所有日志分析生成压测报告,我们需要首先收集分散在各个压力注入器中的日志文件...五、扩展 Gatling 原生 Gatling 不支持 Dubbo 压测,所以我们扩展 Gatling,实现并开源了 gatling-dubbo压测插件,具体实现方法详见 Dubbo压测插件的实现——基于

1.7K20

Gatling性能测试(一)

初识Gatling Gatling是一款基于Scala 开发的高性能服务器性能测试工具,同时也是一款功能强大的负载测试工具,它为易于使用,高可维护性和高性能而设计。...下载地址为:https://gatling.io/open-source/,下载成功后,进行解压,目录信息为: 下来进行配置环境,配置后的信息具体为: #Gatling export GATLING_HOME...按下回车键,就会显示Gatling的GUI的界面,具体如下: Gatling实战 下面就以官方的案例来演示下Gatling的基本使用,在控制台执行输入如下命令: gatling.sh #输入如上的命令后.../user-files/simulations/computerdatabase目录下,编写案例代码,具体代码是使用Scala语言进行编写的,源码如下: 编写代码成功后,再次执行gatling.sh,...显示如下: 选择1,开始执行,如下是执行的结果信息,具体结果如下: 结合如上的案例,可以看到Gatling测试工具对服务端的负载很高,比较适合在在微服务的架构下验证服务的队列机制和高并发下服务的响应机制以及承载能力

88730

Gatling终于走上企业级应用了

如果你觉得还行的话,就点点文章末右下角的“好看”支持下 从2013年,每年都要下载gatling的版本试使用一下,看看其特性,今天事2019年第一次看gatling,发现gatling终于走上企业级应用了...先看下什么是gatling: Gatling 是一个功能强大的负载测试工具。...最早在2013年接触到gatling,当时应该是1.5版本,之所以接触gatling,是因为去了解学习scala编程语言,了解到gatling了。...依旧有开源版本提供,下面看下官方的示例截图,基于scala语言的测试场景 ? 看下其提供的实时监控数据 ? 很实用。...工具的学习相对来讲没什么难度 主要是作为软件测试从业者,应该要实时的去了解这个行业相关的工具、解决方案的一些信息 能否把工具落地,取决于企业文化、团队以及个人的能力等各种因素 嗯,scala是很值得学习下的

93420

10万QPS,K6、Gatling和FunTester终极对决!

上次的测试中,我在局域网起了一个基于FunTester moco server框架架构图的服务,服务单机QPS在15k左右到达瓶颈,但是初步判断是局域网带宽导致的,由于时间原因我并没有在深入排查原因。...由于Gatling使用的脚本语言Scala和「FunTester」测试框架使用的脚本语言Groovy都是基于JVM的语言,所以我均采用默认配置进行测试,不再进行修改JVM参数的测试,主要原因是不会Scala...总结 这次测试有一个现象,Gatling框架测试QPS要比FunTester高一点,这里我总结了一下原因: FunTester做了更多适配,体现在标记对象 FunTester同步执行了更多判断,体现在终止条件上...基于此,我列了几条「FunTester」优化方向: 将非必要的处理改成异步 尝试更换测试元数据存储方式 逐步丢弃业务相关兼容代码(已完成) 首先看一下核心执行代码: @Override...Time.getTimeStamp(); if ((ee - ss) / 1000 > RUNUP_TIME + 3) logger.info("线程:{},执行次数

1.7K40

在k8s中上线gatling镜像并在内网发送流量

sources.list为清华的apt镜像,为了加速;gatling可以在java8下运行,必须要安装scala(其实我个人觉得只安装scala就够了,保险起见) 操作完之后执行docker build...命令配置 由于standalone版本的gatling是使用gatling.sh进行执行的,因此我预先写了一个输入文件进行重定向(其实就是一个只有1+回车的文件)。如此,容器的命令配置完毕。...后的文件夹 执行测试部分命令: docker build ....有一个问题,我发现如果使用这个DockerFile的CMD命令会导致gatling报错,错误原因是输入了一个空值给description,也就是command.txt可能是有问题的……但我进去执行又是正常的...动态挂载 上面的实现方案还是有一个问题,即没有办法灵活控制gatling,只能够每次生成一个实例在挂载到k8s上,非常麻烦。而且如果不小心生成了两个实例,那就是双倍的流量,可能会造成一些问题。

72330

性能测试框架对比初探

Gatling(加特林) 简介 加特林是一种开源性能测试工具。该工具允许开发人员构建和执行测试,并轻松地在本地或云中管理他们的测试。...要使用 Gatling 编写测试,我们需要使用Scala,Gatling允许用户定义提供类似功能的Scala类,但它们的可读性要高得多。...放弃原因 Gatling执行步骤如下: 编写或者录制脚本(Scala语言脚本) 编译脚本(运行sh命令) 交互模式下选择脚本 等待运行结果 首先这个过程非常不容易自动化,特别是在手动执行shell命令...放弃原因 技术栈是Java,Python相对不熟 每次需要shell命令启动不能任意切换用例 分布式方案不给力,缺少同步和协调功能 夸两句 用例简单,可读性高 脚本形式用例,拓展性强 功能强大,且使用上明显优于...nGrinder 简介 nGrinder 是一款在一系列机器上执行 Groovy 或 Jython 测试脚本的应用,内部引擎是基于 Grinder。

1.4K20

如何提升Java应用程序性能

找出性能瓶颈 负载测试工具和应用程序性能管理(APM)解决方案常用于跟踪和优化Java应用程序的性能。...Gatling是进行负载测试最好的工具之一,它提供了对HTTP协议的支持,是HTTP服务器负载测试的绝佳选择。 Stackify的Retrace是一个成熟的APM解决方案。...配置记录器 根据“Gatling的第一步”(https://github.com/excilys/gatling/wiki/First-Steps-with-Gatling)所述,用下面的代码创建一个名为...如果无法去掉递归逻辑,那么尾递归作为替代方案将会更好。...要获得有关应用程序需求的最好最可靠的方法是对应用程序执行实际的负载测试,并在运行时跟踪性能指标。我们之前讨论的基于Gatling的测试就是一个很好的方法。

1.4K70

如何提升Java应用程序性能

找出性能瓶颈 负载测试工具和应用程序性能管理(APM)解决方案常用于跟踪和优化Java应用程序的性能。...Gatling是进行负载测试最好的工具之一,它提供了对HTTP协议的支持,是HTTP服务器负载测试的绝佳选择。 Stackify的Retrace是一个成熟的APM解决方案。...配置记录器 根据“Gatling的第一步”(https://github.com/excilys/gatling/wiki/First-Steps-with-Gatling)所述,用下面的代码创建一个名为...如果无法去掉递归逻辑,那么尾递归作为替代方案将会更好。...要获得有关应用程序需求的最好最可靠的方法是对应用程序执行实际的负载测试,并在运行时跟踪性能指标。我们之前讨论的基于Gatling的测试就是一个很好的方法。

1.4K80

使用开源工具进行性能测试-打破神话

如今,在进行一些挖掘之后,我们最信任的两个负载测试是JMeter和Gatling。为了比较不同条件下的结果,我们甚至对两者进行了相同的测试。...有了这种可能性,您实际上可以执行脚本中需要执行的任何操作。这也适用于Gatling,其中脚本是Scala解决方案的一部分,因此您可以针对需要在脚本中执行的任何特定操作包括自己的库。...诸如BlazeMeter之类的平台使您能够在云中扩展性能脚本,并始终基于JMeter文件在多个位置并与许多并发用户一起运行。...这些开源工具(例如JMeter和Gatling)不是这种情况,因为有不同的元素可以帮助您完全了解要发送到服务器的内容,所接收的内容,并且可以轻松尝试其他方法。...为了在不损失任何迁移的情况下从一个解决方案过渡到另一个解决方案,您需要进行大量投资,然后在此过程中开始节省成本(这可能是一开始的最初动机之一)。

69620

性能测试之gatling详解

Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。...目前仅支持http协议,可以用来测试web应用程序和RESTful服务 官网:https://gatling.io/ 优点: 1.gatling和其他压力工具相比有个好处是放在同一内网环境下linux服务器上...gatling-app $ io.gatling gatling-recorder $ io.gatling.highcharts gatling-charts-highcharts $ -----太多我就不一一贴出...._ classABTestextendsSimulation { //1.主要实现模拟不同用户重复100次执行结果 objectSearch { //val feeder = csv("D:\\gatling...appkey=$&deviceid=$")) .pause(1) //exec()里的参数就是我们的执行动作,http("本次请求的名称").get("本次http get请求的地址") } } valhttpConf

2.3K61

Gatling简单测试SpringBoot工程

前言 Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。...Gatling测试SpringBoot Gatling基于Scala开发的压测工具,我们可以通过录制自动生成脚本,也可以自己编写脚本,大家不用担心,首先脚本很简单常用的没几个,另外gatling封装的也很好我们不需要去专门学习...Gatling测试脚本编写 Gatling基于Scala开发的压测工具,我们可以通过录制自动生成脚本,也可以自己编写脚本,大家不用担心,首先脚本很简单常用的没几个,另外gatling封装的也很好我们不需要去专门学习...Gatling脚本的编写主要包含下面三个步骤 http head配置 Scenario 执行细节 setUp 组装 我们以百度为例,进行第一个GET请求测试脚本的编写,类必须继承 Simulation...因此Random在运行过程中就已经静态化了,不会再执行

1.5K20

负载,性能测试工具-Gatling

etc/pam.d/sshd 如果您通过SSH访问该计算机 另外,如果访问通过SSH的机器,一定要具有在UseLogin yes``/etc/ssh/sshd_config 要进行更多调整,您可能需要执行以下操作...这个插件允许您编译Scala代码并启动Gatling模拟。 有了这个插件,Gatling可以在构建项目时启动,例如使用您最喜欢的CI解决方案。...前者将编译Scala代码,后者将执行ScalaIDE和m2e(maven的eclipse插件)之间的集成。...以上参考官网介绍: https://gatling.io/ 初次接触Gatling 文件目录介绍 Gatling_Home ├── bin 执行程序 ├── gatling.bat...) gatling.sh 启动入口 依次输入以下三个参数 执行的脚本序号 本次测试Id,用作测试报告命名前缀,不能包含空格,特殊字符,中文等 本次测试描述(非必须),会显示在报告头部

3.5K30

Jenkins性能测试

其支持最流行的开源负载测试工具Apache JMeter、Selenium、 Gatling、 The Grinder等。 Taurus的关键特性有: 我们可以使用YAML或JSON来描述性能测试。...以上配置很简单,就是执行一个名为simple的场景( scenario) ,这个场景就是执行现有的JMeter脚本。modules配置了JMeter的下载地址及版本。...其参数如下: params :字符串类型, Taurus配置文件的路径 alwaysUseVirtualenv:布尔类型,如果为false, 则不使用virtualenv进行环境隔离。...默认值为true bztVersion :字符串类型, bzt版本 generatePerformanceTrend :布尔类型,是否在Jenkins项目详情页生成性能趋势图。...默认值为true useBztExitCode :布尔类型,是 否使用bzt步骤的退出码作为Jenkins项目的构建结果。

72420

编写高性能 Java 代码的最佳实践

找出性能瓶颈 负载测试工具和应用程序性能管理(APM)解决方案常用于跟踪和优化Java应用程序的性能。...Gatling是进行负载测试最好的工具之一,它提供了对HTTP协议的支持,是HTTP服务器负载测试的绝佳选择。 Stackify的Retrace是一个成熟的APM解决方案。...Gatling负载测试 Gatling的模拟测试脚本是用Scala编写的,但该工具还附带了一个非常有用的图形界面,可用于记录具体的场景,并生成Scala脚本。...如果无法去掉递归逻辑,那么尾递归作为替代方案将会更好。...要获得有关应用程序需求的最好最可靠的方法是对应用程序执行实际的负载测试,并在运行时跟踪性能指标。我们之前讨论的基于Gatling的测试就是一个很好的方法。

1.2K30

Dubbo 压测插件的实现——基于 Gatling

Dubbo 压测插件已开源,本文涉及代码详见 gatling-dubbo Gatling 是一个开源的基于 Scala、Akka、Netty 实现的高性能压测框架,较之其他基于线程实现的压测框架,Gatling...基于 AKKA Actor 模型实现,请求由事件驱动,在系统资源消耗上低于其他压测框架(如内存、连接池等),使得单台施压机可以模拟更多的用户。...基于 Gatling 的优势和在有赞的使用基础,我们扩展 Gatling 开发了 gatling-dubbo 压测插件。...execute 方法必须以异步方式执行 Dubbo 请求,这样前一个 Dubbo 请求执行后但还未等响应返回时虚拟用户就可以通过 AKKA Message 立即发起下一个请求,如此一个虚拟用户可以在很短的时间内构造大量请求...异步请求响应后会执行 onComplete 方法,校验请求结果,并根据校验结果记录请求成功或失败日志,压测报告就是使用这些日志统计计算的。

2.5K10

WebFlux和SpringMVC性能对比

我们的测试内容有三: 首先分别创建基于WebMVC和WebFlux的Web服务,来对比观察异步非阻塞能带来多大的性能提升,我们模拟一个简单的带有延迟的场景,然后启动服务使用gatling进行测试,并进行分析...说明:本节进行的并非是严谨的基于性能调优的需求的,针对具体业务场景的负载测试。本节测试场景简单而直接,各位朋友GET到我的点即可。...2)编写负载测试脚本 本节我们采用gatling来进行测试。创建测试项目gatling-scripts。...比如,当进行用户数为2500个的测试时,执行线程增加到了200个,总的线程数峰值为223个,就是增加的这190个执行线程。如下: ?...得到测试过程中的执行线程个数。

3.5K21

Dubbo 压测插件 2.0 —— 基于普通 API 调用

插件已开源,详见 gatling-dubbo:https://github.com/youzan/gatling-dubbo.git 上一篇《Dubbo压测插件的实现——基于Gatling》中,我们介绍了基于...所以,我们又开发了基于普通 API 调用的 Gatling Dubbo 压测插件,即 gatling-dubbo2.0。...此外,依托于 Gatling 强大的基础能力, gatling-dubbo2.0 相比于 Jmeter 还存在以下几方面的优势: 更强的场景编排能力,支持多场景同时编排,如仿真电商业务中同时存在普通下单...所有虚拟用户以并发方式执行 execute 方法,每个用户又以异步方式执行 Dubbo 请求,且无论请求是否正确返回,都需要记录相应的成功或失败日志,失败可能是由于请求失败了,也可能是请求成功了,但是校验请求结果失败了...按生产环境真实的接口调用比例请求各个接口(该比例由场景执行各个请求的概率分布模拟),这样的压测结果就可以真实反映生产环境应用的单实例性能,并为容量报警、生产扩容等提供参考依据。

94210

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券