4 6 基於反熵的狀態同步

2021-09-16 19:22:47 字數 955 閱讀 8203

反熵(anti-entropy)是指每個節點周期性地和鄰居節點交換儲存的資料,然後對比本地資料和鄰居節點所儲存的資料,檢查是否有缺失或者過期的資料,然後更新本地節點的資料為最新的資料。

超級賬本的反熵實現比較簡單,每個節點定期(10s)檢查本地賬本的區塊序列號和其他節點賬本的序列號。若發現本 地的序列號比網路中其他節點賬本的序列號小就在網路中廣播乙個gossipmessage_staterequest訊息,請求缺失序列號的區塊。收到請 求的節點如果有對應序列號的區塊,會在網路中廣播乙個gossipmessage_stateresponse訊息,使其包含本地賬本中請求序列號的區 塊。這種方式是通過直接訊息(directmessage)渠道進行的,節點接收到訊息後會快取起來,放到乙個payloadsbuffer的資料結構裡 儲存起來。

由於tcp/ip網路傳輸的特點,資料可能不是按序到達的,payloadsbuffer會在內部儲存乙個索引, 記錄等待提交賬本的下乙個區塊的序列號next。如果接收到的區塊序列號小於next,說明是過期的區塊,直接丟棄。如果序列號大於 next,payloadsbuffer把收到的資料放到序列號對應的緩衝區陣列裡。只要收到的資料和已提交區塊序列號連續了,就會把連續的資料區塊提交 到賬本裡,然後刪除緩衝區中已提交的資料區塊,同時更新索引next。

另外乙個更新狀態資料的過程是在主節點從排序服務中獲取到區塊以後,會建立乙個型別為 gossipmessage_datamsg的資料訊息廣播給其他節點,其他節點接收到區塊後同樣也會和payloadsbuffer中的next進行比 較,進行同樣的處理。和直接訊息方式不同的地方是,從排序服務獲取到的gossipmessage_datamsg訊息只包含乙個區塊,直接訊息裡可能會 包含多個缺失的區塊。

'); (window.slotbydup = window.slotbydup || ).push(); })();

'); (window.slotbydup = window.slotbydup || ).push(); })();

基於熵的特徵提取

基於熵的特徵提取 一 引言 最近一直在研究自然語言處理 文字分析相關的問題,看了不少 資料分析是乙個非常有意思的東西,故準備寫一些博文來分享近來的一點心得。研究的問題明確一下,通過前面7條資料來判斷最後一條資料的性別?一眼掃過,直覺告訴我 2 安裝美柚和網易彩票,貌似很有區分度,這兩個因子 資訊量 ...

執行緒的同步狀態

執行緒的同步狀態主要包含5種狀態的轉換 1.初始狀態 new 也就是執行緒物件被新建後就進入初始狀態。例如,thread thread new thread 2.就緒狀態 runnable 也被稱為 可執行狀態 執行緒物件被建立後,呼叫該物件的start 方法啟動了執行緒。此時執行緒就進入到了就緒狀...

46 記憶體對映的保護和同步

mmap函式的prot引數可指定記憶體對映區的保護許可權,例如指定prot read和prot exec,在呼叫open開啟檔案就應該指定o rdonly或者o rdwr。如果指定了prot write,開啟的檔案應該使用o wronly或者o rdwr。因為有些硬體的架構實現有些不同,所以對於保護...