【喜大普奔】JFrog支持 P2P下載功能

1、需求背景

在大規模Docker 容器運行時環境中,如果鏡像實例數 較多,需要同時大規模,多地更新鏡像,比如大型電商平臺需要更新所有容器的鏡像時,Docker鏡像中心往往成爲性能瓶頸,這個瓶頸往往來自於鏡像中心的網絡出口,比如鏡像中心所在主機有萬兆網卡,則網絡流量會被限制在 1000MB(注意是大 Byte),通常這個網卡會被多個應用共享使用,所以流量有很多損耗,導致無法滿足 Docker 鏡像實時分發的需求。即使將 Docker 鏡像中心進行異地分佈式部署,也存在瞬時的併發拉取流量難以滿足,從而導致 Docker 拉取鏡像失敗,Pod 無法啓動。

2、功能介紹

爲了解決這個問題,JFrog Artifactory E+ 7.9 版本支持了 P2P 功能。之前的鏡像拉取方式如下:

支持 P2P 之後,鏡像的分發方式如下:

JFrog P2P 功能能夠讓用戶從 Peer 網絡中直接獲取製品,Peer 節點存儲了種子製品和緩存過的製品,從而大大的減少 Artifactory 的下載壓力。

  1. JFrog P2P 模塊的架構:
  2. Tracker: 是一個Artifactory 的服務,用來廣播和追蹤可用的種子製品在哪個 peers 和服務器。
  3. Peer: 是一個獨有的JFrog應用程序,部署在 peers 節點的主機上,和其他 peers 節點通信。Peer 節點連接 Tracker 去下載製品,並且聲明種子的可用性給Tracker.
  4. P2P Swarm: 是一個peers 節點的邏輯集合,它形成了分佈式的網絡,用於給集羣內的 Docker 客戶端共享製品。
  5. Client: 客戶端軟件用戶和 peer 交互,通常是 Docker 或者 HTTP client.

 

  1. JFrog P2P 下載的工作流:

 

  1. Peer 安裝在連接到 Artifactory 的主機上,例如 Kubernetes work node。
  2. Peer 節點連接到 Artifactory Edge ,然後註冊在 Trakcer 上,作爲種子服務器提供服務。所有的下載都通過SSL加密,使用Artifactory的鏈式認證進行統一鑑權.Peer 節點監聽客戶端或者其他 Peer 節點的下載請求。
  3. 當 Peer 節點下載好種子文件後,會自動廣播給各個 Tracker自己的內容,Tracker 會存儲這些種子文件的信息。 
  4. 當 Peer 節點監聽到客戶端請求時,會去 Tracker 查詢哪些 Peer 節點已經緩存了該文件,Tracker 會回覆 Peer 節點的請求,然後 Peer 節點開始從Peer swarm 裏的這些節點去進行下載。
  5. 當文件被緩存在 Peer 節點上,這個信息會被 Tracker 發現並廣播,能夠別併發的被其他 peer 節點拉取。下載的過程是多線程併發的執行,因此能夠打滿 Peer 集羣內部的網絡帶寬,使得下載速度比從 Artifactory 服務器下載更加快。

 

3、收益

通過 P2P 功能,用戶能夠極快的拉取鏡像,實現業務的連續性,目前 JFrog E+版本中支持了這個功能。歡迎大家免費下載試用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章