# 存储优化
本文作者:程序员飞云
存储优化包含如下几个方面
- 存储空间优化
- 存储成本优化
- 存储安全优化
- 存储可用性优化
- 存储可靠性优化
- 存储性能优化
# 存储空间优化
结合个人的飞云生成器项目为例:
# 1. 文件压缩
自主压缩:项目里面用户上传模板文件时候必须要进行压缩,下载代码生成器的也是对应的压缩包,制作代码生成器的时候我们也是返回的压缩包。
平台压缩:以腾讯云为例
可以看到里面有多种方式能够帮助我们进行图片,文件压缩,缺点是要钱。
# 2. 文件瘦身
在进行制作模板的时候,里面增加了文件瘦身功能,就是将一部分无关的文件移除掉,只保留有效的文件,能够大大减少文件占用。
# 3. 文件清理
使用XXL-JOB
分布式任务调度系统来实现定时删除文件。
# 4. 文件去重
可以采用MD5判断上传的文件内容是否相同,如果相同,那么就采用之前的文件,而不用上传新的重复文件,但是此处比较难以处理。
# 存储成本优化
以腾讯云COS为例 COS 成本优化解决方案 (opens new window)
以下是对于腾讯云COS成本优化的总结
# 1. 选择合适的存储类型和业务领域
# 2. 数据沉降
对于大部分数据而言,其访问热度一般随着存储时间延长而降低,因此,企业需要根据业务数据访问模式的变化,调整数据存储类型,以便控制业务成本达到最佳状态。
- 分析访问模式
通过清单,日志等方式来自主实现数据沉降,将不常用的数据存放到其他地方或者修改存储模式。
- 使用生命周期
可以在基础配置的文件管理里面开启生命周期,让系统帮助我们将不使用的文件移到成本更低的低频存储里面去。
# 3. 文件压缩
可以自主实现文件压缩或者采用腾讯云的COS压缩策略。
# 4. 减少访问
以个人项目代码生成器为例,虽然我们将产物包放在了腾讯云,并且也进行了压缩等等配置,但是一旦用户请求量多,成本也会高起来,所以采用了多级缓存,将部分热点数据文件存放在本地,这样就能减少部分成本。
# 存储安全性优化
# 官方建议
# 1. 采用KMS白盒密钥
KMS 白盒密钥用于保护端上的敏感根密钥信息,例如 API SecretKey、用户内部系统使用的鉴权密钥或 token、其它本地敏感根密钥信息等,实现全链路无敏感密钥信息明文。将算法与密钥进行混淆融合,以查找表的形式有效保护密钥信息,在不暴露任何密钥的情况下实现加密与解密,并通过设备绑定的方式进一步确保密钥的安全。
# 2. 权限隔离
限制使用者的权限,授权 CAM 用户可以在哪种条件下,通过哪种方式对哪些资源进行哪种操作。
# 3. 对象锁定
对于一些核心敏感数据,如金融交易数据、医疗影像数据等,可通过对象锁定功能来防止文件在上传之后被删除或者篡改。配置对象锁定功能后,在配置的有效期内,存储桶内的所有数据将处于只读状态,不可覆盖写或者删除;此项操作对包括主账号在内所有 CAM 用户及匿名用户生效。
# 4. 数据灾备
腾讯云 COS 提供了包括数据加密、版本控制、存储桶复制和生命周期等多种功能在内的数据管理能力支持。敏感文件可通过加密功能保障数据读写安全;通过版本控制和存储桶复制实现异地容灾,进一步保证数据持久性,确保数据误删或者被恶意删除时可从备份站点恢复数据;通过生命周期进行数据沉降和删除,减少数据存储成本。
版本控制:所有同名文件的写操作都会视同新增不同版本的同名文件,删除操作等同于新增一项删除标记;可通过指定版本号访问过去任意版本的数据,可实现数据的回滚操作,解决数据误删和覆盖的风险。
存储桶复制:帮助用户将所有增量文件通过专线复制到其他城市的数据中心,实现异地容灾的作用。
冷备份:用户也可以通过生命周期功能将一些备份数据沉降至低频或者归档存储等更便宜的存储类型
# 安全管理
# 1. 跨域设置
# 2. 防盗链设置
只允许特定范围内的域名访问