诗与远方

Cassandra 2.x中文教程(5):理解架构之配置`Cassandra`的关键组件 [转载]

序言:有几天没有查看Cassandra的官方网站,发现在2014年8月25日的时候Cassandra最新稳定版已经更新为2.0.10,故屁民瑞威修改了部分章节,经过测试,前几篇文章依然适用于2.0.10版本,本节开始将适用最新稳定版本2.0.10,如官方发布新版本,从写那篇文章开始更新为最新版本。

前一节《Cassandra 2.x中文教程(4):理解架构之架构简介》中我们已经对Cassandra有了初步认识,今天我们继续了解:

Gossip

Cassandra的无元节点的设计让我们不再担心元节点的容灾问题,但是它是怎么实现的了?Gossip在这里发挥了很大的作用。简单来说,Gossip是一中P2P的通讯协议,Cassandra用它来发现并分享节点间的状态信息。Gossip的信息也被持久化到本地节点,当有节点启动的时候,这些信息就被立即使用。

Partitioner(分割器)

上面说到Gossip用来分享节点间的信息,那么节点间如何存储数据呢?这就是Partitioner(分割器)的作用。分割器决定如何分布数据到集群中,也决定了哪个节点存储第一份数据副本。从根本上讲,分割器就是用来计算分区键的令牌的函数。每个数据行通过分区键唯一确定,通过令牌的值分布到集群中。Murmur3Partitioner是新Cassandra集群的默认分区策略也是大多数情况的正确选择。对于每个节点来讲,必须设置分割器并且分配num_tokens值,分配的令牌的数量取决于硬件配置。如果不适用虚拟节点(vnodes),就使用initial_token代替。

Replication factor(复制因子)

这个词从字面意思上不难理解,就是你一份数据要存几个副本。如果复制因子是1,也就是说,每行数据只在一个节点上存储一份!如果复制因子是2,表示每行数据有两个副本,并且这两个副本是存储在不同的节点上。(这样的话挂了其中一台也没有关系,当前要看你的节点数和复制因子数)。 所有的副本都是同样的重要,没有主次之分!可以为每个数据中心定义复制因子。通常情况下应该设置复制策略大于一,但是不能超过节点数。

Replica placement strategy(副本存储策略)

Cassandra存储数据的副本到多个节点以保障可靠及容错能力。复制策略决定了副本存储到哪些节点。第一份数据副本就是第一个拷贝,当然这个不能断定。NetworkTopologyStrategy是大多数部署时高度推荐的方案,因为这个在你需要扩展的时候可以非常方便的扩展到多个数据中心。当你创建了一个keyspace的时候,你必须定义副本的放置策略和需要的副本数。

Snitch(告密者?)

Snitch定义了数据中心和机架(拓扑上)上的一组服务器,这些服务器用于复制策略以便如何存储副本。必须在创建集群的时候配置snitch。所有的snitch使用动态snitch层监控节点性能并选择最好的副本用于读取操作。这个功能是内建的并推荐大多数情况使用。配置动态snitch阀值可以在节点的cassandra.yaml配置文件找到。

The cassandra.yaml configuration file(cassandra.yaml配置文件)

这个是配置集群初始化属性、表的缓存参数、调优和资源利用率属性、超时设置、客户端连接、备份和安全的主要配置文件。

默认情况下,节点用于存储数据的位置配置在cassandra.yaml里面。

安装包方式:/var/lib/cassandra
tar方式:安装位置/data/data
在生产环境下,可以把commitlog-directorydata_file_directories放到不同的磁盘驱动器。

System keyspace table properties(系统keyspace表属性)

你可以通过编程方式或CQL类似的客户端应用程序按照每个keyspace或每个表方式存储配置属性。

以上就是配置Cassandra 2.0.10 的关键组件。

参考:Cassandra2.0官方文档。

原文地址:http://pimin.net/archives/153