簡體   English   中英

LMAX Disruptor-維護事件順序

[英]LMAX Disruptor - Maintain order of events

我有一個從各種文件加載時間序列數據的應用程序。 該應用程序為每個文件打開一個線程以並行加載數據。 文件中的記錄是有序的,但是我需要將一個提要傳送到應用程序的其余部分,以保持整體事件的順序。

是否可以像多個生產者一樣使用破壞者來實現一種維護事件順序的消費者類型的設計?

我目前正在使用阻止集合和一個排序列表來對每個阻止集合的頭部進行排序,但這會占用大量內存,我很想知道是否有人使用不同的體系結構實現了類似的設計。

謝謝

如果您將對象流重新設計(專注於流),則從文件加載應該只加載最小的內存(您需要的緩沖區大小)。每個流都預取1個頭項。

然后,您必須實施k路合並以選擇N個項目中的最低項目。 您會將流放在二叉樹中。 當彈出最小值時,流將重新定位在樹中(交換和旋轉)。 要彈出一個值,大約是O(log n)。 溪流干燥后,從樹上移開。

這是2排序數組合並的概括; 您必須靠數組的頭求助,這與對隨機集進行排序完全不同; 您有一個幾乎有序的集合,除了1個流不正確。 您可以進行二進制搜索,但重新插入內存副本將非常昂貴。 樹的旋轉更簡單。

(並且破壞者與此無關...大聲笑)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM