Scaling Memcache At Facebook

来源:互联网 发布:关于养生之道的软件 编辑:程序博客网 时间:2024/05/16 12:25

1.需求/特点

需求:
特点:读多写少

2.综述

使用旁路更新

Region级别的主从复制:Region包含多个前端集群,本身可能时跨机房的

在系统的发展中,我们将这两个重大的设计目标放在首位: 

1. 只有已经对用户或者我们的运维产生影响的问题,才值得改变。我们极少考虑范围有限的优化。 

2. 对陈旧数据的瞬态读取,其概率和响应度类似,都将作为参数来调整。我们会暴露轻度陈旧的数据以便后台存储和高强度负载绝缘。

集群中:负载和延时

延时:主要优化client:串行化、压缩、请求路由、错误处理以及请求批处理,客户端维护着一个对所以可获得的服务器的映射,对这个映射表的更新需要通过一个辅助的配置系统。 

   批量并行请求:

使用代理处理映射关系

拥塞控制:滑动窗口

减少负载:同一个key miss时,使用token,确保同时已有一个client 更新

局部失败:备用机器接管服务

Region:复制

失效:批量失效
  缓存的范围:每个cluster和Region中是否需要缓存,主要考虑数据的特点
  冷集群的加载:复制其他集群数据

跨地区一致性

主region写:守护进程失效,前端更新

非主region写:标记可能失效,读到主region,写到主region写,依赖于数据库同步完成时的commitlog失效数据

单个服务器提升

  提前分配资源:固定大小的hash

slab:

尽快回收资源:临时条目


原创粉丝点击