开发笔记 2021-04-07

开发需求

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

业务流程梳理

服务器端和客户端心跳

客户端和服务器端心跳通信的简单流程设计

客户端Docker环境更新

在这里插入图片描述

开发任务分解

  • 现有平台基础上,记录Docker环境版本信息并维护
    • 从服务器端获取镜像文件并放到服务器端的文件服务器
  • 服务器端和客户端心跳交互,并自动记录全部可用服务器
    • 客户端上线,向服务器端发送自己的信息,之后每隔一段时间发送心跳
    • 服务器端记录每个新上线的客户端,定期监测心跳,并将无用的下线
  • 客户端断点续传下载新版镜像文件
  • 客户端下载完成后,自动上传到容器,并更新现有的环境(现有环境中可能存在正在运行的任务要注意)

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

开发记录

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

断点续传

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

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

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

具体实现放明天了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值