980Cassandra简介使用案例

上传人:大米 文档编号:584101096 上传时间:2024-08-30 格式:PPT 页数:39 大小:1,007.02KB
返回 下载 相关 举报
980Cassandra简介使用案例_第1页
第1页 / 共39页
980Cassandra简介使用案例_第2页
第2页 / 共39页
980Cassandra简介使用案例_第3页
第3页 / 共39页
980Cassandra简介使用案例_第4页
第4页 / 共39页
980Cassandra简介使用案例_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《980Cassandra简介使用案例》由会员分享,可在线阅读,更多相关《980Cassandra简介使用案例(39页珍藏版)》请在金锄头文库上搜索。

1、Cassandra简介Jametongb2bdba童家旺http:/Ahighlyscalable,eventuallyconsistent,distributed,structuredkey-valuestore.议题介绍背景基本前提Scalability基本的StorageModelCAP公理简介Cassandra使用案例Cassandra设计它山之石ConsistencyModels(EventualConsistency)ConsistentHashingDataModelsStorageModel(SSTable&MemTable)故障检测&Gossip通讯Cassandra的设计背

2、景ScaleUp不可接受满足海量数据存储需求海量数据,主要是用户的信息与用户消息(类似于我们的反馈)大量随机的读写没有现成的解决方案,或者说现成的解决方案无法解决(4000个节点的Memcached)很多应用并不是很依赖于关系模型了Cassandra的设计目标高可用性最终一致性经过权衡,在强一致性与高可用性之间选择了高可用性动态可伸缩乐观复制可以动态调整一致性/持久性与延时节点管理要保持低开销最小化管理开销Scalability当我们增加一个系统中的资源,并能获取与增加的资源保持适当的比例关系的性能提升,我们就认为这个服务具备了伸缩性。资源投入与输出保持线性关系为促进冗余投入的资源不会带来性能

3、损失能够处理异构资源能做到运维高效具备自修复能力scalabilityisafunctionthatrepresentstherelationshipbetweenworkloadandthroughputScalability2ScaleOutVsScaleUpScaleUp-在同一个逻辑单元内增加资源,例如增加CPU/内存/网卡数量等.ScaleOut-增加多个逻辑单元的资源,并使它们如同一个集中的资源那样提供服务(集群/分布式/负载均衡等)ScaleUp较为简单,但是规模有限,代价越来越大ScaleOut需要从架构层面设计,规模没有限制,代价由架构决定.基本的存储模型行存储Vs列存储Vs

4、混合存储行存储适合查找整行的存储,不过需要配合索引列存储适合查找少量列,适合做基于列的统计/查询混合列存储.将需要经常组合查询的列组合在一起.将其他列(列的组合)单独存储.基本的存储模型2CAPTheoremConsistencythesystemprovidesaviewofthedistributedstatewhichisconsistentbetweenobservers所有的用户都可以看到一致的系统状态AvailabilityThesystemasawholeshouldcontinuefunctioning,evenifserversshouldfailorbeunreachabl

5、eduetonetworkfailures无论何时,哪怕出现硬件故障,数据中心故障,系统也可提供服务,哪怕是降级的服务PartitionToleranceThesystemasawholeshouldcontinuetofunction,potentiallywithdegradationsinservice,evenifthenetworkcanfailinarbitraryways.哪怕在网络出现分割的情况下,各个独立的子系统都可以继续提供服务CanOnlyChooseTwoFromAboveThreeCAPTheorem2BASEBasicAvailabilitySoftstateEve

6、ntualConsistencyACIDAtomicConsistencyIsolationDurabilityCAPTheorem3http:/ evaluatedJonathanEllis-3Rackspacestatscollection(testing,almostproduction),Mail&Appsdivision(earlytesting)HBase,Hypertable,dynomite,andVoldemortRyanKingTwitterstorageforalltweetsacustommysqlimpl,voldemort,hbase,mongodb,memcach

7、db,hypertable,andothersEdmondLauOoyalastoreandserveournearreal-timevideoanalyticsdataHBase,Cassandra,Voldemort,andsomeothersJoeStumpSimpleGeoreal-timelocationinfrastructurescottwOnespotasubsetofourdatastoreTokyo,VoldemortandRiakandCassandraVitalyKushnerAstrailsaprojectforoneofourclients(earlydevelop

8、mentstage)DanDiSpaltroCloudkickstoremonitoringstatisticsandrunninganalyticsoverthedataEricLubowShermansTravelmailingsystem,socialnetworkusageCassandraandTokyoCabinet/TokyoTyrantRichardgrossman bee.tvsmartTVandmoviesrecommendations,indexeachdayalltheTVshowsineverystates+allthenewVODsourcesmatthewhawt

9、horneComcasttonsofdatathatwearemigratingintonon-relationalstoragecassandra,riak,voldemort,andhdfsSantalLiCiscoWebexstoreUserFeed&UserActivitydataVoldemort,MemcacheDB,DynomiteCassandra设计它山之石ConsistencyModels(EventualConsistency)ConsistentHashingDataModelStorageModel(SSTable&MemTable)Gossip通讯故障检测它山之石它

10、山之石2Dynamo-likefeaturesSymmetric,P2ParchitectureNoSpecialnodes,NoSPOF(SinglePointOfFailure)GossipBasedclustermanagementDistributedhashtablefordataplacementPluggablepartitioningPluggabletopologydiscoveryPluggableplacementstrategiesTunable,EventualConsistencyBigTable-likeFeaturesSparse,”columnar”datam

11、odelOptional,2-levelmapsCalledSuper-ColumnFamiliesSSTableDiskStorageAppend-onlyCommitLogMemTable(Buffer&Sort)ImmutableSSTableFilesHadoopIntegrationConsistencyModels一致性模型是程序员与系统之间交互的一个协议,如果程序员遵循特定的规则,系统就可以保证结果的一致性以及结果的可预测性一致性模型决定了数据可见与显示更新顺序的规则一致性是一个连续的平衡的过程客户端一致性强一致性所有用户都可以同时看到同一份一致的数据(ACID标准)弱一致性最终

12、一致性(弱一致性的变种)如果系统确保一定的时间不做任何变更,最终所有的查询都会返回相同的最新值因果一致性读己之所写(read-your-writes)一致性会话(Session)一致性单调(Monotonic)读一致性单调写一致性服务端一致性N数据复制的份数W更新数据是需要保证写完成的节点数R读取数据的时候需要读取的节点数如果W+RN,写的节点和读的节点重叠,则是强一致性如果W+R=N,则是弱一致性Cassandra支持的一致性WriteReadLevelDescriptionLevelDescriptionZEROCrossfingersANY1stResponse(IncludingHH)

13、One1stResponseOne1stResponseQUORUMN/2+1ReplicasQUORUMN/2+1ReplicasALLAllReplicasALLAllReplicasl一致性模型取决于副本(Replicas)的数量(N),一般为3l在Cassandra中一般选择Quorum数量的读节点数(R,一般为2)以及Quorum数量的写节点数(W,一般为2)ReadRepair每次读取时都读取所有的副本只返回一个副本的数据对所有副本应用Checksum或Timestamp校验如果存在不一致取出所有的数据并做合并将最新的数据写回到不同步(outofsync)的节点Hintedhand

14、offHintedhandoff主要解决节点Down掉以后的复制问题.Cassandra会往一个活动节点记录信息,此节点需要重新Apply此变更.如果节点Down掉时间较长,可能会导致出现较大的Hintedhandoff日志.Hintedhandoff解决的主要问题降低一个临时Down掉的节点恢复的速度在一致性(Consistency)允许的情况下,提供尽可能好的写可用性(alwayswritable)ConsistentHashing为所有的Key计算一个Hash值(一般为Md5计算的128位Hash值)这些Hash值都分布在一个环(Ring)上.最大的Hash值的位置与最小的Hash值相邻

15、每个可提供服务的节点负责环上的一段区间每个节点都有一个环上的令牌(Token)每个节点负责它的令牌到顺时针方向的下一个令牌之间的区域ConsistentHashing2DataModelKeyspace包含ColumnFamilyColumnFamily标准ColumnFamily或SuperColumnFamily两级索引(Key以及ColumnName)Column以及SubColumn的排列顺序Column总是有序的,Column通过其ColumnName进行排序指定你使用的ComparatorTimeUUIDLexicalUUIDUTF8LongBytesCreateYourOwnDa

16、taModelKEYColumnFamily1 Name : MailList Type : Simple Sort : Name Name : tid1Value : TimeStamp : t1Name : tid2Value : TimeStamp : t2Name : tid3Value : TimeStamp : t3Name : tid4Value : TimeStamp : t4ColumnFamily2 Name : WordList Type : Super Sort : Time Name : alohaColumnFamily3 Name : System Type :

17、Super Sort : Name Name : hint1Name : hint2Name : hint3Name : hint4C1 V1T1C2V2T2C3V3T3C4V4T4Name : dudeC2 V2T2C6V6T6Column Families are declared upfrontColumns are added and modified dynamicallySuperColumns are added and modified dynamicallyColumns are added and modified dynamicallyStorageModelKey (C

18、F1 , CF2 , CF3)Commit LogBinary serialized Key ( CF1 , CF2 , CF3 )Memtable ( CF1)Memtable ( CF2)Memtable ( CF2) Data size Number of Objects LifetimeDedicated Disk -BLOCK Index Offset, OffsetK128 OffsetK256 OffsetK384 OffsetBloom Filter(Index in memory)Data file on diskStorageModel-CompactionsK1 K2 K

19、3 -SortedK2 K10 K30 -SortedK4 K5 K10 -SortedMERGE SORTK1 K2 K3 K4 K5 K10 K30 SortedK1 OffsetK5 OffsetK30 OffsetBloom FilterLoaded in memoryIndex FileData FileD E L E T E DStorageModel-写操作客户端给Cassandra集群的任一随机节点发送写请求分割器决定由哪个节点对此数据负责RandomPartitioner(完全按照Hash进行分布)OrderPreservingPartitioner(按照数据的原始顺序排序)

20、Owner节点先在本地记录日志,然后将其应用到内存副本(MemTable)提交日志(CommitLog)保存在机器本地的一个独立磁盘上.StorageModel-写相关特性关键路径上没有任何锁顺序磁盘访问表现类似于写入式缓存(writethroughcache)只有Append操作,没有额外的读开销只保证基于ColumnFamily的原子性始终可写(利用HintedHandoff)即使在出现节点故障时仍然可写StorageModel-读操作/特性从任一节点发起读请求由分割器路由到负责的节点等待R个响应在后台等待N-R个响应并处理ReadRepair读取多个SSTable读速度比写速度要慢(不过

21、仍然很快)通过使用BloomFilter降低检索SSTable的次数通过使用Key/Columnindex来提供在SSTable检索Key以及Column的效率可以通过提供更多内存来降低检索时间/次数可以扩展到百万级的记录Anti-EntropyGossip通讯Gossip协议主要用来管理集群会员信息还用来管理各种系统状态.每个节点的状态以及其他会员的活动状态等.通讯效率非常高,只需要Log(N)回合就可以将状态传递给集群的N个节点每隔T秒,每个节点都会自增自己的Heartbeat信息并通过Gossip传递给其他节点Gossip-初时状态Gossip-第一回合Gossip-第3回合Gossip-第3回合Gossip-第4回合故障检测Cassandra使用Accrual故障检测器在系统管理,复制,负载均衡等领域应用广泛它的输出值为一个数值(Phi,),表示此节点面临故障的可疑级别它也被称为自适应故障检测器,可根据网络环境做自适应调整应用设置相应的Phi值,触发可疑节点并做针对性的处理在Cassandra中,默认的Phi值为5,检测到故障的时间在10-15秒具体设置的Phi值表明达到这个可疑级别的节点被认为已经出现故障

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号