Disruptor 了解一下,单线程却拥有多线程无可比拟的性能

2018-08-16 08:32:04 +08:00
 javaCoder

Disruptor 了解一下,单线程却拥有多线程无可比拟的性能,原文请戳------> http://www.hchstudio.cn/article/2018/51ba/

5921 次点击
所在节点    程序员
31 条回复
hand515
2018-08-16 09:23:33 +08:00
用过,在特定场景性能挺好的
linyinma
2018-08-16 09:26:23 +08:00
很显然,单核情况下,单任务性能是最高的(为什么呢?没有多任务切换带来的损失),多任务是提高 CPU 利用率,如果有任务发送阻塞,操作系统将 CPU 交个其他任务(当然调度不是这么简单,这边只是表达设计多任务的目的),假如应用设计优秀,所有调用都非阻塞,让 CPU 一直工作,显然效率是多线程无可比拟的,这也是为什么类似 NGINX 高效的原因所在;
javaCoder
2018-08-16 09:33:34 +08:00
@hand515 是这样的
javaCoder
2018-08-16 09:34:06 +08:00
@linyinma 本身原理比较简单
lihongjie0209
2018-08-16 09:39:17 +08:00
@linyinma #2 只有在 CPU bound 的任务中你的说法才成立. IO bound 操作比如爬虫单核多线程是有用的
iceheart
2018-08-16 10:09:32 +08:00
单进程单线程 600 万订单每秒?真的假的啊?
javaCoder
2018-08-16 10:20:33 +08:00
@iceheart 官方给的数据,没啥太大的问题
cnmllll
2018-08-16 10:26:59 +08:00
you c/c++ 版本么
pythonee
2018-08-16 10:27:40 +08:00
适合什么场景
javaCoder
2018-08-16 10:33:14 +08:00
@cnmllll 应该有可以去官网了解一下
Giki
2018-08-16 10:37:11 +08:00
说一下 Disruptor 几个潜在的坑吧,
1. event handler 的 wait strategy 要选好,一般用 blocking wait,要不然 cpu 消耗很大
2. 当 ringbuffer 满了,event handler 速度跟不上,event publish 那边会空转等 ringbuffer 的空间,消耗额外 cpu
3. 如果用 dependant event handler,他在等他依赖的 event handler 完成时也会空转,空转久了又耗 cpu 了
javaCoder
2018-08-16 10:49:29 +08:00
@Giki 感谢提醒,遇到过其中几个,不太好排查
coolmenu
2018-08-16 11:02:49 +08:00
做虚拟币交易平台可用
wyntalgeer
2018-08-16 11:12:01 +08:00
请标明是 java 的,就不用浪费时间看了
javaCoder
2018-08-16 11:17:19 +08:00
@wyntalgeer Disruptor 是一种编程思想,只不过是恰巧使用 java 实现了,您如果对语言有成见,出门右拐,不欢迎您看
wyntalgeer
2018-08-16 11:24:09 +08:00
@javaCoder 如果您认为 java 仅仅是个语言,那么您玩好。我的回复明确表达了已经出门右拐的意思,您还要硬艾特进我来发表攻击性的语言,干脆丰富一些 block list
widdy
2018-08-16 11:36:55 +08:00
@coolmenu 一些撮合引擎宣称百万每秒都被人批判一番,这个 600w,那不得上天!
sugarsalt
2018-08-16 11:37:11 +08:00
@wyntalgeer #16 哈哈,一触即跳
aLazarus
2018-08-16 12:27:17 +08:00
感谢 16 楼,Block 了,提前预防
jianpanxia
2018-08-16 12:36:27 +08:00
Martin Flower 应该几年前就发过文章介绍这货了..

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/480231

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX