Facebook正在開放其開源計算項目 —— 時間設(shè)備項目(OCP TAP)的源代碼,該項目以經(jīng)濟高效的方式提供高度精確的計時功能,以及跨數(shù)據(jù)中心時間同步功能。在NVIDIA ConnectX-6 Dx網(wǎng)卡(NIC)的支持下,這項解決方案中的Time Card通過精確計時協(xié)議,可以將幾乎所有商用現(xiàn)成的(COTS)服務(wù)器變成精確的計時設(shè)備,與整個數(shù)據(jù)中心內(nèi)的其他服務(wù)器共享精確計時。
Facebook Time Card和NVIDIA 網(wǎng)卡這對組合為數(shù)據(jù)中心運營商提供了一個先進和低成本的時間同步解決方案,并且該解決方案具有開源、安全、可靠和可擴展等特點。
精確的時間為什么對于數(shù)據(jù)中心至關(guān)重要
隨著應(yīng)用的擴展并且IT運營遍布全球,保持數(shù)據(jù)中心內(nèi)不同服務(wù)器,或位于各大洲不同數(shù)據(jù)中心的數(shù)據(jù)同步,變得更加重要和困難。分布式數(shù)據(jù)庫必須追蹤事件的確切順序以保持一致性并顯示因果關(guān)系。如果有兩個人試圖購買同一只股票,那么根據(jù)公平性(和合規(guī)性)原則,就必須知道買單的先后順序。同樣,當(dāng)每小時有上千萬人發(fā)布內(nèi)容,數(shù)百萬用戶喜歡/稱贊/喜愛這些帖子時,F(xiàn)acebook必須知道每個帖子、每次點贊、每條回復(fù)或每個表情符號的實際發(fā)生順序。
保持數(shù)據(jù)同步的方法之一是讓每個數(shù)據(jù)中心在每件事務(wù)操作完成后向其他中心發(fā)送更新,但由于數(shù)據(jù)中心之間的延遲太高,以至于無法支持每小時數(shù)百萬個事件,這種做法很快就變得無法維持。
更好的方法是讓每個服務(wù)器和數(shù)據(jù)中心同步到精確的時間,使彼此之間的時間誤差不超過一微秒。這樣每個站點都能追蹤時間,并且當(dāng)它們與其他數(shù)據(jù)中心共享事件時,能夠正確排序每個事件。
時間同步越精確,應(yīng)用性能就越快。最近的一項測試表明,將計時精度提高80倍(將任何時間差異減小80倍)能夠使分布式數(shù)據(jù)庫的運行速度提高3倍。在相同的服務(wù)器硬件上僅僅通過提高更精確和更可靠的時間就能實現(xiàn)顯著的性能提升。
網(wǎng)卡和網(wǎng)絡(luò)在時間同步中的作用
OCP TAP項目(以及Facebook關(guān)于開源時間設(shè)備的博客文章)確切地定義了Time Card如何接收和處理來自GPS衛(wèi)星網(wǎng)絡(luò)的時間信號,即使在衛(wèi)星信號暫時不可用時,也能保持精確的時間并與時間服務(wù)器共享這一精確的時間。同時,網(wǎng)絡(luò)以及所使用的網(wǎng)卡也發(fā)揮著至關(guān)重要的作用。
圖1. OCP Time Card保持精確的時間并與支持PPS輸入/輸出的網(wǎng)卡(如NVIDIA ConnectX-6 Dx)共享這一時間(資料來源:Facebook工程博客)
時間設(shè)備中的網(wǎng)卡必須有一個用于連接Time Card的每秒時間脈沖(PPS)端口。這能確保每個時間服務(wù)器中Time Card和網(wǎng)卡之間的精確時間同步(精確到幾納秒之內(nèi))。ConnectX-6 Dx是首批支持此功能的現(xiàn)代25/50/100/200Gb/s網(wǎng)卡之一。它還能過濾和檢查傳入的PPS信號,并使用其ASIC中的硬件在內(nèi)部維護時間,從而確保精確性和一致性。
計時精度達到次微秒級的時間裝置可以與數(shù)百個使用網(wǎng)絡(luò)時間協(xié)議(NTP)的普通服務(wù)器或數(shù)萬個使用精確時間協(xié)議(PTP)的服務(wù)器共享該計時。由于網(wǎng)絡(luò)會增加時間信號的延遲,因此NTP和PTP通過為數(shù)據(jù)包添加時間戳來測量兩個方向的傳輸時間、將抖動和延遲考慮在內(nèi)并計算出每個服務(wù)器上的正確時間(PTP的精度更高,因此它開始取代NTP協(xié)議)。
圖2. NVIDIA ConnectX-6 Dx帶有PPS輸入/輸出端口,可與Time Card直接進行時間同步。它還可以在硬件中為數(shù)據(jù)包添加精確的硬件時間戳
另一種方法是使用軟件解決方案來添加時間戳,但在由于擁堵或CPU的干擾,用軟件添加時間戳的誤差可能達到幾毫秒,因此以今天的軟件方案添加時間戳是過于難預(yù)測、不精確、甚至是不可行的。相反,ConnectX-6 Dx網(wǎng)卡和BlueField-2 DPU可以在高達100Gb/s的速度下,在接收的數(shù)據(jù)包到達后和發(fā)送的數(shù)據(jù)包進入網(wǎng)絡(luò)前,立即為它們添加硬件時間戳。ConnectX-6 Dx可以為每一個數(shù)據(jù)包添加時間戳,即使在網(wǎng)絡(luò)負載極大的情況下,時間戳的精度誤差也小于4納秒(4ns)。其他大多數(shù)具有時間功能的網(wǎng)卡只對部分數(shù)據(jù)包進行標(biāo)記并且精度抖動很大,因此在網(wǎng)絡(luò)流量大的情況下,它們的時間精確性就會下降。
NVIDIA網(wǎng)絡(luò)解決方案為商用網(wǎng)卡提供最精確的延遲測量,從而在所有服務(wù)器上實現(xiàn)最精確的時間,應(yīng)用層面的時間誤差通常低于一微秒(<1us)。網(wǎng)絡(luò)計時精度的提升意味著每臺服務(wù)器上的時間變得更加精確,這將為分布式應(yīng)用帶來更快的性能(并且為每個人帶來更多的Facebook“點贊數(shù)”)。
圖3. 使用OCP時間服務(wù)器和NVIDIA的網(wǎng)卡或DPU部署NTP或PTP可以將高度精確的時間傳到整個數(shù)據(jù)中心的所有服務(wù)器
精確時間同步,人人皆可受益
OCP時間設(shè)備項目使任何組織都能獲得精準(zhǔn)的計時功能。來自Facebook、NVIDIA和OCP的開源時間服務(wù)器和開源管理工具提供了一個讓每個人都可以像超大規(guī)模用戶一樣輕松使用這項功能的方法。
NVIDIA所提供的精確時間功能網(wǎng)卡和DPU(數(shù)據(jù)處理器)具有精確計時設(shè)備所需的超精確時間戳和網(wǎng)絡(luò)同步功能。當(dāng)使用BlueField DPU時,就可以在其Arm核上運行PTP棧,從而將時間棧與其他服務(wù)器軟件隔離、持續(xù)驗證該服務(wù)器內(nèi)的時間精確性并持續(xù)計算整個數(shù)據(jù)中心的最大時間誤差范圍。
為了發(fā)揮經(jīng)過優(yōu)化的時間服務(wù)器和時間同步所帶來的優(yōu)勢,云服務(wù)和數(shù)據(jù)庫已經(jīng)增加了基于時間的新命令和API。這些解決方案一同開啟了精確計時的新時代,提高了分布式應(yīng)用的性能并為云和企業(yè)帶來新型解決方案。