- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Cassandra那些事-TeamPal-软件工程项目信息化平台
Casandra是什么?
Cassandra是一个高可靠的大规模分布式存储系统。高度可伸缩的、一致的、分布式的结构化key-value存储方案。
2007由facebook开发
已经在生产环境中使用,比如email index search
2009年成为Apache的孵化项目
Agenda
数据分布策略
存储机制
数据读写删
最终一致性
Gossiper
数据分布策略
Distributed hash table
Partitioner类型
RandomPartitioner
OrderPreservingPartitioner
ByteOrderedPartitioner
CollatingOrderPreservingPartitioner
副本策略
LocalStrategy
RackUnawareStrategy
RackAwareStrategy
DatacenterShardStategy
Distributed hash table
Partitioner类型
RandomPartitioner
随机分区是一种hash分区策略,使用的Token是大整数型(BigInteger),范围为0~2^127,因此极端情况下,一个采用随机分区策略的Cassandra集群的节点可以达到2^127+1个节点。
为什么是2^127?
Cassandra采用了MD5作为hash函数,其结果是128位的整数值(其中一位是符号位,Token取绝对值为结果)。
Partitioner类型
RandomPartitioner
4个节点,随机分配的Token分布情况
采用随机分区策略的集群无法支持针对Key的范围查询。
假如集群有N个节点,每个节点的hash空间采取平均分布的话,那么第i个节点的Token可以设置为: i * ( 2 ^ 127 / N )
Partitioner类型
OrderPreservingPartitioner
如果要支持针对Key的范围查询,那么可以选择这种有序分区策略。该策略采用的是字符串类型的Token。
如果没有指定InitialToken,则系统会使用一个长度为16的随机字符串作为Token,字符串包含大小写字符和数字。
Partitioner类型
KoRVD8989yf3rwBs
oeLFEM9K0p78I77N
ba6gv5zaE10Fj9ND
dOesQASXoGwygtel
cViC2OxAndA9oMTV
b36f65zWaeeIbgA3
7lRpHvIW48tuPXdJ
1ALaIi651cvO7GKq
C689MuiFyBVmOeUY
Mea0SbI9O9mOHs3R
Partitioner类型
ByteOrderedPartitioner
和OrderPreservingPartitioner一样是有序分区策略。只是排序的方式不一样,采用的是字节型Token。
Partitioner类型
[905b048d55dec3cae9cad20a3d21e26a]
[283d8672266470df5d8932f1de87d943]
[68f644b93515da49d0718206147d2508]
[00a4239c255033b8c1392c9af5ed85b5]
[8a1179c784d86f0dc0b25b77d97bb4fe]
[7dd56ccf16665c75b58bc7e3ffab604d]
[fb8436353232a4be28b804cb646c53d1]
[e8f885dce10e4f1a6eb125599d5db59f]
[d70b679aafc8977b855c7066ebeb7777]
Partitioner类型
CollatingOrderPreservingPartitioner
和OrderPreservingPartitioner一样是有序分区策略。只是排序的方式不一样,采用的是字节型Token。 支持设置不同语言环境的排序方式,代码中默认是en_US。
将制定的Token信息按照不同语言环境来编组转化为字节数组。
其它与ByteOrderedPartitioner完全一致。
副本策略
LocalStrategy :只在本地节点中保持一个副本。
RackUnawareStrategy:不考虑机柜因素,将Token按照从小到大的顺序,从第一个Token位置处依次取N个节点作为副本。
RackAwareStrategy:考虑机柜因素,在primaryToken之外,先找一
文档评论(0)