共識演算法——拜占庭問題中的同步、非同步
共識演算法——拜占庭問題中的同步、非同步
前言
最近在研究共識演算法,找到原始的paper,在對比拜占庭容錯演算法(BFT)和實用拜占庭容錯演算法(PBFT)的時候談到了同步和非同步。
同步VS非同步
從論文中看,同步實現的難度更大,非同步實現的難度更小。之前學過通訊原理,同步傳輸對時間同步要求高,比如要求多個節點的時間都一樣,這樣要求會比較高,但是同步傳輸的效率是高於非同步傳輸的。非同步傳輸能夠適應多種情況,但是會加很多輔助資訊來識別傳輸什麼時候開始和結束,相對同步傳輸來說效率更低。
再舉個簡單的例子,打電話,微信語音,視訊都是同步通訊。
而發簡訊,發微信都是非同步傳輸。
拜占庭容錯的同步和非同步
針對拜占庭同步的攻擊
拜占庭容錯機制如果基於同步機制來保證正確性,會存在一定的危險性。
因為惡意節點可以延遲傳遞正常節點A的訊息,讓其他正常節點把正常節點A判定為惡意節點,從而將其從網路中剔除,這可以算是一種對正常節點進行拒絕服務的攻擊(雖然是間接的)。
參考
相關推薦
共識演算法——拜占庭問題中的同步、非同步
共識演算法——拜占庭問題中的同步、非同步 前言 最近在研究共識演算法,找到原始的paper,在對比拜占庭容錯演算法(BFT)和實用拜占庭容錯演算法(PBFT)的時候談到了同步和非同步。 同步VS非同步 從論文中看,同步實現的難度更大,非同步實現的難度更小。之前學過通訊原理,同
iOS開發中的併發、序列佇列,同步、非同步任務
在多執行緒開發中我們經常會遇到這些概念:併發佇列、序列佇列、同步任務、非同步任務。我們將這四個概念進行組合會有四種結果:序列佇列+同步任務、序列佇列+非同步任務、併發佇列+同步任務、併發佇列+非同步任
關於網路IO中的同步、非同步、阻塞、非阻塞
在高併發程式設計當中,我們經常會遇到一些非同步、非阻塞等一些概念,一些常用的技術比如非同步的httpclient、netty nio、nginx、node.js等,它們的原理大都跟非同步、非阻塞有關。特別是在伺服器開發中,併發的請求處理是個大問題,阻塞式的函式會
Java中的鎖(1):同步、非同步、互斥、死鎖
主線:互斥鎖 ---> 死鎖 ---> 樂觀鎖與悲觀鎖 ---> 資料庫中的鎖(併發插入如何避免重複插入) 一、執行緒同步、非同步、互斥 1、執行緒同步: 是指多個執行緒通過特定的設定(如互斥量、事件物件、臨界區)來控制執行緒之間的執
一段話系列-Linux中IO的同步、非同步、阻塞、非阻塞
首先我們框定一下背景,我們探討的是Linux系統下的IO模型。 同步和非同步是針對核心操作資料而言的,同步是指核心序列順序操作資
同步、非同步、阻塞、非阻塞、並行、併發、共享資源的同步
同步阻塞呼叫:得不到結果不返回,執行緒進入阻塞態等待。 同步非阻塞呼叫:得不到結果不返回,執行緒不阻塞一直在CPU執行。 非同步阻塞呼叫:去到別的執行緒,讓別的執行緒阻塞起來等待結果,自己不阻塞。 非同步非阻塞呼叫:去到別的執行緒,別的執行緒一直在執行,直到得出結果。
同步、非同步與阻塞、非阻塞
UNIX下可用的I/O模型: 阻塞式I/O; 非阻塞式I/O; I/O複用(select,poll,epoll…); 訊號驅動式I/O(SIGIO); 非同步I/O(POSIX的aio_系列函式); 阻塞式I/O模型:預設情況下,所有套接字都是阻
對.NET同步、非同步、阻塞、非阻塞的理解。
老張愛喝茶,廢話不說,煮開水。 出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。 1 老張把水壺放到火上,立等水開。(同步阻塞) 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞) 老張還是覺得自己有點傻,於是
那些年讓人迷惑的同步、非同步、阻塞、非阻塞
在IT圈混飯吃,不管你用什麼程式語言、從事前端還是後端,阻塞、非阻塞、非同步、同步這些概念,都需要清晰地掌握,否則,怎麼與面試官談笑風生(chui niu pi)?但是,掌握這些概念又不是非常容易,尤其對非科班出身的,更加困難。本文試圖給出一個清晰簡明但不失深刻的介紹,希望對大家有所
AJAX、同步、非同步對SEO的影響
SEO (Search Engine Optimization) 中文名叫搜尋引擎優化。 概念: SEO是指通過站內優化比如網站結構調整、網站內容建設、網站程式碼優化等以及站外優化,比如網站站外推廣、網站品牌建設等,使網站滿足搜尋引擎收錄排名需求,在搜尋引擎中提高關鍵詞排
day032程序池(重點)程序池的同步、非同步方法,回撥函式;管道、資料共享
本節內容: 1、管道(瞭解) 2、資料共享(瞭解) 3、程序池(重點) 4、程序的同步方法 5、程序池的非同步方法 6、回撥函式 7、檔案物件的獲取 一、管道(瞭解) 程序間通訊(IPC)
JavaScript同步、非同步、回撥執行順序之經典閉包setTimeout面試題分析
初心-楊瑞超個人部落格誠邀您加入qq群(IT-程式猿-技術交流群):757345416 大家注意了,教大家一道口訣: 同步優先、非同步靠邊、回撥墊底(讀起來不順) 用公式表達就是: 同步 => 非同步 => 回撥 有一道經典的面試題: for
ajax、同步、非同步
同步互動:只發送一個請求,需要等待返回,然後才能夠傳送下一個請求,有個等待的過程。可以避免死鎖,避免髒讀。 非同步互動:指傳送一個請求,不需要等待返回,隨時可以再發送下一個請求,既不需要等待。非阻塞 區別:等待的區別 $.ajax()是jquery中最底層方法。 $.ajax({ url:h
【高併發程式設計】再談同步、非同步、阻塞、非阻塞
同步、非同步、阻塞、非阻塞的概念一直是計算機學科中很重要的概念,而這種細微的差別常常被大家混淆,我自己在過一段時間後也需要複習。今天再次翻出這個概念,仍然覺得不夠清晰,今天再次深入瞭解了這四大天王。 以前轉過一篇部落格:http://blog.csdn.net/xxxxxx9
Javascript的同步、非同步、回撥執行順序
在做筆試題的時候,遇到一個很經典的題目,關於setTimeout的輸出結果,先來看一道題目: for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(i);
併發程式設計、並行、多執行緒、鎖、同步、非同步、多執行緒、單執行緒、阻塞io、非阻塞io
一、 cpu的每一個核在同一時間下,只能執行一個執行緒,就是單核同一時間只能執行一個執行緒 而cpu可以不停的切換,這樣就導致使用者感覺可以執行多個執行緒,這是併發,而不是並行 併發和並行 你吃飯吃到一半,電話來了,你一直到吃完了以後才去接,這就說明你不支援併發也不支
同步、非同步、多執行緒、高併發不再混淆!
高併發:“短時間內遇到大量操作請求”的情況。 多執行緒:多執行緒就是指一個程序中同時有多個執行緒正在執行。其目的就是當某個執行緒很耗時的時候使用多執行緒,可以在將耗時任務放在後臺繼續執行的同時,同時執行其他操作,達到提升效率,優化使用者體驗的效果。 多執行緒是完成高併發任
同步、非同步、阻塞、非阻塞
使用者空間和核心空間 使用者空間:使用者空間是常規程序所在的區域,是非特權的空間,在該空間執行的程式碼不能訪問硬體裝置 核心空間:是作業系統所在的區域,是特權空間,能與裝置控制器通訊,控制著使用者區域程序的執行狀態,最重要的是所有的I/O都直接或間接的通過核心
同步、非同步與阻塞、非阻塞的辨別理解
所謂同步非同步,只是對於水壺而言,即應用程式。 雖然都能幹活,但響水壺可以在自己完工之後,提示老張水開了。這是普通水壺所不能及的。 同步只能讓呼叫者去輪詢,造成老張效率的低下。 所謂阻塞非阻塞,僅僅對於老張而言。 立等的老張,阻塞;看電視的老張,非阻塞。 情況1和情況3中老張就是阻塞的。雖然3中響水
程序、執行緒、協成、同步、非同步
CPU---多個程序 一個程序可以多個執行緒 協成:用yield來終段函式的來回執行函式 同步和非同步: 程式,1程序和1執行緒,(1)python讀取資料夾裡面的檔案,(2)然後print出來。同步(有阻塞,有等待) 程式,1程序2程序,(1)1個執行緒讀取資料,(