这是个思维目录

  • 开发需求
  • 业务流程梳理
  • 服务器端和客户端心跳
  • 客户端Docker环境更新
  • 开发任务分解
  • 开发记录
  • 断点续传


开发需求

今天处于项目需要,需要开发一个Docker镜像推送同步的模块.
具体的需求如下:
服务器端维护需要推送的Docker镜像,并且可以对其进行任意修改.
当镜像版本趋于稳定的时候,服务器端可以通知各个客户端来拉取新版本的镜像.
客户端可以选择更新镜像或者不更新,不更新的话,部分新版镜像下使用的功能无法使用
客户端在下载镜像的时候需要可以断点续传,并且下载完Image后,自动上传到客户端之后定的Docker容器中,并进行版本更迭

业务流程梳理

服务器端和客户端心跳

docker 不支持cnpm docker 不支持断点续传_docker 不支持cnpm

客户端Docker环境更新

docker 不支持cnpm docker 不支持断点续传_客户端_02

开发任务分解

  • 现有平台基础上,记录Docker环境版本信息并维护
  • 服务器端和客户端心跳交互,并自动记录全部可用服务器




可以看到除去心跳部分,实际上大部分的工作其实都是客户端的

开发记录

任务基本上就是这些,还没开始具体设计过程中可能会用到的数据结构什么的.就先从不涉及到数据库,但又能快速实现的东西上来说吧.

断点续传

实现断点续传,有比较关键的三点
1.操作文件的时候使用 RandomAccessFile,该对象提供的方法可以让我们自由定位当前的游标位置
2.请求文件的时候需要定义好请求的数据区间
3.需要临时文件随时记录当前已经写好的数据下标

另外还有就是尽可能不要在下载的时候使用多线程,可以这么做,但是对于游标的处理会更加复杂,不及建议一开始就这么处理,先处理好单线程下载,在考虑多线程的情况

2021-04-08 补充 其实多线程没什么必要,代码不设定传输速度限制的情况下,一般都会跑到最大网速,多线程反而不会提高速度.嗯,如果是多源下载另说,但是就模块需求来说,目前只存在单源下载的情况

具体实现放明天了