cost 306 ms
如何將 ReentrantReadWriteLock 邏輯轉換為帶障礙的 LMAX Disruptor

[英]How to convert ReentrantReadWriteLock logic to LMAX Disruptor with barriers

我有一個 ArrayList 的共享集合,並且我使用 ReentrantReadWriteLock 鎖來保護來自不同線程的關鍵區域的進入。 我的線程是三個作家,閱讀,刪除線程。 我在每種情況下都獲得了正確的鎖定。 邏輯是我將數據插入 ArrayList,在必要時讀取它們,並且當計時器達到限制時刪除一 ...

java中使用lmax Disruptor(3.0)處理百萬文檔

[英]Using lmax Disruptor (3.0) in java to process millions of documents

我有以下用例: 當我的服務啟動時,它可能需要在盡可能短的時間內處理數百萬份文檔。 將有三個數據源。 我已經設置了以下內容: 我的每個來源都調用了消耗,我使用 Guice 創建了一個單例干擾器。 我的 eventHandler 例程是 我在我的日志中看到生產者( consume )有時會 ...

AttributeError:無法獲取屬性“journalerReader” <module '__mp_main__< div><div id="text_translate"><p> 我嘗試在 python 中實現 Lmax。我嘗試在 4 個進程中處理數據</p><pre>import disruptor import multiprocessing import random if __name__ == '__main__': cb = disruptor.CircularBuffer(5) def receiveWriter(): while(True): n = random.randint(5,20) cb.receive(n) def ReplicatorReader(): while(True): cb.replicator() def journalerReader(): while(True): cb.journaler() def unmarshallerReader(): while(True): cb.unmarshaller() def consumeReader(): while(True): print(cb.consume()) p1 = multiprocessing.Process(name="p1",target=ReplicatorReader) p1.start() p0 = multiprocessing.Process(name="p0",target=receiveWriter) p0.start() p1 = multiprocessing.Process(name="p1",target=ReplicatorReader) p1.start() p2 = multiprocessing.Process(name="p2",target=journalerReader) p2.start() p3 = multiprocessing.Process(name="p3",target=unmarshallerReader) p3.start() p4 = multiprocessing.Process(name="p4",target=consumeReader) p4.start()</pre><p> 但是我的代碼中出現了這個錯誤:</p><pre> Traceback (most recent call last): File "<string>", line 1, in <module> File "<string>", line 1, in <module> File "C:\Program Files\Python39\lib\multiprocessing\spawn.py", line 116, in spawn_main File "C:\Program Files\Python39\lib\multiprocessing\spawn.py", line 116, in spawn_main exitcode = _main(fd, parent_sentinel) exitcode = _main(fd, parent_sentinel) File "C:\Program Files\Python39\lib\multiprocessing\spawn.py", line 126, in _main File "C:\Program Files\Python39\lib\multiprocessing\spawn.py", line 126, in _main self = reduction.pickle.load(from_parent) self = reduction.pickle.load(from_parent) AttributeError: Can't get attribute 'unmarshallerReader' on <module '__mp_main__' from 'd:\\python\\RunDisruptor.py'> AttributeError: Can't get attribute 'consumeReader' on <module '__mp_main__' from 'd:\\python\\RunDisruptor.py'></pre></div></module>

[英]AttributeError: Can't get attribute 'journalerReader' on <module '__mp_main__

我嘗試在 python 中實現 Lmax。我嘗試在 4 個進程中處理數據 但是我的代碼中出現了這個錯誤: ...

使用 LMAX Disruptor 的單個和多個消費者之間幾乎沒有性能提升/如何正確解碼許多 UDP 數據包

[英]Nearly no performance gain between single and multiple consumers using LMAX Disruptor / how to decode many UDP packets properly

我必須使用 UDP 傳輸更大的文件(最大 10GB)。 不幸的是,TCP 不能用於此用例,因為發送方和接收方之間不可能進行雙向通信。 發送文件不是問題。 我已經使用netty編寫了客戶端。 它讀取文件,對其進行編碼(唯一 ID,position 中的 stream 等)並以可配置的速率(每秒數據包數 ...

LMAX Disruptor 垃圾收集器如何友好

[英]How is LMAX Disruptor garbage collector friendly

我試圖了解 lmax 破壞者是如何對 GC 友好的。 我看到環上的事件對象被重用,但是,在這些對象上“設置”的“數據”在堆上,所以感覺垃圾收集的好處僅限於每個事件少 1 個對象。 如果“數據”是原始數據類型,則堆上沒有任何額外內容,因此在這種情況下的好處非常明顯。 每個事件中 GC 的 1 個對象是 ...

破壞者行為 - 在使用新數據之前耗盡整個緩沖區

[英]Disruptor behavior - Drain full buffer before consuming new data

我有以下情況。 我們在 K8s 上的 Cloud 中對我們的應用程序進行負載測試。 我們的入站消息來自 Kafka,我們正在回信給 Kafka。 我們的架構是這樣的,Kafka 線程將消息推送到中斷器(阻塞等待策略,512 大小),業務線程將消息從中斷器中取出進行處理。 為了模擬負載,我們在應用程序 ...

Python 中的 LMAX 干擾器

[英]LMAX Disruptor in Python

是否已經有一個實現(或至少綁定到)Python3? 我可以看到 Github 上的原始實現是用 Java 實現的,但我沒有看到 Python3 的任何內容。 ...

為什么lmax干擾器架構使用2個干擾器?

[英]Why lmax disruptor architecture use 2 disruptor?

在“lmax干擾器架構設計”中表明,他們正在獲取輸入並將其排入輸入干擾器中,並且有多個事件處理程序,如日志記錄、解組、業務邏輯,然后將其排入輸出干擾器和輸出干擾器具有編組、日志等事件處理程序.. 我的疑問是..為什么不使用一個干擾器和輸入和輸出干擾器的所有組合事件處理程序。 我們可以以這樣的方式處 ...

LMAX Distruptor分區並加入批處理

[英]LMAX Distruptor Partition and join batch

因此,當前我有一個帶有阻塞隊列的Executor實現,具體實現是這樣的,我有每個請求的項目列表,並將它們划分為分區,然后計算每個分區,最后將它們合並在一起以得到最終列表。 如何在LMAX中實現它? 我看到一旦有了分區並將其推入RingBuffer,每個分區都被視為單獨的項目,因此我可以自 ...

在消費者完成讀取之前,LMAX Disruptor Producer錯誤地環繞+覆蓋

[英]LMAX Disruptor Producer Incorrectly Wraparound + Overwrite Before Consumer Completes Read

最近向我介紹了LMAX Disruptor,並決定嘗試一下。 多虧了開發人員,安裝過程快速而輕松。 但是我認為如果有人可以幫助我,我就會遇到問題。 問題:有人告訴我,生產者發布事件時,它應該阻塞,直到消費者有機會在包裝之前檢索它為止。 我在消費者方面有一個序列障礙,我可以確認,如果生 ...

LMAX Disruptor-維護事件順序

[英]LMAX Disruptor - Maintain order of events

我有一個從各種文件加載時間序列數據的應用程序。 該應用程序為每個文件打開一個線程以並行加載數據。 文件中的記錄是有序的,但是我需要將一個提要傳送到應用程序的其余部分,以保持整體事件的順序。 是否可以像多個生產者一樣使用破壞者來實現一種維護事件順序的消費者類型的設計? 我目前正在使 ...

用於中頻交易系統的Disruptor vs. Reactive架構

[英]Disruptor vs. Reactive architecture for middle-frequency trading system

我正在嘗試為我正在研究的中頻交易系統選擇合適的架構。 目前,我從Web Socket或Rest接收消息並在那里處理它們。 有時它包含IO操作(即額外的休息請求),因此它的工作速度非常慢,我想,所有其他消息都在Web Socket客戶端的實現中得到緩沖。 這種天真的方法看起來不太可擴展。 ...

Disruptor日記實現

[英]Disruptor Journaling Implementation

在Martin Fowler關於LMAX干擾器架構的文章中 ,他說: 記者的工作是將所有事件以持久形式存儲,以便在發生任何錯誤時可以將其重播。 LMAX為此不使用數據庫,而僅使用文件系統。 他們將事件流式傳輸到磁盤上。 我很好奇在實踐中基於文件系統的事件日志的實現情況。 ...

為什么在使用較小的環形緩沖區時干擾器速度較慢?

[英]Why is disruptor slower with smaller ring buffer?

遵循Disruptor入門指南 ,我建立了一個由單個生產者和單個消費者組成的最小破壞者。 制片人 消費者 (請注意,消費者在onEvent不執行任何操作) 我的目標是對大型環緩沖區進行一次性能測試,而不是多次遍歷較小的環。 在每種情況下,總操作數( bufferSize ...

LMAX Disruptor依賴圖/使用SequenceBarrier進行門控

[英]LMAX Disruptor Dependency Graph/Gating with SequenceBarrier

目標 我正在嘗試在處理程序之間創建一個有點循環的依賴關系,我無法弄清楚如何正確處理它。 我想要實現的是producer -&gt; [handlers 1-3] -&gt; handler 4 。 所以, disruptor.handleEventsWith(h1, h2, h3) ...

Lmax Disruptor,許多消費者-如何使消費者僅接收特定種類的消息並獨立進行?

[英]Lmax Disruptor, many consumers - how make consumer take only messages of particular kind and proceed independently?

我計划在我的破壞者中擁有許多並行的消費者。 我需要每個使用者僅使用針對他們的消息。 例如,我有A,B,C類型的消息,並且我有類似的緩沖區 我有每種類型的消費者。 我如何才能使A的使用者接受消息1和4,類型B-消息2,C-消息3、5、6? 重要說明:我希望處理過程獨立。 ...

暫停lmax干擾器內部的處理?

[英]Pause the processing inside lmax disruptor?

我想使用 Lmax Disruptor 進行性能測試: 配置dusruptor 以某種方式“暫停”處理 向 RingBuffer 添加許多消息 “取消暫停”處理 這樣我就可以清楚地測量緩沖區變空的速度。 如果我“混合”添加許多消息(這會引入一些延遲)和處理,我可能對處理速度的結果不 ...


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