

























业务的图片、文档等信息存储在对象存储服务器,调用S3的sdk,通过rest接口把文件存储到服务器。公司之前用的ECS的存储服务器,为了国产化,需要改成腾讯的COS对象服务器。
改造的方案
1.双写到两个服务
2.降级读,如果在cos里面读不到,就到ecs里面读
3.对象迁移,把ecs里面存储的对象,迁移到cos服务器里面
改造过程中也遇到一些问题
1.微服务组件太多,容易改漏。感觉这种应该有个服务收口,对外提供对象存储服务,不管内部实现,后面只要改造这个服务就可以了。也不会改漏,不用改其他微服务。问了下deepseek这种比较像适配器模式,也是依赖倒置思想的一种体现,也是一种防腐手段。
2.迁移过程中,存储的桶和对象名,保存在关系型数据库tdsql里面,tdsql是腾讯的一个分布式关系型数据库。开始以为只有一张表,一个桶,后面发现有多个桶,多个表。项目是java开发的,后面使用了模板设计模式+工厂模式,定义接口或者抽象类。用spring的bean容器,获取所有的实现类对象,调用对应的方法。后面新增表,新增实现类就可以了,不用修改其他代码
3. 因为有多个桶,每个桶有权限控制。只能对应桶的用户才能读取,项目有个工具比较好用,可以搜全量代码。把搜索结果通过IM工具消息发送结果给你,把每个桶的用户信息都可以搜到,不用每个组件代码,下载到本地再看
4. 没有使用统一组件提供的微服务,导致重复代码很多。修改维护成本很大
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。