Snitch决定了节点属于哪个数据中心和机架。Snitch通知Cassandra网络拓扑以便请求被有效的路由,并且允许Cassandra在服务器增加到数据中心或机架的时候能够分发副本。特别的,复制策略如何放置副本是基于新snitch提供的信息。Cassandra不会把副本放到一个机架里面(如果机架断电,那就over了)。
动态snitching
监控从大量副本读取数据的性能和选择最优的副本是基于这些历史条件的。默认情况下,所有的snitch也使用动态的snitch层监控读的延时,并且,在可能的情况下,不路由请求低性能的节点。动态snitch是默认启用的,这个也是大多数情况推荐的。
SimpleSnitch
这个选项是只有一个数据中心的时候才能用。默认情况下,SimpleSnitch是不知道数据中心和机架信息的。如果要用的话,在定义keyspace的时候就需要使用SimpleStrategy并指定复制因子。
RackInferringSnitch
这是通过机架或数据中心的IP来决定节点的位置。
PropertyFileSnitch
它也是通过机架或数据中心决定节点的位置。这个就需要自己配置cassandra-topology.properties。如果你的IP没有规则或者有 复杂的复制增加需求就可以使用这个snitch。这个snitch需要你在cassandra-topology.properties定义每个节点(有 点麻烦)。
GossipingPropertyFileSnitch
这个snitch在新增节点的时候会通过gossip自动更新每个节点。
其他还有EC2Snitch,EC2MultiRegionSnitch,GoogleCloudSnitch,CloudstackSnitch等,由于在外部共有云上,对此暂时不做研究。
转载于:https://blog.51cto.com/eric100/1759962