貝寶開通JunoDB DBMS代碼

PayPal 開放了容錯 DBMS JunoDB 的源代碼,該資料庫以鍵值格式操作資料。 該系統最初的設計具有高安全性、水平可擴展性、容錯能力,並且能夠處理數十萬個同時連接,並考慮到可預測的延遲。 在 PayPal,幾乎所有服務,從使用者登入到處理金融交易,都與 JunoDB 綁定。 這個專案程式碼是用 Go(一個 Java 用戶端程式庫)編寫的,並在 Apache 2.0 許可證下分發。 進一步的發展將接受社區的修正、改進和改變。

JunoDB 的架構是基於負載平衡器的使用,該負載平衡器接受來自客戶端應用程式的請求,並將它們分發到代理伺服器之間,這些代理伺服器在執行請求時同時存取一組儲存伺服器。 每個代理伺服器同時與所有儲存伺服器建立連接,並根據儲存在分散式儲存系統etcd配置中的分區索引將請求轉發到一組儲存伺服器。

貝寶開通JunoDB DBMS代碼

使用雜湊對資料進行分區並連結到儲存節點,這可以減少叢集中節點增長或收縮時的資料移動。 為了確保容錯能力,每個資料都會複製到多個儲存節點上,這樣您就可以在個別伺服器發生故障時保存資訊。 支援建立地理分散式存儲,其中節點組位於不同的資料中心。

貝寶開通JunoDB DBMS代碼

在資料儲存節點上,它們位於RAM或基於RocksDB庫的本機儲存中。 永久儲存時,資料以加密形式儲存(加密金鑰可以由客戶端決定或在代理程式層級設定)。

貝寶開通JunoDB DBMS代碼

為了從應用程式存取資料庫,提供了一個客戶端程式庫,該程式庫為 Java、Go 和 C++ 中的應用程式提供 API。 客戶端部分盡可能簡化,複雜的邏輯和設定盡可能轉移到DBMS端。 客戶端與平衡器或代理之間的互動是透過加密的通訊通道進行的。 要管理和發送請求,您可以使用命令列介面,它複製了客戶端 API 的所有功能。

該系統旨在以可預測的低延遲處理請求,例如,由三個儲存節點和一個代理組成的集群,由n1-highmem-32 環境(32 個Intel Xeon 2.30GHz CPU、214G RAM 和450G SSD 儲存)組成,在處理2.5 萬個同時TLS 連線和每秒95 萬個請求流時(16 個同時連線和99 萬個請求流),能夠在200% 的情況下提供不超過15 毫秒的固定延遲,在3000 % 的情況下提供不超過80 毫秒的固定延遲每秒,6% 的情況下延遲不超過 95 毫秒,15% 的情況下延遲不超過 99 毫秒。 在 PayPal,基於 JunoDB 的服務每天處理約 350 億個請求。

貝寶開通JunoDB DBMS代碼


來源: opennet.ru

添加評論