对象存储(Object Storage,以下简称 OS)除了存文件、托管静态网站之外,对于独立开发者或超级个体来说还有一些特殊用途,可以帮我们省一大笔钱,让我们细细道来。
OS 的用途
常见用途
对象存储最常见的用途就是存储文件。视频、图片、文档等,这个就不多说了,很基础。
另外一个重要的用途就是静态页面托管。准确的说是 Web 前端静态文件托管,因为现在的主流 Web 架构都是前后端分离的,前端和后端分开独立部署。
用 OS 作为前端部署的服务,已经是目前业内的最佳实践。而且这件事无论对于大厂还是个人开发者,成本和复杂度完全是相同的,所以独立开发者也完全可以采用这种技术方案。
下面要说的才是重点,是专门针对独立开发者和超级个体来说的特殊用途。
特殊用途
因为独立开发者需要快速、不断的开发新产品,期待其中有一款能够跑出来,所以其特点是:
产品多,数据少,对性能、稳定性、安全性的要求不高。
也就是说,快速、低成本地开发一个产品,是独立开发者最关注的刚需,其它的可以往后排。
OS 恰好可以满足这个需求,因为它可以临时充当多种服务:csv 文件模拟临时数据库
、存储第三方 access_token
、定时记录数据
……
为什么不用 SQL、Redis?当然是因为便宜!
有多便宜呢?
每年不到 10 块钱,就问你香不香。
你随便搞个云数据库、云服务器什么的,每个月没有几百块根本下不来,注意是每个月。这么一对比,是不是都不用比了。
使用注意
- 做好封装:把 csv 文件作为数据库使用的时候,代码写的要像真的在用数据库一样,做好封装,这样方便后续的切换;
- 并发覆盖:csv 文件可能会出现复写问题,如果情况严重,可以考虑用消息队列来保证原子性,这个我们在介绍 MQ 的时候再说;
- 存储格式:存储第三方 token 的时候,推荐用 json 文件,因为通常都是 API 的返回值;
- 角色权限:通常 OS 都会搭配其它云服务使用,比如云函数(FaaS)、云工作流(Workflow)等,在使用的时候一定要注意给这些产品添加
操作 OS 的权限
,否则会报错。
所以,如果你是一个个人开发者,OSS 一定是必备技能。
对象存储简介
注:以下算是扫盲部分,对 OS 有了解的同学,可以跳过。
对象存储的本质是一个 key-value 的文件存储服务,每个文件对应唯一的一个标识,这个标识可以自定义。
下面简单介绍几个相关概念:
概念介绍
Bucket 桶
Bucket 就类似 Windows 系统的磁盘分区(C 盘、D 盘),里面可以放各种文件和文件夹。
需要注意的是,虽然在页面操作的时候,我们可以创建文件夹,但其实文件的存储并不存在层级结构,完全是打平的。它的 key 只是把路径拼上了的一个长串字符串而已。这么做,纯粹是为了适配我们习惯。
权限控制
在使用 Bucket 的时候,访问权限的配置一定要注意。我曾经就因为这个,卡 bug 卡了 1 天……
通常,Bucket 的读写权限默认都是私有的,需要用内网,而且
如果作为 Web 前端的托管,那么是一定要 开启公网访问
的,而且要把访问权限改成 公共读
,否则网页访问会出错的。
网站托管
这个功能很有用。如果采用前后端分离的方式,前端部署用 OS,后端 API 用 FAAS(云函数),几乎可以做到 0 成本做网站。
使用起来很简单,只要指定入口文件就可以了,这里就不展开了。
只是注意前面权限控制当中提到的公共读
问题即可。
另外,前端项目的路由最好采用 Hash 模式,否则刷新页面可能出现异常情况。
结语
说了这么多,其实 OS 最大的作用就是:
省钱!省钱!省钱!
作为独立开发者,一定不要拘泥于技术束缚,要多解锁它的新姿势。
PS:最近研究 AI 生文,搞得正经文章都有点不会写了,得调整调整。