每天百万次访问请求的缓存数据丢失的解决方案
来源:互联网 发布:如何备案域名 编辑:程序博客网 时间:2024/06/03 18:43
今天看了一篇微信公众号的文章讲解了eBay在解决缓存数据丢失的时候曾经思考的三种解决方案。
在当前比较常用的缓存数据库中,比较常用的有redis和mongodb。不论是redis还是mongodb,在其内部数据都是以json格式进行存储的。这两个数据库在数据量的级别不同的时候,缓存的性能也存在差异。所以也不能简单说redis和mongodb到底哪个好。
可以支持百万级/天的访问量已经相当不容易了,这里先暂时不讨论怎么达到百万级的访问量。
缓存数据库中其实是有一定的容量限定的,当容量达到一定的限度就会按照某种策略删除一部分数据;另外,缓存的时间也是有限制的,当超过设定的时间之后,也会删除缓存的数据。另外,我认为缓存的时候,有数据丢失也可能是因为网络拥塞或者数据库的io问题导致的。
为了解决缓存数据丢失问题。eBay团队的成员想了3个解决办法:
(1)对mongodb中存储的数据进行切片
当在mongodb中存储新数据的时候先对数据进行切片处理。这样做的好处是可以减少单一mongodb中心节点的写入次数和网络开销。但是这种方式最终被否认了,因为切分之后,写入数据的速度的确变快了,但是查询数据的时候又需要把之前切分的数据整合起来,这个时间开销可能比直接不切分数据的时间总开销还大。所以这种方法相当于拆东墙补西墙,最终还是不能完美的解决问题。
(2)有选择的写入
eBay团队想出的另一个办法就是:只针对当特定值发生变化的时候,才启动写操作。这种想法从一定程度上缓解了io压力,但是mongodb中可以在更新的时候插入一个新的字段,如果是这种方式,那么最终却会更新整个文档,如果是这样,这个办法也是不可行的。
(3)压缩传输数据
这个办法可以减少存储的数据量的规模,也可以从一定程度上降低网络的开销,还不用修改业务逻辑,应该是一种非常好的解决办法了。
- 每天百万次访问请求的缓存数据丢失的解决方案
- RAID5崩溃数据丢失的解决方案
- javascript 缓存请求的数据
- 本地数据访问的解决方案
- 远程数据访问的解决方案
- 本地数据访问的解决方案
- 远程数据访问的解决方案
- 远程数据访问的解决方案
- 一个字符串拷贝的百万次测试
- ok请求数据三级缓存的使用
- 大数据IMF传奇行动 Spark pi 例子计算 解析 百万次的运算
- 如何构建一个每天数十亿次请求级别的web应用?
- 如何构建一个每天数十亿次请求级别的web应用
- ajax跨域请求数据的解决方案
- $.ajax跨域请求数据的解决方案
- $.ajax跨域请求数据的解决方案
- ExtJS 4.1 下 TreePanel 的异步(分次)数据请求
- 请求图片从缓存中获取的解决方案
- IAR for STM8介绍、下载、安装与注册
- TCP 3次握手 四次分手 最简单表示
- Mysql索引的优化(1)
- 30分钟学会如何使用Shiro
- iOS内购(IAP,In App Purchases-在APP内部支付),设置及使用
- 每天百万次访问请求的缓存数据丢失的解决方案
- POJ 1201 Intervals(差分约束系统)
- 剑指offer-删除链表中重复的结点
- layer移动端案例
- git代码提交
- IntelliJ IDEA + tomcat 设置热部署
- hdu6181次短路
- 关于Java中集合:List,Set ,Map,整理
- UnityShader实例04:遮挡透明材质