Disruptor 了解一下,单线程却拥有多线程无可比拟的性能,原文请戳------> http://www.hchstudio.cn/article/2018/51ba/
1
hand515 2018-08-16 09:23:33 +08:00
用过,在特定场景性能挺好的
|
2
linyinma 2018-08-16 09:26:23 +08:00
很显然,单核情况下,单任务性能是最高的(为什么呢?没有多任务切换带来的损失),多任务是提高 CPU 利用率,如果有任务发送阻塞,操作系统将 CPU 交个其他任务(当然调度不是这么简单,这边只是表达设计多任务的目的),假如应用设计优秀,所有调用都非阻塞,让 CPU 一直工作,显然效率是多线程无可比拟的,这也是为什么类似 NGINX 高效的原因所在;
|
5
lihongjie0209 2018-08-16 09:39:17 +08:00
@linyinma #2 只有在 CPU bound 的任务中你的说法才成立. IO bound 操作比如爬虫单核多线程是有用的
|
6
iceheart 2018-08-16 10:09:32 +08:00 via Android
单进程单线程 600 万订单每秒?真的假的啊?
|
8
cnmllll 2018-08-16 10:26:59 +08:00
you c/c++ 版本么
|
9
pythonee 2018-08-16 10:27:40 +08:00
适合什么场景
|
11
Giki 2018-08-16 10:37:11 +08:00 4
说一下 Disruptor 几个潜在的坑吧,
1. event handler 的 wait strategy 要选好,一般用 blocking wait,要不然 cpu 消耗很大 2. 当 ringbuffer 满了,event handler 速度跟不上,event publish 那边会空转等 ringbuffer 的空间,消耗额外 cpu 3. 如果用 dependant event handler,他在等他依赖的 event handler 完成时也会空转,空转久了又耗 cpu 了 |
13
coolmenu 2018-08-16 11:02:49 +08:00 via iPhone
做虚拟币交易平台可用
|
14
wyntalgeer 2018-08-16 11:12:01 +08:00
请标明是 java 的,就不用浪费时间看了
|
15
javaCoder OP @wyntalgeer Disruptor 是一种编程思想,只不过是恰巧使用 java 实现了,您如果对语言有成见,出门右拐,不欢迎您看
|
16
wyntalgeer 2018-08-16 11:24:09 +08:00 1
@javaCoder 如果您认为 java 仅仅是个语言,那么您玩好。我的回复明确表达了已经出门右拐的意思,您还要硬艾特进我来发表攻击性的语言,干脆丰富一些 block list
|
18
sugarsalt 2018-08-16 11:37:11 +08:00
@wyntalgeer #16 哈哈,一触即跳
|
19
aLazarus 2018-08-16 12:27:17 +08:00
感谢 16 楼,Block 了,提前预防
|
20
jianpanxia 2018-08-16 12:36:27 +08:00
Martin Flower 应该几年前就发过文章介绍这货了..
|
21
innoink 2018-08-16 12:40:40 +08:00 via Android
这不是 n 年前就已经很成熟的技术了么
|
22
sagaxu 2018-08-16 12:41:52 +08:00 via Android
6M 笔交易,每笔 200 字节,10G 网卡都跑满了,亩产几十万斤
|
23
lhx2008 2018-08-16 12:49:05 +08:00 via Android
单线程 6m 次的话,光是打印控制台都来不及?
|
24
neoblackcap 2018-08-16 13:03:52 +08:00 via iPhone
@sagaxu 一个技术很多高频交易公司都有用,跑满 10G 网卡没什么,有 bond 嘛,文章没看,不过这个技术在特定场景的确还行。比 csp,actor 那些可能还高效些
|
25
skylancer 2018-08-16 14:22:57 +08:00
@wyntalgeer 搜了下你的帖子,全都是一些垃圾话和垃圾贴,建议你发帖前先表明本帖是垃圾帖这样我就不用浪费那几秒钟时间看你的帖了
|
26
SimbaPeng 2018-08-16 14:55:44 +08:00
@wyntalgeer 浪费了我几秒钟看你的回帖,Block
|
28
luozic 2018-08-16 15:16:11 +08:00
ringbuffer+系统 cpu 多久缓存架构的理解导致这货这么快。
|
29
Wicked 2018-08-16 20:31:48 +08:00 via iPhone
我写过比较粗糙的 cpp 版本,本质上还是要调好 producer 和 costumer 的平衡,因为是 ringbuffer,一旦满了就会阻塞,性能刷刷往下掉。另外也不是一个泛用的模型,只适用于特定场景。
|
31
dbpe 2018-08-17 09:04:28 +08:00
#16
哈哈哈 没有大牛命..却有大牛病... |
32
loyan666 126 天前
哈哈,#16,24 年来看 18 年的破防现场,不知道 6 年过去,成为大牛没有
|