架构师训练营 - 第五周 - 作业二
Buffer vs Cache
参考自知乎 https://www.zhihu.com/question/26190832
Buffer(缓冲区)是系统两端处理速度平衡(从长时间尺度上看)时使用的。它的引入是为了减小短期内突发 I/O 的影响,起到流量整形的作用。比如生产者——消费者问题,他们产生和消耗资源的速度大体接近,加一个 buffer 可以抵消掉资源刚产生/消耗时的突然变化。
Cache(缓存)则是系统两端处理速度不匹配时的一种折衷策略。因为 CPU 和 memory 之间的速度差异越来越大,所以人们充分利用数据的局部性(locality)特征,通过使用存储系统分级(memory hierarchy)的策略来减小这种差异带来的影响。
由此可知,Buffer 类似消息队列,来避免突发流量导致消费方被压垮;Cache 类似缓存服务,应用读取缓存而非数据库来提升速度。
一致性 hash 算法 vs 虚拟节点一致性 hash 算法
一致性 hash 算法使用 hash 环,节点 hash 出一个 1~2^32-1 之间的数字,根据 key 的 hash 值计算出放在哪个节点上。
如果节点数不足,会导致数据分布不均匀的问题;通过给每个节点虚拟出 n 个虚拟节点的方法,可以有效让 key 分布更加均匀。
评论