「分散式技術專題」時鐘系列二:資料庫世界中為什麼要有時鐘?
時間概念來源於事件發生順序的最基本概念,如果說事件發生在 3點15分,說明它發生在3點15分到3點16分之間。
在現實世界裡,想知道當前時間好像並不是什麼難事,可對於電腦來說,事情卻沒有那麼簡單。
現代計算機系統中,對於時間流逝的感知和度量,大部分來自石英晶體振盪器。
石英晶體振盪器是高精度和高穩定度的振盪器,被廣泛應用於彩電、計算機、遙控器等各類振盪電路中,以及通訊系統中用於頻率發生器、為資料處理裝置產生時鐘訊號和為特定系統提供基準訊號。
但其並不以絕對恆定的頻率震動,所以總會出現頻率稍高或稍低的狀況,而這種偏差反映到系統時鐘上, 就是系統時間比標準時間稍快或稍慢。
在資料庫中可以把事務看成一個一個的事件,資料庫就是對這些事件的排序,而事件的順序就是靠時鐘來保障的。
分散式資料庫下的時鐘
對於單機資料庫,因為所有的任務和作業都是在單一計算機完成,似乎系統時間快或慢影響並不大,我們可以設想這個時間稍快或稍慢的單機資料庫是一個獨立的世界,在這個世界中,時鐘速率的變化,帶來的影響可能就是各種事件發生的更快或者更慢,但事件的因果先後順序不變。只要不與外部時間的時間協調同步,這裡就是一個平行宇宙,時間速率的變化對世界本身並沒有影響, 因為事件發生的順序是確定的。
相對於單機資料庫,分散式資料庫中事件在空間上是分開的,資料庫中各個節點需要透過交換訊息相互通訊。單機資料庫的排序很簡單,透過標記日誌序列號或事務 ID就可以表示事務的順序,而在分散式資料庫中,資料庫有多個節點組成,每個節點上的資料庫例項擁有獨立的時鐘或日誌,每一個節點上的時鐘不能反映全域性的順序,因為在各個節點上可能存在網路延遲、時鐘偏移等情況,實際情況下,可能還有時鐘校對,發生時鐘跳躍的情況,導致分散式資料庫每個節點都相當於一個世界,而這些世界的時間流速可能不同,從而導致在不同的世界中,事件由時間標記的順序可能存在不確定性。節點之間存在時鐘偏移,理想情況是這些節點的時鐘是完全同步的,而實際上節點與節點之間時鐘有快慢之差, 所以分散式資料庫下的時鐘無法做到全域性設定的反映。
全域性授時服務 -TSO
為了使分散式資料庫擁有確定的全域性唯一時鐘,時鐘的解決方案有很多,例如使用統一的中心節點,或單獨的伺服器產生分散式時鐘。這樣,每個節點的時鐘都有一個統一中心授時即可。
這就是分散式系統領域裡常用的 TSO(Timestamp Oracle)方案,TSO最早由google在percolator論文中提出。
全域性授時顧名思義存在一箇中心化的單一授時節點,因為它是一個單點,即一臺計算機,所以它可以保證按照遞增的方式分配一個邏輯時鐘,任何事件申請的時鐘都不會重複,這樣,分散式資料庫直接使用這個邏輯時鐘就可以去判定事件的先後順序了。邏輯時鐘存在的意義,就是用於仲裁具備相關性的事件的先後順序。
全域性授時服務的優點是實現簡單,通常來說全域性授時服務會比其他方案多一次網路開銷,但全域性授時的授時節點會和分散式資料庫的節點放在同一網路下,網路的開銷會非常小,通常一次網路請求都在 0.1ms或0.2ms內返回,但這也能說明為什麼傳統資料庫的一次請求可以在0ms內返回,而分散式資料庫很少能在0ms內返回了,因為分散式資料庫節點通訊,時鐘同步等都需要額外的網路開銷。
全域性授時的優點是實現簡單,資源消耗可以接受,效能上有時候甚至會比混合邏輯時鐘亦或者原子鐘方案更快,但缺點也很明顯,那就是存在單點瓶頸,擴充套件性差,授時服務節點很容易稱為系統的效能瓶頸,所以一般採用全域性授時服務的資料庫一般不適合大規模部署,也不適合跨地域部署, TSO一般更適合於服務OLAP系統,或者小規模不跨地域的OLTP系統。
以上為資料庫世界中為什麼要有時鐘, 「分散式技術專題」是國產資料庫 hubble 團隊精心整編,專題會持續更新,歡迎大家保持關注。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026685/viewspace-2935012/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 「分散式技術專題」時鐘系列一:事件的因果和邏輯時鐘分散式事件
- 「分散式技術專題」併發系列二:基於時間的併發控制分散式
- 分散式系統:向量時鐘分散式
- 分散式系統2:分散式系統中的時鐘分散式
- 分散式系統:Lamport邏輯時鐘分散式LAMP
- 分散式系統的硬核:時間時鐘問題和演算法分散式演算法
- 華為CloudNative分散式資料庫技術解析Cloud分散式資料庫
- 「分散式技術專題」資料分佈(原理、資料分片)分散式
- 「分散式技術專題」資料庫常見的JOIN演算法分散式資料庫演算法
- 「分散式技術專題」資料切分與合併分散式
- 為什麼要選擇分散式資料庫?分散式資料庫
- 世界時鐘:World Clock Deluxe macUXMac
- Redis避坑指南:為什麼要有分散式鎖?Redis分散式
- 電力GPS北斗衛星時鐘(NTP時鐘伺服器)同步技術淺談伺服器
- 分散式資料庫技術論壇分散式資料庫
- 為什麼要有專車
- 如何使用原生技術寫一個倒數計時時鐘
- 北斗GPS同步時鐘(授時系統)技術原理詳解
- 聊聊Oracle的分散式資料庫技術Oracle分散式資料庫
- 分散式技術“上位”進行時分散式
- 系統時鐘與硬體時鐘
- 時序資料庫-01-時序資料庫有哪些?為什麼要使用資料庫
- 實時時鐘、系統時鐘和主機伺服器時鐘的區別伺服器
- 為什麼分散式一定要有訊息佇列?分散式佇列
- 分散式系統理論基礎3: 時間、時鐘和事件順序分散式事件
- 十分鐘明白什麼是容器技術
- 易鯨捷武新:分散式資料庫2.0時代是什麼樣的?分散式資料庫
- 分散式資料庫技術論壇回顧分散式資料庫
- 崑崙分散式資料庫技術特點分散式資料庫
- 崑崙分散式資料庫技術優勢分散式資料庫
- 阿里分散式資料庫未來技術之路阿里分散式資料庫
- Clock——時鐘
- 為資料賦能:騰訊TDSQL分散式金融級資料庫前沿技術SQL分散式資料庫
- FPGA時鐘資源使用FPGA
- iOS動畫系列之二:帶時分秒指標的時鐘動畫(下)iOS動畫指標
- 「分散式技術專題」副本機制分散式
- 「分散式技術專題」故障恢復分散式
- 「分散式技術專題」三種常見的資料庫查詢引擎執行模型分散式資料庫模型