很多场景下, 我们需要接收客户端大量的数据上传, 举个栗子: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, 有可能因为大量的上传导致撑破内存. 左右为难之际, 其实我们可以用三方的云服务来化解难题.
下面就是用七牛云行桃代李僵之计的一种方案.
![](https://img.haomeiwen.com/i7809593/1f83df9e7f4584ce.png)
这个方式处理上传的所有难题都交给了七牛云, 然后如果上传的量很大的话, 七牛有很多的服务器来负责处理, 不会因为量大造成速度变慢, 无法响应等等问题.
这都连续两次给七牛云打广告了, 没有广告费... 所以再给大家一个省钱秘籍好了.
七牛是有免费额度的, 规则如下
![](https://img.haomeiwen.com/i7809593/097e7711fabcf51a.png)
也就是说一个帐号有免费10G, 10W次上传次数 100w次读取次数的能力, 其实系统对于存在哪个七牛帐号并不关心, 所以我们可以发动公司所有人, 都去注册七牛帐号, 然后让系统统一管理, 如果公司10个人每人注册一个帐号, 就有了 100G存储, 每月100W次上传次数.
蚊子腿的肉也是肉, 这个免费额度支撑你拿到天使轮融资绰绰有余了.
恭喜发财
网友评论