博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Disruptor技术调研之配置参数一览
阅读量:6405 次
发布时间:2019-06-23

本文共 1201 字,大约阅读时间需要 4 分钟。

  hot3.png

1、单生产者和多生产者

One of the best ways to improve performance in concurrect systems is to ahere to the Single Writer Princple, this applies to the Disruptor.  If you are in the situation where there will only ever be a single thread producing events into the Disruptor, then you can take advantage of this to gain additional performance.

上述的描述大致的意思是在多并发的系统中,如果选择基于单生产者的Disruptor,能够获得比多生产者更好的性能。

2、可选择的等待策略

1)Disruptor默认的等待策略是BlockingWaitStrategy。内部是使用lock和condition来进行线程间的协作的。相对于其他的策略是最慢的但对cpu的使用是最保守的,也是所有选项中一致性行为最高的。

2)和BlockingWaitStrategy一样,SleepingWaitStrategy尝试保守的使用cpu,通过使用busy wait loop(在循环中调用LockSupport.parkNanos(1))。在linux系统上会让线程等待大概60µs的时间,生产者线程不需要做额外的动作。事件在生产者和消费者间传输的延时会高点,使用场景如在对低延时要求不要,但对生产者线程影响最小的时候使用。比如异步的logging。
3)YieldingWaitStrategy是可以在低延时系统中使用的策略之一,内部使用了Thread.yield()来让其他排队的线程能够执行。在需要高性能并且事件处理线程比cup的内核数少的场景下推荐使用的,比如开启了hyper-threading(超线程)。
4)BusySpinWaitStrategy是性能最高的策略,但是对部署的环境要求也是最高的,当事件处理线程比物理cup内核少的情况下才能被使用,对hyper-threading(超线程技术)状态是需要关闭的。

参考:

https://github.com/LMAX-Exchange/disruptor/wiki/Getting-Started#single-vs-multiple-producers

https://github.com/LMAX-Exchange/disruptor/wiki/Getting-Started#alternative-wait-strategies

转载于:https://my.oschina.net/u/914290/blog/661660

你可能感兴趣的文章
标准的组件结构
查看>>
vue——一个页面实现音乐播放器
查看>>
SVG 扬帆起航
查看>>
NET Core-学习笔记(二)
查看>>
职业生涯上的点点滴滴
查看>>
Linux下添加新硬盘,分区及挂载
查看>>
一起来将vscode变成私人定制笔记本
查看>>
Flutter 云音乐
查看>>
RecyclerView实现多type页面
查看>>
个人的web商城网站
查看>>
debian fcitx
查看>>
排中律与实无穷问题的性质分析
查看>>
08/23 学习总结
查看>>
关于Ubuntu下安装phpmyadmin后mysqli丢失的解决
查看>>
物理层
查看>>
linux多网卡路由设置
查看>>
win7环境下的栈溢出与实战
查看>>
查看ios字体库方法
查看>>
八大监听器
查看>>
self.navigationController退出到指定页面,或者一次性pop出n个页面
查看>>