遍历对比不同版本的压缩包里的文件,挑出不同的做差分包,该如何高效实现?
发布于 6 年前 作者 bi-kai 2523 次浏览 来自 问答

项目组用java开发软件,发布的软件包内文件数量为10w级别,包大小1GB级别。现在需要做不同版本间的差分,实现跨版本的覆盖升级,具体描述: 新版本发布后,与旧版本做对比,将新增和修改的文件,提取出来,作为从旧版本向新版本升级的差分包

说明:有些文件,比如jar,新打包会被追加时间戳,内容可能与旧版完全一致,所以不能简单的比对md5,需要比对里边的class文件。

疑惑的功能点:

  1. 遍历发布包里的压缩包和jar中的文件,最好不解压,直接能读取文件信息,如文件内容或者计算md5,不知道这个功能有没有现成的模块? – 目前查的模块只能遍历压缩包里的文件名
  2. 对比压缩包里的文件和独立的文件,最好不开关文件读内容,这样效率低,大部分文件可以通过md5完成对比;
  3. 关于性能:10w个文件希望半小时内完成比对;

关于性能的考虑,我想这样实现:

  1. 生产者:通过一个node进程分析整体的包,遍历文件,将文件路径写入redis;
  2. 消费者:多进程并行取文件路径,独立比对处理; 不知道大家是否有更好的方案?
回到顶部