[Distributed Cache] 增加或者删除节点

当一个新的机器加到这个consistency hashing的ring上,其他节点会主动把它需要的那部分数据发给它吗,还是等它自己慢慢缓存起来?

1)节点发: 这样感觉比较复杂,需要一个机器告诉各台机器发哪一部分数据给新机器
2)慢慢自己缓存:这样一开始会有大量miss
3)可能各个机器都会写log,然后根据log, fill这个机器的缓存,这样控制方便比1简单,但是应该感觉需要很长时间(分钟级别)

当一台机器fail了,又是谁负责把它的那一部分数据传到别的node上呢?

而且同样的问题也适用于distributed KV store,区别是缓存我们可能还可以接受慢慢fill data, 至少可以fallback到数据库;数据库就不行

这个新加入的节点会问其他节点要所需要的信息,并且所有节点会达成新的共识(每个节点负责哪个hash range)。

可以用Gossip 快速加入到consistent hashring里。 一般自己慢慢catch up 也很快, 不需要其他机器根据新的hash 来提前告诉新加入的host需要负责的cache values。