1. 需求背景
2. 功能介绍
支持P2P 之后,镜像的分发方式如下:
JFrog P2P 功能能够让用户从 Peer 网络中直接获取制品,Peer 节点存储了种子制品和缓存过的制品,从而大大的减少 Artifactory 的下载压力。
l JFrog P2P 模块的架构:
l Tracker: 是一个Artifactory 的服务,用来广播和追踪可用的种子制品在哪个 peers 和服务器。
l Peer: 是一个独有的JFrog应用程序,部署在 peers 节点的主机上,和其他 peers 节点通信。Peer 节点连接 Tracker 去下载制品,并且声明种子的可用性给Tracker.
l P2P Swarm: 是一个peers 节点的逻辑集合,它形成了分布式的网络,用于给集群内的 Docker 客户端共享制品。
l Client: 客户端软件用户和 peer 交互,通常是 Docker 或者 HTTP client.
l 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 服务器下载更加快。