so2bin

青山一道同云雨,明月何曾是两乡

OCI镜像规范

资料

OCI镜像格式标准

https://www.rectcircle.cn/posts/oci-image-spec/
https://github.com/opencontainers/image-spec

  • OCI定义了镜像的格式规范:即镜像的文件和目录结构,相关的配置协议格式等;
  • 如下图为一demo示图:
    OCI Image
阅读全文 »

资料

特点

  • 镜像lazy加载,按需下载镜像blob数据,容器启动速度更快;
  • blobs级别的镜像数据去重,节省空间;
  • 提供用户态文件系统Fuse,兼容OCI分发标准,和artifacts标准(lazy加载就是基于该fuse实现);
  • 支持镜像存储backend,镜像数据可以放registry或对象存储上;
  • 与Dragonfly P2P系统集成;
阅读全文 »

资料

这项目名字取的好,按阿里武侠的风格,应该翻译为技能:飞龙在天

价值

  • 提供集群内的P2P文件分发能力,可以用于加速文件分发和镜像分发,源支持OSS, S3等云存储类型,也支持OCI镜像仓库;
  • 组件间通信协议为GRPC;
  • 可以与nydus结合,作为containerd与nydus的中间层,为集群提供nydus镜像格式的文件加速分发和加速镜像启动,如下图所示:

(df-nydus-arch

架构

  • 如下图所示,为其架构图:
    df arch
  • dragonfly包含的核心三部分:Manager, Schduler, Seed Peer以及Peer组成的P2P下载网络,Dfdaemon可以作为Seed Peer和Peer;
  • Manager:维护P2P集群的关联关系,动态配置,用户态以及权限管理;
  • Scheduler:为下载节点选择最优下载父节点,异常情况控制Dfaaemon回源;
  • Seed Peer:Dfdaemon开启Seed Peer模式可以作为P2P集群中回源节点,即整个下载的根节点,与后端存储/镜像仓库交互;
  • Peer:通过Dfdaemon部署,基于C/S架构,提供dfget命令行下载工具和dfget daemon运行守护进程,提供任务下载能力;
    df-flow

加速对象存储

Dfdaemon

代码入口:

  1. Makefile docker-build-dfdaemon
  2. build/images/dfdaemon/Dockerfile
  3. RUN make build-dfget && make install-dfget

    RUN if [ "$(uname -m)" = "ppc64le" ]; then \
    wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-ppc64le; \
    elif [ "$(uname -m)" = "aarch64" ]; then \
    wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-arm64; \
    else \
    wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64; \
    fi && \
    chmod +x /bin/grpc_health_probe
    COPY --from=builder /opt/dragonfly/bin/dfget /opt/dragonfly/bin/dfget
    COPY --from=health /bin/grpc_health_probe /bin/grpc_health_probe

    EXPOSE 65001
    ENTRYPOINT ["/opt/dragonfly/bin/dfget", "daemon"]
  4. cmd/dfget/cmd/daemon.go
  5. client/daemon/daemon.gocd.ProxyManager.IsEnabled()

资料

背景

  • 云原生拓荒者-Netflix: 性能Performance,扩容Scalability,可用性Availability
  • 提升可用性(反脆弱性),可通过 弹性处理局部故障:
  • 快速失败(fail fast)与故障转移(failover):超时并重新请求,将流量调度到其它副本
  • 优雅降级:所有副本都出现故障时,熔断上游服务,当前应用以降级形式继续提供服务
  • 金丝雀发布:变更是导致脆弱性的重要原因,任何形式的上线新版本都应该基于灰度部署
  • 将服务治理下沉到基础设施中:service mesh
阅读全文 »

概念

分布式服务治理

  • 服务治理:对服务不断增长的复杂度的管理与管理
  • 服务拓扑变化,网络,安全
  • API网关,服务发现,服务容错,部署,调用,追踪
阅读全文 »
0%