分布式多协议压测引擎

scala, typescript
欧几里喵 · September 24, 2019 · 435 次阅读 · 1 条评论

Gatling Pea

Build Status GitHub release Maven Central

项目地址: https://github.com/asura-pro/pea . 可以点星支持下哦。


关于 Gatling

Gatling 是基于 NettyAkka 技术实现的高性能压测工具.

关于 Pea

由于单独一台机器硬件资源和网络协议的限制存在, 在高负载测试中需要多台机器共同提供负载. Pea 是在以 Galting 为引擎, 在多节点场景下的压测工具. 包含以下特性:

  • 管理和监控多个工作节点. 依赖 Zookeeper
  • 运行过程中可以实时查看每个节点的具体执行状态
  • 多个节点执行完后会自动收集日志, 生成统一的报告
  • 支持原生的 Gatling 脚本, 原生的 HTTP 协议
  • 扩展支持了 DubboGrpc 协议
  • 以 Git 仓库管理脚本和资源文件
  • 内置了 Scala 增量编译器, 脚本可在线快速编译
  • 不同于其他实现, 所有这些功能都在同一进程内实现. 感谢 Gatling 作者高质量的代码
  • 可以在实体机, 虚拟机, Docker 容器中运行

脚本示例

import asura.pea.dubbo.Predef._
import asura.pea.dubbo.api.GreetingService
import asura.pea.gatling.PeaSimulation
import io.gatling.core.Predef._

class DubboGreetingSimulation extends PeaSimulation {
override val description: String =
"""
|Dubbo simulation example
|"""
.stripMargin
val dubboProtocol = dubbo
.application("gatling-pea")
.endpoint("127.0.0.1", 20880)
.threads(10)
val scn = scenario("dubbo")
.exec(
invoke(classOf[GreetingService]) { (service, _) =>
service.sayHello("pea")
}.check(simple { response =>
response.value == "hi, pea"
}).check(
jsonPath("$").is("hi, pea")
)
)
setUp(
scn.inject(atOnceUsers(10000))
).protocols(dubboProtocol)
}

截图示例

创建任务

任务执行中的节点状态

整体报告

单个请求细节报告

评论列表
ZengTester 发表于 September 30, 2019

星已点,很好的项目 只不过对于scala不是特别熟悉 还有scalaweb框架都不是特别了解 阅读起来有点麻烦