概述:文中包含:迁移前后的架构对比、迁移方案、迁移中遇到的问题
公司打算将服务器从阿里迁移到腾讯,文件系统也从OSS改为腾讯的COS。
系统当前的文件存储方式是FastDfs + OSS 混合使用。所以顺带将FastDfs也迁移到COS。
当前系统中对FastDfs和OSS的使用架构
从实现方式上区分为两类服务:
使用FastDfs和使用OSS的
从调用方式上区分为三类服务:
middleware是我们自己的中间件,其中实现了三种方式的文件处理,其中FastDfs可以单独访问、common-fastdfs是一个单独的SDK
注意:FastDfs的访问路径:域名 + fdfsServer + 文件id
迁移之后fdfsServer + 文件id,成为了新的文件id,项目上根据自身情况处理路径问题
原架构有点混乱,现统一通过中间件处理文件
每个服务都新增一个文件处理工具类,有两个实现类,一个通过middleware实现,一个通过common-fastdfs实现。
middleware中提供三种方式的实现。保留common-fastdfs是因为私有化客户不进行迁移,这里主要是兼容私有化。
因为各个服务使用方式不一致,比较难以抽取。代码写完之后发现有不少内容可以抽取。但是写之前确实难以考虑到。写代码也没必要一定要一步到位,容易出bug,可以后续逐步优化。
改造后走哪个实现类都是通过配置决定的,需要回滚就直接切换配置。
一开始难以做到高复用,所以每个服务加了接口。但实际上如果把工具类抽取到中间件,会少很多代码量,维护也方便。这个要根据项目自身情况而定。我的项目中就不是很适用。
开发过程中,偶尔遇到常量,没有多考虑,直接硬编码在代码中,后面发现这个常量越用越多。所以一开始就应该维护好常量池。
因篇幅问题不能全部显示,请点此查看更多更全内容