有许多节点,每条数据会在其中的若干的节点上面存有副本。每个节点都可以单独处理更新请求,每个节点定期和其他节点同步状态,如此一段时间之后所有的副本都会趋向一致。
核心:
去中心化 (容错性)
能够容忍任何节点的失效和网络隔离
节点之间完全对等
节点:
每条数据有若干副本分布在若干节点上
节点可以单独处理请求
每个节点定期和其他节点同步状态
所有数据副本在一段时间后将一致
问题:
怎么开始开始同步
什么时候开始同步
怎么交换数据
Gossip的特点:
在一个有界网络中,每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。
Gossip的缺点也很明显,冗余通信会对网路带宽、CPU资源造成很大的负载,而这些负载又受限于通信频率,该频率又影响着算法收敛的速度。
研究关注于不同约束条件下反熵协议的性能表现。
其中之一通过一种更有效的结构使用网络拓扑来取代随机选取。在网络带宽有限的条件下调整传输率或使用先进的规则来选取要同步的数据。
Gossip的节点的工作方式又分两种:
- Anti-Entropy(反熵):以固定的概率传播所有的数据
- Rumor-Mongering(谣言传播):仅传播新到达的数据
Cassandra主要是使用Gossip完成三方面的功能:
- 失败检测
- 动态负载均衡
- 去中心化的弹性扩展