mirror of
https://github.com/Vonng/ddia.git
synced 2024-12-06 15:20:12 +08:00
修正單調鐘的誤譯
This commit is contained in:
parent
42002faaeb
commit
02c84af20e
@ -27,7 +27,7 @@
|
||||
|
||||
在批處理領域,作業的輸入和輸出是檔案(也許在分散式檔案系統上)。流處理領域中的等價物看上去是什麼樣子的?
|
||||
|
||||
當輸入是一個檔案(一個位元組序列),第一個處理步驟通常是將其解析為一系列記錄。在流處理的上下文中,記錄通常被叫做 **事件(event)** ,但它本質上是一樣的:一個小的,自包含的,不可變的物件,包含某個時間點發生的某件事情的細節。一個事件通常包含一個來自時鐘的時間戳,以指明事件發生的時間(參見“[單調鍾與時鐘](ch8.md#單調鍾與時鐘)”)。
|
||||
當輸入是一個檔案(一個位元組序列),第一個處理步驟通常是將其解析為一系列記錄。在流處理的上下文中,記錄通常被叫做 **事件(event)** ,但它本質上是一樣的:一個小的,自包含的,不可變的物件,包含某個時間點發生的某件事情的細節。一個事件通常包含一個來自時鐘的時間戳,以指明事件發生的時間(參見“[單調鐘與時鐘](ch8.md#單調鐘與時鐘)”)。
|
||||
|
||||
例如,發生的事件可能是使用者採取的行動,例如檢視頁面或進行購買。它也可能來源於機器,例如對溫度感測器或CPU利用率的週期性測量。在“[使用Unix工具進行批處理](ch10.md#使用Unix工具進行批處理)”的示例中,Web伺服器日誌的每一行都是一個事件。
|
||||
|
||||
|
14
zh-tw/ch8.md
14
zh-tw/ch8.md
@ -261,9 +261,9 @@
|
||||
|
||||
而且,網路上的每臺機器都有自己的時鐘,這是一個實際的硬體裝置:通常是石英晶體振盪器。這些裝置不是完全準確的,所以每臺機器都有自己的時間概念,可能比其他機器稍快或更慢。可以在一定程度上同步時鐘:最常用的機制是**網路時間協議(NTP)**,它允許根據一組伺服器報告的時間來調整計算機時鐘【37】。伺服器則從更精確的時間源(如GPS接收機)獲取時間。
|
||||
|
||||
### 單調鍾與時鐘
|
||||
### 單調鐘與時鐘
|
||||
|
||||
現代計算機至少有兩種不同的時鐘:時鐘和單調鍾。儘管它們都衡量時間,但區分這兩者很重要,因為它們有不同的目的。
|
||||
現代計算機至少有兩種不同的時鐘:時鐘和單調鐘。儘管它們都衡量時間,但區分這兩者很重要,因為它們有不同的目的。
|
||||
|
||||
#### 時鐘
|
||||
|
||||
@ -275,17 +275,17 @@
|
||||
|
||||
時鐘還具有相當粗略的解析度,例如,在較早的Windows系統上以10毫秒為單位前進【39】。在最近的系統中這已經不是一個問題了。
|
||||
|
||||
#### 單調鍾
|
||||
#### 單調鐘
|
||||
|
||||
單調鍾適用於測量持續時間(時間間隔),例如超時或服務的響應時間:Linux上的`clock_gettime(CLOCK_MONOTONIC)`,和Java中的`System.nanoTime()`都是單調時鐘。這個名字來源於他們保證總是前進的事實(而時鐘可以及時跳回)。
|
||||
單調鐘適用於測量持續時間(時間間隔),例如超時或服務的響應時間:Linux上的`clock_gettime(CLOCK_MONOTONIC)`,和Java中的`System.nanoTime()`都是單調時鐘。這個名字來源於他們保證總是前進的事實(而時鐘可以及時跳回)。
|
||||
|
||||
你可以在某個時間點檢查單調鐘的值,做一些事情,且稍後再次檢查它。這兩個值之間的差異告訴你兩次檢查之間經過了多長時間。但單調鐘的絕對值是毫無意義的:它可能是計算機啟動以來的納秒數,或類似的任意值。特別是比較來自兩臺不同計算機的單調鐘的值是沒有意義的,因為它們並不是一回事。
|
||||
|
||||
在具有多個CPU插槽的伺服器上,每個CPU可能有一個單獨的計時器,但不一定與其他CPU同步。作業系統會補償所有的差異,並嘗試嚮應用執行緒表現出單調鐘的樣子,即使這些執行緒被排程到不同的CPU上。當然,明智的做法是不要太把這種單調性保證當回事【40】。
|
||||
|
||||
如果NTP協議檢測到計算機的本地石英鐘比NTP伺服器要更快或更慢,則可以調整單調鍾向前走的頻率(這稱為**偏移(skewing)**時鐘)。預設情況下,NTP允許時鐘速率增加或減慢最高至0.05%,但NTP不能使單調時鐘向前或向後跳轉。單調時鐘的解析度通常相當好:在大多數系統中,它們能在幾微秒或更短的時間內測量時間間隔。
|
||||
如果NTP協議檢測到計算機的本地石英鐘比NTP伺服器要更快或更慢,則可以調整單調鐘向前走的頻率(這稱為**偏移(skewing)**時鐘)。預設情況下,NTP允許時鐘速率增加或減慢最高至0.05%,但NTP不能使單調時鐘向前或向後跳轉。單調時鐘的解析度通常相當好:在大多數系統中,它們能在幾微秒或更短的時間內測量時間間隔。
|
||||
|
||||
在分散式系統中,使用單調鍾測量**經過時間(elapsed time)**(比如超時)通常很好,因為它不假定不同節點的時鐘之間存在任何同步,並且對測量的輕微不準確性不敏感。
|
||||
在分散式系統中,使用單調鐘測量**經過時間(elapsed time)**(比如超時)通常很好,因為它不假定不同節點的時鐘之間存在任何同步,並且對測量的輕微不準確性不敏感。
|
||||
|
||||
### 時鐘同步與準確性
|
||||
|
||||
@ -339,7 +339,7 @@
|
||||
|
||||
NTP同步是否能足夠準確,以至於這種不正確的排序不會發生?也許不能,因為NTP的同步精度本身受到網路往返時間的限制,除了石英鐘漂移這類誤差源之外。為了進行正確的排序,你需要一個比測量物件(即網路延遲)要精確得多的時鐘。
|
||||
|
||||
所謂的**邏輯時鐘(logic clock)**【56,57】是基於遞增計數器而不是振盪石英晶體,對於排序事件來說是更安全的選擇(請參見“[檢測併發寫入](ch5.md#檢測併發寫入)”)。邏輯時鐘不測量一天中的時間或經過的秒數,而僅測量事件的相對順序(無論一個事件發生在另一個事件之前還是之後)。相反,用來測量實際經過時間的**時鐘**和**單調鍾**也被稱為**物理時鐘(physical clock)**。我們將在“[順序保證](#順序保證)”中來看順序問題。
|
||||
所謂的**邏輯時鐘(logic clock)**【56,57】是基於遞增計數器而不是振盪石英晶體,對於排序事件來說是更安全的選擇(請參見“[檢測併發寫入](ch5.md#檢測併發寫入)”)。邏輯時鐘不測量一天中的時間或經過的秒數,而僅測量事件的相對順序(無論一個事件發生在另一個事件之前還是之後)。相反,用來測量實際經過時間的**時鐘**和**單調鐘**也被稱為**物理時鐘(physical clock)**。我們將在“[順序保證](#順序保證)”中來看順序問題。
|
||||
|
||||
#### 時鐘讀數存在置信區間
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user