快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

万博体育app网页登录_酒文化网进入



Cassandra 的设置设置设备摆设摆设详解

懂得一个软件的设置设置设备摆设摆设项的意义是应用这个软件的条件,这里具体先容 Cassandra 的设置设置设备摆设摆设文件(storage-config.xml)中各个设置设置设备摆设摆设项的意义,这此中包孕有很多设置设置设备摆设摆设参数,我们可以对其进行调剂以达到抱负的机能。为了节省篇幅这里没有列出 storage-config.xml 文件的内容,你可以对比着这个文件看下面的内容。

ClusterName

Cluster Name 代表一个族的标识,它平日代表一个集群。这个设置设置设备摆设摆设项在 Cassandra 没有存储数据时就必须指定,当 Cassandra 第一次启动后,它就会被写到 Cassandra 的系统表中,假如你要改动 Cluster Name 必须要删除 Cassandra 中数据。

AutoBootstrap

这个设置设置设备摆设摆设项看起来十分简单,然则假如你对 Cassandra 没有深入懂得的话,生怕不知道当你改变这个设置设置设备摆设摆设项时 Cassandra 可能会发生什么?

我们知道 Cassandra 集群是经由过程掩护一个自适应的 Token 环来达到集群中的节点的自管理,它们不仅要包管每台机械的状态的同步和同等性还要包管它们之间 Token 散播的合理性,经由过程从新划分 Token 来达到每台机械的负载的均衡性。

那这个设置设置设备摆设摆设项与 Token 和负载又有何关联性?着实外面上看起来这个设置设置设备摆设摆设项是当这个节点启动时是否自动加入集群。然则,当你设置成 False 时它是不是就不加入集群呢?显然不是,这还要看你有没有设置设置设备摆设摆设 seeds,假如你设置设置设备摆设摆设了其它 seed,那么它仍旧会去加入集群。

那么到底有何差别,经由过程阐发其启动代码发明,这个设置设置设备摆设摆设项不仅跟 seed 设置设置设备摆设摆设项有关而且和 Cassandra 是否是第一次启动也有关。Cassandra 的启动规则大年夜慨如下:

当 AutoBootstrap 设为 FALSE,第一次启动时 Cassandra 会在系统表中记录 AutoBootstrap=TRUE,以表示这是由系统自动设置的,着实这个只是作为一个标志来判断你今后的启动环境。

当 AutoBootstrap 设为 TRUE,第一次启动,Cassandra 会判断当前节点有没有被设置设置设备摆设摆设成 seed 节点,也便是在本机 ip 有没有在 seeds 中。假如在 seeds 中,Cassandra 的启动环境和 1 是一样的。

当 AutoBootstrap 设为 TRUE,第一次启动,并且没有设置设置设备摆设摆设为 seed,Cassandra 将会有一个漫长的启动历程,当然这个光阴的是非和你确当前的集群的数据量有很大年夜的关系。这时 Cassandra 将会根据当前集群的负载,来动态调剂它们的均衡。调剂均衡的要领便是根据当前的 Token 环分配一个相宜的 Token 给这个节点,并将这个相符这个 Token 的数据传给它。

从以上阐发可以看出,AutoBootstrap 设置的主要目的是是否调剂当前集群中的负载均衡。这着实还有一个很紧张的问题便是,假如按照第一种环境启动,假如没有指定 Token,这个节点的 Token 将会是随机天生的,那么问题就来了,当这个随机天生是 Token 加入集群的 Token 环时,Cassandra 若何包管 Token 和 Token 所对应的数据的同等性,这个问题将在后面阐明。

Keyspaces

Cassandra 中 Keyspace 相称于关系数据库中的表空间的观点,可以理解为操作表的一个容器,它下面可以定义多个 ColumnFamily,这个 ColumnFamily 就相称于表了,它是存储数据的实体。

ColumnFamily 中几个属性的意义如下:

ColumnType。列的类型,有两种:Standard 和 Super,分手是标准列和超列,超列的含义是列还有一个父列。

CompareWith。表示的是列的排序规则,可以根据不合的数据类型进行排序如 TimeUUIDType,可以根据插入的光阴排序

CompareSubcolumnsWith。子列的排序规则与 CompareWith 类似

RowsCached。查询时缓存的数据量,可所以若干条,也可所以百分比,如 10% 便是缓存 10% 的数据量,这个对查询机能影响很大年夜,假如射中率高的话,可以显明前进查询效率。

KeysCached。缓存 ColumnFamily 中的 key,这个 key 便是对应到 Index.db 中的数据,假如没有在 RowsCached 中射中,那么就要到每个 SSTable 中查询,这时一定要查询 key,假如在 KeysCached 能射中就不必要到 Index.db 中查询了,省去了 IO 操作。

Cassandra 是一个 Key/Value 系统,从它的存储的逻辑布局来看分为:Keyspace、Key、ColumnFamily、Super Column 以及 Column 几个部分。很显着我们能看出每一对 Key/Value 都有一个寄生的容器,以是它实际上是由一个个 Map 容器构成的。这个容器布局可以用图 1 和图 2 来表示:

图 1. 标准的 Column 布局图

图 2. 含有 Super Column 的布局图

ReplicaPlacementStrategy

定义数据复制策略,默认是 org.apache.cassandra.locator.RackUnawareStrategy,数据复制到其它节点没有特其余规定。 org.apache.cassandra.locator.RackAwareStrategy 是将节点分为不合的 Rack,这种要领不管是存数据照样查数据,都从不合的 Rack 的节点取数据或写数据。org.apache.cassandra.locator.DatacenterShardStategy 又将节点划分为不合的 Data Center,让数据放在不合数据中间,从而包管数据的安然性,例如可以按机房划分 Data Center,从而避免一个机房呈现故障,会影响全部集群。

ReplicationFactor

定义数据要保存几个备份,结合 ReplicaPlacementStrategy 可以把数据放在不合的地方。

EndPointSnitch

org.apache.cassandra.locator.EndPointSnitch 可以根据当前的收集万博体育app网页登录环境选择更好的节点路由,一样平常默认即可。

Authenticator

这个设置设置设备摆设摆设项可以节制数据造访的安然性,可以在 access.properties 和 passw万博体育app网页登录d.properties 设置用户和密码。

Partitioner

节制数据的散播规则,org.apache.cassandra.dht.RandomPartitioner 是随机散播,Cassandra 节制数据在不合的节点是经由过程 key 的来划分的,这个要领是将 k万博体育app网页登录ey 进行 MD5 Hash,从而形成随机散播的 Token,然后根据这个 Token 将数据散播到不合的节点上。

org.apache.cassandra.dht.OrderPreservingPartitioner 是取 key 的 Ascii 字符来划分的,是以我们可以根据 key 来主动节制数据的散播,例如我们可以给 key 加一个前缀,相同前缀的 key 散播在同一个节点中。

InitialToken

给节点分配一个初始 Token,当节点第一次启动后这个 Token 就被写在系统表中。结合 Partitioner 就可以节制数据的散播。这个设置设置设备摆设摆设项可以让我们能调剂集群的负载均衡。

CommitLogDirectory、DataFileDirectories

这两个设置设置设备摆设摆设项是设置 CommitLog 和 SSTable 存储的目录。

Seeds

关于 Seeds 节点的设置设置设备摆设摆设有这样几个疑问:

是不是集群中的所有节点都要设置设置设备摆设摆设在 seed 中。

本机需不必要设置设置设备摆设摆设在 seed 中。

关于第二个问题在前面中已经阐清楚明了,是否设置设置设备摆设摆设就抉择是否作为 seed 节点来启动。关于第一个问题,谜底是否定的,由于纵然你把集群中的所有节点都设置设置设备摆设摆设在 seed 中,当 Cassandra 在启动时它也不会往每个 seed 发送心跳信息,而是随机选择一个节点与其同步集群中的其他所有节点状态。几个回合后这个节点同样能够获取集群中所有的节点的列表。这便是集群自管理的优点,只要能发明此中一个节点就能发明整个节点。

ListenAddress

ListenAddress 这个设置设置设备摆设摆设是用来监听集群中其它节点与本节点互换状态信息和数据的地址。必要留意的是当你设置设置设备万博体育app网页登录摆设摆设为本机的 ip 地址没有问题,不设置设置设备摆设摆设平日也没问题,然则假如你没有设置设置设备摆设摆设或者设置设置设备摆设摆设成主机名,而你又把你的主机名绑定到 127.0.0.1 时,这时将会导致本节点不能加入到集群中,由于它吸收不到其他节点过来的任何信息,防止掉足直接绑定本机 ip 最好。

ThriftAddress

监听 Client 的连接哀求,不设或者设置设置设备摆设摆设成 0.0.0.0,监听所有地址的哀求。

RowWarningThresholdInMB

当 Cassandra 压缩时,假如一个 row 越过了设置设置设备摆设摆设的大年夜小时打印 warn 日志,没有任何其它感化。

SlicedBufferSi万博体育app网页登录zeInKB 和 ColumnIndexSizeInKB

分手是用来设置设置设备摆设摆设,根据 Slice 和 Column Name 来查询时 Cassandra 缓存数据的大年夜小,当查询范围较小时可以适当设置大年夜一点以前进射中率。

FlushDataBufferSizeInMB 和 FlushIndexBufferSizeInMB

这两个设置设置设备摆设摆设项是设置 Cassandra 在将内存中的数据写到磁盘时一次写入的缓存量,适当前进这个两个值可以前进 Cassandra 的写机能。

MemtableThroughputInMB、MemtableOperationsInMillions 和 MemtableFlushAfterMinutes

MemtableOperationsInMillions 是定义当前 Keyspace 对应的数据在内存中的缓存大年夜小,Cassandra 默认是 64M,也便是当写到 Cassandra 的数据达到 64M 时,Cassandra 会将内存的数据写到本地磁盘中。

MemtableOperationsInMillions 是定义当前这个 Memtable 中所持稀有据工具的个数,真实的个数是 MemtableOperationsInMillions*1024*1024。当越过这个数值时 Memtable 同样会被写到磁盘中。

MemtableFlushAfterMinutes 的感化是,当前两个前提都长光阴不满意时,Memtable 中数据会不停不会写到磁盘,这也分歧适,以是设置了一个光阴限定,当跨越这个光阴长度时 Memtable 中的数据也会被写到磁盘中。

以是 Memtable 中的数据何时被写到写到磁盘是由这三个值抉择,任何一个前提满意都邑写到磁盘。

ConcurrentReads 和 ConcurrentWrites

这两个是定义 Cassandra 用来处置惩罚 read 和 write 的线程池中线程的个数,根据当前的测试结果,读写的机能大年夜慨是 1:10,适当的设置这两个值不仅要根据读写的机能,还要参考当前机械的处置惩罚机能。当机械的 load 很高,然则 cpu 的使用率却很低时,很显着是因为连接数过多,Cassandra 的已经处置惩罚不过来都处于等待状态。这样就可以适当增添读写的线程数,同样假如当读的哀求大年夜于写的哀求时,也应该适当增添读的线程数,反之亦然。

CommitLogSync、CommitLogSyncPeriodInMS 和 CommitLogSyncBatchWindowInMS

我们知道 Cassandra 是先写到 CommitLog 中再写到 Memtable 和磁盘中。假如每写一条数据都要写一次到磁盘那样机能将会大年夜打折扣。Cassandra 为了前进写 CommitLog 的机能供给了两种写的要领。

Periodic。周期性的把 CommitLog 数据写到磁盘中,这个光阴周期由 CommitLogSyncPeriodInMS 指定,默认是 10000MS, 假如是这种要领,可想而知 Cassandra 并不能完全包管写到 Cassandra 的数据不会损掉,最坏的环境便是在这个光阴段的数据会被损掉,然则 Cassandra 的解释是经由过程数据的多个备份,来能前进安然性。然则假如是单机存储数据,最坏的环境仍旧会损掉 10000MS 光阴段写入的数据。可以说这种要领写 CommitLog 是完全的异步的要领。

Batch。这种要领是等待数据被写到磁盘中才会返回,与前面比拟安然性会获得包管,它能包管 100% 数据的精确性。但也并不是每写一条数据都急速写到磁盘中,而是有一个延迟光阴,这个延迟光阴便是由 CommitLogSyncBatchWindowInMS 指定的,也便是写一条数据到 CommitLog 的最大年夜光阴是 CommitLogSyncBatchWindowInMS 指定的光阴,抱负的光阴范围是 0.1~10MS 之间。这个光阴既要平衡客户真个响应光阴也要斟酌办事器写数据到磁盘的机能。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: