笔记 MIT6.824 Lecture 16: Cache Consistency: Memcached at Facebook

前言

主要讲了cache在大型系统中的应用,涉及到了performance以及consistency

一、web application architecture

架构1
开始单个server,front end, back end, DB
但是访问量增加CPU的处理能力就会有瓶颈

架构2
多个前端servers, 一个后端/DB
但是后端单个server对着访问量的增加会遇到满载的瓶颈

架构3
多个前端/后端servers,DB有了sharding
但是由于DB本身的原因,其实每秒的读写速度并不快,由于读很多,很快就有瓶颈了,而且增加DB server成本也会很高

架构4
多个前段/后端/DBservers,在中间有有Memcache sever做reads
在这里插入图片描述
Consistency NOT important second by second, as long as it is consistent in minutes
但是有一个特殊的情况,就是如果是user改变的data,user必须立即看到最新的data

二、Regin

West(Primary) and East(secondary)

Primary 就是所有写的操作都是在这里进行,然后log同步到secondary

三、读写操作

Read
V = get(k)
If v is nil
V = fetch from DB
set(k, v)

Write
write(k, v)
Send k, v to DB
delete (k)

四、performance

Performance
提高performance的方法有两种
Partition

  1. More memory efficient
  2. Not good for hot keys
  3. Clients talk to many mc servers - overhead

Replication

  1. Good if few keys are very popular
  2. Few TCP connections
  3. Less total data can be cached

为什么要complete replication?
– 可以不用跨区获取data,提高对读的速度
– 防止crash

五、In one regin

在一个regin中,db是shard的

需要smaller cluster
如果有hot key,可以通过并行分流
小的cluster可以减少TCP的数量,提高速度

Cluster之间有regional pool共享data

如果新的cluster加入,这会马上增加DB的read,解决这一问题就是先读其它的cluster的memcached缓存,这个叫做cold mode

问题
如果有一个hot key有大量的server在读,有一个server修改了hot key,导致memcached缓存的值被删除了,这样大量的server就会往DB发送请求,读取同一个数据
办法
使用lease,如果第一个发现缓存没有,会找DB,同时在缓存加一个lease,这样其它request过来就不会直接读取数据库,lease会让这些请求等待

六、Consistency

Consistency
Race

k not in cache
C1 get(k), misses
C1 v1 = read k from DB
C2 writes k = v2 in DB
C2 delete(k)
C1 set(k, v1)
now mc has stale data, delete(k) has already happened

解决
使用lease

总结

– 考虑Caching的使用,尤其是对于huge throughput
– partition以及replication都可以提升性能

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值