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