这是个思维目录
- 开发需求
- 业务流程梳理
- 服务器端和客户端心跳
- 客户端Docker环境更新
- 开发任务分解
- 开发记录
- 断点续传
开发需求
今天处于项目需要,需要开发一个Docker镜像推送同步的模块.
具体的需求如下:
服务器端维护需要推送的Docker镜像,并且可以对其进行任意修改.
当镜像版本趋于稳定的时候,服务器端可以通知各个客户端来拉取新版本的镜像.
客户端可以选择更新镜像或者不更新,不更新的话,部分新版镜像下使用的功能无法使用
客户端在下载镜像的时候需要可以断点续传,并且下载完Image后,自动上传到客户端之后定的Docker容器中,并进行版本更迭
业务流程梳理
服务器端和客户端心跳
客户端Docker环境更新
开发任务分解
- 现有平台基础上,记录Docker环境版本信息并维护
- 服务器端和客户端心跳交互,并自动记录全部可用服务器
可以看到除去心跳部分,实际上大部分的工作其实都是客户端的
开发记录
任务基本上就是这些,还没开始具体设计过程中可能会用到的数据结构什么的.就先从不涉及到数据库,但又能快速实现的东西上来说吧.
断点续传
实现断点续传,有比较关键的三点
1.操作文件的时候使用 RandomAccessFile
,该对象提供的方法可以让我们自由定位当前的游标位置
2.请求文件的时候需要定义好请求的数据区间
3.需要临时文件随时记录当前已经写好的数据下标
另外还有就是尽可能不要在下载的时候使用多线程,可以这么做,但是对于游标的处理会更加复杂,不及建议一开始就这么处理,先处理好单线程下载,在考虑多线程的情况
2021-04-08 补充 其实多线程没什么必要,代码不设定传输速度限制的情况下,一般都会跑到最大网速,多线程反而不会提高速度.嗯,如果是多源下载另说,但是就模块需求来说,目前只存在单源下载的情况
具体实现放明天了