什麼是「太長」?

2021-10-05 21:24:22 字數 1670 閱讀 9379

我只是在重新閱讀leslie lamport的經典**《 時間,時鐘和分布式系統中的事件排序》 。 本文的大部分內容討論如何管理邏輯時鐘而不是物理時鐘排序的事件。 當然,自從撰寫本文以來,關於如何充分利用同步良好的物理時鐘,也進行了許多有趣的學術和實踐工作(顯然,所有的魔術都在於定義「良好同步」的含義以及如何實現)。 )。

無論如何,我最震驚的是他在**結尾處寫的一段話:

失敗問題是乙個棘手的問題,任何詳細討論都超出了本文的範圍。

我們將觀察到,整個失敗的概念僅在物理時間的背景下才有意義。

沒有物理時間,就無法將失敗的程序與僅在事件之間暫停的程序區分開。

使用者只能因為等待響應的時間太長才知道系統「崩潰」。

那段有很多智慧型!

從編寫序列,同步演算法到編寫非同步,分布式系統的過程中,至關重要的是要了解在簡化的介面下可以從**抽象出複雜性,以及在什麼地方需要接受要處理的根本不同的東西。 按照約定呼叫本地同步介面時,您會在一定時間內獲得成功或失敗響應。 當您將訊息傳送到分布式元件時,它本質上是非同步的。 即使存在基礎連線的抽象和聲稱可以保證成功或失敗響應的協議,但在物理級別上,您只是在傳送和接收離散訊息。 最終,您需要準備僅僅由於某些事情花費了「太長時間」而認識到失敗。 重要的是,「失敗」可能是未能接收到您的訊息,未能處理您的訊息或僅僅是未能提供響應(這導致了冪等的概念,但這是乙個單獨的主題)。

但是「太長」是什麼?

在這一點上,您似乎只有兩種選擇-您使用一些超時(根據某些歷史資料流進行硬編碼,配置或動態計算),或者將有關「過長」的決定傳播(平移)到較高階別的系統,通常最終是使用者。 然後,使用者根據自己的緊迫性,不耐煩或對某些帶外訊號可能存在​​的系統狀態的外部理解,來決定何時放棄或明確重試(也許他們了解到,來自該物業角落的無線訊號)總是粗略的)。

我們使用了幾種常見的機制來解決這一基本挑戰。

最通用的策略是嘗試減少系統中不同**之間的預期響應時間差異。 這不會改變問題的總體形狀,但實際上可以使用更緊密的超時範圍,並為通過系統提供反饋和持續的進度流提供了機會,以便為具有挑戰性的「過長」評估提供輸入。

響應時間存在根本差異(例如,您可能要求分布式**執行一系列非常簡單的事情或非常困難的耗時的事情)時,一種常見的技術是使**做出簡單的「得到」響應一旦請求被接受並排隊。 那時,分布式**處於處理該請求的顯式可發現狀態,並且稍後將移至反映請求完成的顯式可發現狀態。 以這種方式對互動進行建模的優勢在於,它反映了整個系統中正在發生的事情的真實性。 microsoft為適合microsoft oneapi設計模式的rest api開發的指南建議對完成時間差異較大的請求採用這種通用方法。

此技術的一種不太有效的變體是提供有關操作進度的持續反饋(通過移動經過明確的不同狀態的反饋,提供一些持續的活動指示或明確的進度百分比)。 在此方法的基礎上,您具有相同的基本系統結構-**在顯式系統狀態中移動。

我的經驗是,最好使用第一種技術對系統進行顯式建模。 您專注於對系統本身建模,而不是對系統上執行的操作進度進行建模。 它通常需要更多的初始基礎架構,但會導致系統元件之間的耦合鬆散。 尤其是在我們的多裝置環境中,隨著來來往往的**以及具有間歇性和變化連線性的**,將系統建模為不​​同的可發現狀態,而不是使用顯式的1–1通訊和反饋通道來使系統更加健壯和靈活。

僅在物理時間的上下文中故障才有意義的這種觀點是我們構建的系統的真正「物理」發揮作用的那些關鍵位置之一。 我們生活在愛因斯坦的宇宙中,我們建立的系統需要反映這一點。

from:

mysql 索引太長 mysql索引名太長怎麼辦

1級2017 12 02 回答 1.資料庫版本 阿里雲rds mysql5.1 mysql select version version 5.1.61 alibaba rds 201404 log 1 row in set 0.00 sec 2.測試的表結構資訊 mysql show create ...

什麼是LVM 什麼是LV 什麼是VG

lvm logicl volume manager 邏輯卷管理器,通過使用邏輯卷管理器對硬碟儲存裝置進行管理,可以實現硬碟空間的動態劃分和調整。一 基本概念 1 物理卷 pv physical volume 物理卷在邏輯卷管理中處於最底層,它可以是實際物理硬碟上的分割槽,也可以是整個物理硬碟。2 捲...

什麼是IaaS?什麼是PaaS?什麼是SaaS?

最近有朋友問我,什麼是iaas?什麼是paas?什麼是saas?他們又有什麼分別?其實,雲計算發展到今天,這些當年看似新穎的概念,已經快爛大街了,從業者早就對這些概念習以為常,但是圈外人卻依然是丈二和尚摸不著頭腦。今天我就來為圈外人士來解答一下,什麼是iaas,什麼是paas,什麼是saas。先來說...