《雲數據管理:挑戰與機遇》2.1 向量時鍾
本節書摘來自華章出版社《雲數據管理》一書中的第2章,第1節,作者迪衛艾肯特·阿格拉沃爾,更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看
2.1.2 向量時鍾
邏輯時鍾可以捕獲潛在的因果關係,但是,這並不意味著一定有因果關係,邏輯時鍾條件隻是一個必要條件,並不是充分條件。分布式係統中的所有事件可能需要一個更強的時鍾條件:
e→f當且僅當clock(e)<clock(f)。
該條件可按如下方式實現:為每一進程i賦一個長度為n的向量Vi,n是係統中所有進程的數量。每一個執行的事件都被賦一個本地向量。
每個向量都初始化為0,即:Vi[j] = 0,其中i, j = 1, …, N。進程i在每一個事件之前增加本地向量元素的值,Vi[j] = Vi[j] +1。當進程i發送消息的時候,會將本地向量Vi和消息一起發送。當進程j接收消息時,會將接收向量和本地向量的元素逐個進行比較,並將本地向量設置為兩者之中較大的值,Vj[i] = max(Vi[i], Vj[i]), i = 1, …, N。
給定兩個向量V和V',V=V'當且僅當V[i] = V'[i], i = 1, …, N,並且V≤V'當且僅當V[i]≤V'[i], i = 1, …, N。如果至少存在一個j(1≤j≤N),使得V[j]<V'[j],並且,對所有的i≠j,其中,1≤i≤N,V[i]≤V'[i],則V<V'。對任意兩個事件e和f,e→f當且僅當V(e)<V(f)。如果既不滿足V(e)<V(f),又不滿足V(f)<V(e),那麼兩個事件是並發的。
圖2-3中,我們為圖2-1示例中的所有事件都賦了向量時間值。
圖2-3 向量時鍾
雖然向量時間可以準確地捕獲因果關係,但是向量的大小是網絡大小的函數,可能非常大,並且每一個消息都需要攜帶額外的向量最後更新:2017-05-19 12:05:14
上一篇:
《HttpClient官方文檔》第六章 HTTP 緩存
下一篇:
大數據開發—常見問題(4)
Java中利用final關鍵字inline編譯優化真的有效嗎?
linux中常見的文件操作命令(一)
《深入理解Elasticsearch(原書第2版)》一2.5.1 查詢方式分類
Radware:金融機構如何應對日益猖獗的網絡攻擊
android模仿移動MM Tab 點擊 背景 滑動效果
magento 1.4 -- 推薦插件 -- 穀歌地圖 -- Google Map Locations
Jni使用過程中出現 error: request for member 'FindClass' in something not a structure or union,解決辦法
揭秘IPHONE X刷臉認證的技術奧秘
透明計算走 在雲計算之前
Eclipse打包工具 Fatjar clipse插件安裝方法 如何使用fat打包運行