很多场景下, 我们需要接收客户端大量的数据上传, 举个栗子:GPS点汇集成的线路信息. 我们假设上传数据用的json格式, 按照 [[经度, 纬度, 高度, 速度, 时间戳]...]的格式传输, 一段数据的例子如下:
[13.361389,38.115556,1200,15,1506393380] 长度为40, 按照UTF8的编码的话占40Byte
如果按照每10米一次记录, 那么一次标准马拉松赛事的长度 42.195公里会产生4220条记录, 那么整个这条数据的大小在164KB左右, 如果再附加心率, 步数, 步频等数据的话, 体积还会更大.
大量的上传文件会产生很多的IO wait, 造成系统负载急剧增高, 如果和Web主进程放到一起, 会严重影响系统的吞吐量. 我们可以将上传拆分开用独立的服务器来负担, 但是一是会每月多出几百元的服务器和带宽的开销, 而且上传的服务器全在跑IO上了, CPU几乎空闲, 太浪费, 如果在上传的机器上部署点其他的东西又会让运维变得复杂起来. 同时呢用XX云的VPS负载上传并不高效, 因为Nginx对上传文件的缓存还是通过写入磁盘系统来处理的, 但是VPS的磁盘性能比真实的磁盘低了一个数量级, 但是如果把缓存目录放到映射的内存FS, 有可能因为大量的上传导致撑破内存. 左右为难之际, 其实我们可以用三方的云服务来化解难题.
下面就是用七牛云行桃代李僵之计的一种方案.
七牛代理上传文件这个方式处理上传的所有难题都交给了七牛云, 然后如果上传的量很大的话, 七牛有很多的服务器来负责处理, 不会因为量大造成速度变慢, 无法响应等等问题.
这都连续两次给七牛云打广告了, 没有广告费... 所以再给大家一个省钱秘籍好了.
七牛是有免费额度的, 规则如下
七牛的免费额度也就是说一个帐号有免费10G, 10W次上传次数 100w次读取次数的能力, 其实系统对于存在哪个七牛帐号并不关心, 所以我们可以发动公司所有人, 都去注册七牛帐号, 然后让系统统一管理, 如果公司10个人每人注册一个帐号, 就有了 100G存储, 每月100W次上传次数.
蚊子腿的肉也是肉, 这个免费额度支撑你拿到天使轮融资绰绰有余了.
恭喜发财
网友评论