Disruptor技術調研之配置參數一覽

一、單生產者和多生產者
linux

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.git

上述的描述大體的意思是在多併發的系統中,若是選擇基於單生產者的Disruptor,可以得到比多生產者更好的性能。github

二、可選擇的等待策略併發

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(超線程技術)狀態是須要關閉的。
app


參考:
異步

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

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

相關文章
相關標籤/搜索