卡桑卓典雅眉 Cassandra.yaml

Posted 克拉克说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卡桑卓典雅眉 Cassandra.yaml相关的知识,希望对你有一定的参考价值。

当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放

关于音乐:选择这首歌完全是因为配图,黑鸭子BGM~一个专注合唱二十年的团体,虽然我想起了周黑鸭。


题注:知道Oracle给Microsoft做了一个Golden Gate for SQL吧?知道Microsoft终于开窍做了一个MS SQL for Linux吧?那你见过MAC Pro里装了一个VMFusion跑着一个Window7的虚拟机里面运行着 android模拟器的么?这些都不是重点,重点是我今天换了标题,希望浏览和留言,赞赏和赞能多一些.....


今天的重点是:

卡桑卓典雅眉 Cassandra.yaml

1.Cassandra就是少数几个可以同时安装在Linux和Windows平台下的数据库;

2.Cassandra还是为数不多的可以异种OS集群组网的数据库;

3.Cassandra可能是罕见的Windows和Linux安装配置方式一样的数据库。


这里说一下,我们通常会演示一个Cassandra的集群带两个节点,Windows节点和Linux节点组成一个简单二人转,用Nodetool -ring来秀一下肌肉,异种节点虽然是支持的,但是现实情况笔者了解到在国内大都是清一水的Linux节点。

Windows和Linux下安装Cassandra:

1.下载JDK,安装

2. 配置环境变量JAVA_HOME

3. 设置Path为JAVA_HOME\bin

4. command line: java -version 确认


一样一样滴呀!都是套路

安装结束后我们可以看到Cassandra 目录结构如下:

1. bin:存放各种可执行的脚本 Cassandra.bat,Cassandra-cli,nodetool

2. conf:各项配置信息,主要是Cassandra.yaml,Cassandra-topology

3. interface:存放thrift接口定义文件

4. javadoc:存放帮助文档

5. lib:存放运行中依赖的各种jar包


在卡桑卓典雅眉 Cassandra.yaml里面,常用配置参数很多

1. cluster_name 集群的名称

2. listen_address 监听的IP或者主机

3. commitlog_directory  commitlog的保存路径

4. data_file_directories 数据文件的存放目录

5. save_caches_directory 缓存存放目录

6.commit_failure_policy 提交失败时采取的策略

7. disk_failure_policy 磁盘故障策略,有如下四种

8. endpoint_snitch 定位节点和路由请求

11. compaction_throughput_mb_per_sec 限定特定吞吐量下的压缩速率

12. memtable_total_space_in_mb: 最大使用的内存空间数量

13. concurrent_reads: 并发读取数量

14. concurrent_writes: 并发写入数量

15. incremental_backups: 是否增量备份

16. snapshot_before_compaction: 压缩前执行快照


晕不晕?写这么多的目的主要是演示我的Copy-paste大法,下面才是干货:Gossip-Snitch

看过《Gossip Girl》吧,美剧字幕党翻译为《绯闻女孩》,而市井中有个更加亲民的名字《八婆》,额~Cassandra里面就用到了Gossip协议,其实就是八卦聊天机制,Cassandra使用Gossip协议去获得集群中其他节点的位置和状态信息
它是一个点对点的通信协议,在此协议中,节点之间定期交换状态信息,Gossip协议每隔一秒运行一次,节点和不超过的三个节点交换信息 ,在信息的交换中,旧的信息会被新的状态信息覆盖
。当一个节点启动的时候,Gossip协议会读取配置文件cassandra.yaml从而决定它属于那个Cluster,从那个节点获得集群中其他节点的信息以及一些其他的参数:

3. storage_port :默认即可不重要不讲

4. initial_token :默认即可不重要不讲


任性滴说完了Gossip, 咱们再聊聊写数据的复制,Cassandra提供两种不同的复制策略:

SimpleStrategy:单数据中心使用,根据主键的哈希值,决定第一个副本应该复制到哪个节点,然后不考虑节点之间的拓扑网络结构,其他的副本放置在环中顺时针方向的下一个节点。

NetworkTopologyStrategy:当你的集群使用或者计划使用多数据中心时,请使用NetworkTopologyStrategy。这种策略指定了每个数据中心有多少副本。


为了避免跨数据中心读取等因素,配置多个数据中心的集群最常见的两种方法:

• 每个数据中心两个副本:这种配置允许每个备份组出现单节点故障,同时仍然保证本地读取的一致性水平为ONE。

• 每个数据中心三个副本:这种配置允许每个备份组出现单节点故障,同时保证本地读取的一致性水平为LOCAL_QUORUM。或者每个备份组出现多节点故障,同时保证本地读取的一致性水平为ONE。

亦即Replication Factor,在集群的副本总数被称为复制因子,它决定的是一行数据被存储到多少台机器上面。复制因子为1意味着每一行在一个节点只有一个副本。为2意味着每一行有两个备份,其中每个副本是在不同的节点。所有的副本都同等重要,没有主副之分。

Cluster下面对应的DC和RAC,那么一组数据写入后我们要对他进行复制,该怎么分配呢?如果都放在同一个机房DC或者同一个机柜RAC上,那么风险就会提高,于是Cassandra就引入了Snitch协议,简称告密者协议。一个snitch(告密者)决定应当从哪个数据数据中心和机架写入和读取数据。电影中告密的方式都很多种,分为烽火台,袍哥切口,鸡毛信,永不消逝的电波和潜伏.....但是我们这里的不一样:

单数据中心的情况下,主要使用SimpleSnitch,不考虑数据中心和机架的具体信息。通常在定义keyspace的时候,使用SimpleStrategy。

多数据中心的情况下,咱们就用PropertyFileSnitch就好,每个Cassandra节点我们都给予不同的DC/RAC配置,因为cassandra-topology.properties会去看的,因为当复制因子为2时,肯定不会在同一个DC/RAC啦,除非你只有一个DC/RAC.

想想也是醉了,Cassandra 先八卦后告密,还能不能好好滴学习数据库了?收工。


关于图片:名不正则言不顺,好好的海南省通什市改成了五指山市,山不在高,有仙则名,五指山的名气并非其本身,而是西游记中如来佛的五指山。一切为了注意力,类似的还有云南思茅市变成了普洱市...知道普洱市还有个普洱县么?还知道普洱县并不以生产普洱而出名么?能够说出普洱茶八大茶山者,今天送出 Cassandra教材一本包邮到付(之前我买的,转赠)

以上是关于卡桑卓典雅眉 Cassandra.yaml的主要内容,如果未能解决你的问题,请参考以下文章

是啥导致卡桑德拉大排长龙?

sh 卡桑德拉(ubuntu)

卡桑德拉抛出 OutOfMemory

弹簧靴+卡桑德拉

卡桑德拉|Cassandra

卡桑德拉+弹簧数据