master slave vs gossip

Cassandra 和 Big Table 比, 一个用 Gossip 一个用 master slave

  1. 为什么cassandra 要用 gossip 的方法传递讯息呢?
  2. gossip 和 master slave 之间的 trade off 可以说一下吗?

从服务器网络构型 (Network Topology) 角度上来讲,也就是 DB client 怎么跟 DB server 沟通,Cassandra 使用 Gossip 来传递服务器网络的 metadata (注意是传递 metadata 而不是数据库存储的数据本身)。BigTable 使用 Chubby (类似 Zookeeper) ,一个带 Paxos consensus 的 distributed lock service 来记录服务器网络的 metadata。Cassandra 在网络构型 metadata 传递机制机制上要较 BigTable 更不 Consistent,这是一个性能和一致性的 tradeoff。
从数据备份角度上来讲,Cassandra 使用 next node 作为备份存储,Bigtable 使用的并不是 Master-slave (source),而是 master-master。Master-master 相对于 master-slave 而言,“写” QPS 支持更高,但一致性更差,因为 master-slave 架构下只有 master 能支持“写”。
如之前所说的,gossip 讲的是 metadata 如何在服务器网络中传递, 而 master slave 说的是数据本身如何备份,两者不是同一个层面上的概念。

请问从数据备份的角度来说,master-slave和master-less的tradeoff如何考虑呢?现在industry主流的方式是哪种?谢谢

两者都可以做数据备份,区别在于写的时候,master-slave 只能写唯一的一台 master, master-less 每台都可以接受写。Tradeoff 的时候考虑写的性能和一致性。masterless 写性能强,但一致性保证弱一些。Master-slave 比较传统一点,master-less 跟 NoSQL 一样都是比较新的,业界都会用到,还是看需求。

请问master-master什么时候用呢?和master-slave的主要区别是什么?

区别请看上面的回复。Master-master 适合在一致性要求低但可用性要求高的时候使用。

master-mastery应该是数据中心备份的时候用的比较多 一致性比较差 容易冲突