Gobrs-Async Gobrs-Async
🚘首页
🧧指南
🍭FAQ
💖支持
🚨加入群聊
🍅GitEE (opens new window)
GitHub (opens new window)
🚘首页
🧧指南
🍭FAQ
💖支持
🚨加入群聊
🍅GitEE (opens new window)
GitHub (opens new window)
  • 🥪项目特性

    • 🍿框架设计
  • 🎒框架设计

    • 🥧简介
    • 🍿框架设计
    • 🍍框架落地
  • 🍖快速开始

    • 🍔快速上手
    • 🌭框架集成
    • 🥤启动流程
    • 🍪流程参数
    • 🏝流程结果
  • 🥘规则配置

    • 🍅规则配置
  • 🥊任务类型

    • 🍅普通任务
    • 💥重试任务
    • ☄️事务任务
    • 🌈超时任务
    • ⛱方法任务
  • 🔥高级特性

    • 💐线程复用
    • 🧋运行日志
    • 🍜规则热更新
    • 🍑任务中断
    • 🌺可选子流程
    • 🌹状态流程
    • 🍒异常拦截
    • 🥪全局任务拦截
    • 🍏自定义线程池
    • 🍒可选的执行流程
  • 🚐插件

    • 🛻插件简介
    • 🏚监控系列

      • ⛽️skywalkiing
      • 🏖hippo4j
    • 🛸日志系列

      • 🚧全链路traceId
  • 🍿性能考量

    • 🍎框架压测
    • 🍹框架对比
      • 使用工具
      • 测试阶段
        • 线程池配置如下
      • 测试结果
        • gobrs-async
        • liteflow
        • asyncTool
      • 结论
    • 🧅版本号手册
  • 🌕展望

    • 🍊展望
  • 🍯联系作者

    • 🥐加群沟通
目录

🍹框架对比

市面主流并发编程框架有如下几款产品:

  • Gobrs-Async
  • LiteFlow (opens new window)
  • asyncTool (opens new window)

# 使用工具

  • jmeter (opens new window)
  • hippo4j.cn (opens new window)

# 测试阶段

1、使用动态线程池框架设置 核心线程数:100 最大线程数 100 2、jmeter线程数 120 线程 3、jmeter 运行时长 33s 4、测试机器: mac m1 16G

# 线程池配置如下

配置一

# 测试结果

# gobrs-async

jmeter测试结果

gobrs-async-1

线程池运行状态

gobrs-async-1-dy

可以看到 gobrs-async 在120个压测线程,核心线程数和最大线程数在100的情况下, 线程池负载和核心线程数、最大线程数并没有到达瓶颈,活跃线程数维持在70-80 之间。降低了线程切换带来的开销同时节省了线程数的开销。

# liteflow

jmeter测试结果

liteflow-1

线程池运行状态

liteflow-1-dy

可以看到liteflow线程池的最大线程数量和线程池负载已经触发了最大线程数 100 的限制。

看一下线程使用情况

主线程使用http-nio-9999-exec-4
2022-12-11 15:11:54.936  INFO 12074 --- [nio-9999-exec-4] com.yomahub.liteflow.core.FlowExecutor   : slot[0] offered
2022-12-11 15:11:54.941  INFO 12074 --- [nio-9999-exec-4] com.yomahub.liteflow.core.FlowExecutor   : requestId[7a921ca5265f433a9268a6c14c466ee5] has generated
2022-12-11 15:11:54.942  INFO 12074 --- [nio-9999-exec-4] com.yomahub.liteflow.flow.element.Node   : [7a921ca5265f433a9268a6c14c466ee5]:[O]start component[a] execution
使用http-nio-9999-exec-4
a
2022-12-11 15:11:55.090  INFO 12074 --- [lowThreadPool_0] com.yomahub.liteflow.flow.element.Node   : [7a921ca5265f433a9268a6c14c466ee5]:[O]start component[b] execution
使用liteflowThreadPool_0
b
2022-12-11 15:11:55.092  INFO 12074 --- [lowThreadPool_1] com.yomahub.liteflow.flow.element.Node   : [7a921ca5265f433a9268a6c14c466ee5]:[O]start component[c] execution
使用liteflowThreadPool_1
c
2022-12-11 15:11:55.198  INFO 12074 --- [nio-9999-exec-4] com.yomahub.liteflow.flow.element.Node   : [7a921ca5265f433a9268a6c14c466ee5]:[O]start component[d] execution
使用http-nio-9999-exec-4
d
2022-12-11 15:11:55.303  INFO 12074 --- [lowThreadPool_2] com.yomahub.liteflow.flow.element.Node   : [7a921ca5265f433a9268a6c14c466ee5]:[O]start component[e] execution
使用liteflowThreadPool_2
e
2022-12-11 15:11:55.303  INFO 12074 --- [lowThreadPool_3] com.yomahub.liteflow.flow.element.Node   : [7a921ca5265f433a9268a6c14c466ee5]:[O]start component[f] execution
使用liteflowThreadPool_3
f

完成 taskA->taskB,TaskC->taskD->taskE,taskF 任务流程的执行需要使用 5个线程(包含主线程)。

# asyncTool

因线程池框架与asyncTool 貌似没法完全兼容、调控核心和最大线程池参数对asyncTool不起作用,故不做测试。 不过通过asyncTool 的执行日志可以看出,同样也是一个任务一个线程开启执行。日志如下:

主线程使用http-nio-9999-exec-1
使用pool-13-thread-1
AsyncToolTaskA
使用pool-13-thread-2
AsyncToolTaskB
使用pool-13-thread-3
AsyncToolTaskC
使用pool-13-thread-2
AsyncToolTaskD
使用pool-13-thread-4
AsyncToolTaskE
使用pool-13-thread-5
AsyncToolTaskF
耗时459

完成 taskA->taskB,TaskC->taskD->taskE,taskF 任务流程的执行需要使用 6个线程(包含主线程)。

# 结论

对比结论自行分析,这里就不做过多解释了哈。

其他测试阶段就不再继续测试,感兴趣的小伙伴可以自行下载测试demo (opens new window)进行测试。

Last Updated: 12/11/2022, 4:38:43 PM
🍎框架压测
🧅版本号手册

← 🍎框架压测 🧅版本号手册→

最近更新
更多文章>
Gobrs-Async | Copyright © 2022-2023 Memorydoc | Apache License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式