目的:由于二八定律的存在,总是少数人在创造内容而大部分人在消费内容,所以脸书的请求的大头是读求取,因此脸书的工程师需要对读请求进行特别的优化。利用缓存来减低数据库的读压力。
读写操作示意图
减少延迟
1.利用批处理减少往返次数。 服务器端对收到的一堆请求进行有向拓扑图分析,选出独立的请求,将多个独立请求进行打包,进行访问。Batching也是降低成本的常见技巧
2.其中get是使用UDP进行通讯,只要set和delete才是使用可靠的TCP通讯。UDP的通讯成本显著低于TCP,因为UDP不需要提前建立连接,也没有诸如拥塞控制,重连等机制。失败的UDP通讯被当成Cache miss来对待,对应的数据请求会重新传达给数据库
3.为了避免整个系统内进行的并发请求数过高,以及单个的实例可能成为热点,Memcache自己在连接的客户端上设置了类似TCP的拥塞控制的方法,也就是一个滑动窗口。
后面懒得记录了,看下面的阅读笔记。。。
参考资料:
阅读笔记:Scaling Memcache at Facebook - 知乎