Scaling Memcache At Facebook
1.需求/特点
需求:
特点:读多写少
2.综述
使用旁路更新
Region级别的主从复制:Region包含多个前端集群,本身可能时跨机房的
在系统的发展中,我们将这两个重大的设计目标放在首位:
1. 只有已经对用户或者我们的运维产生影响的问题,才值得改变。我们极少考虑范围有限的优化。
2. 对陈旧数据的瞬态读取,其概率和响应度类似,都将作为参数来调整。我们会暴露轻度陈旧的数据以便后台存储和高强度负载绝缘。
1. 只有已经对用户或者我们的运维产生影响的问题,才值得改变。我们极少考虑范围有限的优化。
2. 对陈旧数据的瞬态读取,其概率和响应度类似,都将作为参数来调整。我们会暴露轻度陈旧的数据以便后台存储和高强度负载绝缘。
集群中:负载和延时
延时:主要优化client:串行化、压缩、请求路由、错误处理以及请求批处理,客户端维护着一个对所以可获得的服务器的映射,对这个映射表的更新需要通过一个辅助的配置系统。
批量并行请求:
使用代理处理映射关系
拥塞控制:滑动窗口
减少负载:同一个key miss时,使用token,确保同时已有一个client 更新
局部失败:备用机器接管服务
Region:复制
失效:批量失效
缓存的范围:每个cluster和Region中是否需要缓存,主要考虑数据的特点
冷集群的加载:复制其他集群数据
跨地区一致性
主region写:守护进程失效,前端更新
非主region写:标记可能失效,读到主region,写到主region写,依赖于数据库同步完成时的commitlog失效数据
单个服务器提升
提前分配资源:固定大小的hash
slab:
尽快回收资源:临时条目