TBSchedule应用实战(四)——“Hello,性能怪兽(集群篇)

原创
2017/12/25 17:09
阅读数 2.2K

本节以实际对比运行结果展示tbs的运行效率,模拟交易明细汇总,条件如下:

数据量:30w

计算逻辑:按账户号分组计算收入金额与支出金额,每500条记录汇总一次更新数据库。

硬件:4核3.3GHZ,16GB内存单机,Windows 7 专业版,4线程模拟4分片计算。

本节DEMO下载地址:点击下载

1、纯java实现计算结果如下:

17-12-26.15:51:56.039 [main            ] INFO  ClassPathXmlApplicationContext  - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1faccfb7: startup date [Tue Dec 26 15:51:56 CST 2017]; root of context hierarchy
17-12-26.15:51:56.087 [main            ] INFO  XmlBeanDefinitionReader  - Loading XML bean definitions from class path resource [application-context.xml]
17-12-26.15:51:56.442 [main            ] INFO  PropertyPlaceholderConfigurer  - Loading properties file from file [F:\workspace\tbschedule_wed_demo\tbschedule-wed-standalone\target\classes\db.properties]
17-12-26.15:51:56.447 [main            ] INFO  AutowiredAnnotationBeanPostProcessor  - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
分片:0  计算启动....
分片:1  计算启动....
分片:2  计算启动....
分片:3  计算启动....
分片:1  累计工作耗时:360437ms
分片:0  累计工作耗时:364454ms
分片:2  累计工作耗时:359437ms
分片:3  累计工作耗时:360880ms

总计耗时:1445.208秒

2、tbs实现计算结果如下:

先解释上图配置以保证公平性:

a)任务采用处理休眠模式,但是休眠时间为0,模拟JAVA持续执行。

b)任务采用单机4线程组,4任务项,模拟JAVA单机4分片。

c)任务配置线程数为1,即单线程执行,模拟java也是单线程执行。

总计耗时:36.1970秒

3、xxl-job实现计算结果如下(待更新):

工具 CPU 内存 成功率 耗时(单位:秒)
java 25±1% 80±10MB 100% 1445.208
tbs 25±1% 120±10MB 100% 36.1970
xxl-job 25±1% 120±20MB 100% 2190.613

备注:

a)在Win下,CPU占用没有参考意义。

b)因为测试机硬件有限,xxl-job被迫改为两分片执行。猜想4分片也差不了多少。

由此可见tbs之性能怪兽头衔名副其实,虽然目前版本对zookeeper的稳定性依赖较强,但得益于tbs将取数与计算形成抽象,隐藏内部优秀的线程状态管理。在单线程下性能尚且如此,试想一台16GB内存机器开启多线程性能得有多恐怖!

展开阅读全文
加载中
点击加入讨论🔥(1) 发布并加入讨论🔥
1 评论
0 收藏
0
分享
返回顶部
顶部