cassandra technical and history overview
DESCRIPTION
jie'sTRANSCRIPT
站在Digg的尸体上谈谈Cassandra
盛大云计算 王旭
About Me
• 码农 @ 盛大云计算 / 云硬盘 (EBS)
• 前Hadoop Developer
• 技术作者、译者《Cassandra权威指南》(据说像机器翻译的)
• http://wangxu.me/blog/
• @gnawux
大纲
• Cassandra的成长历程
• Cassandra的主要特性
• Cassandra的相关工具
• Cassandra的核心技术
Cassandra是谁
• 希腊神话中的特洛伊公主• 太阳神阿波罗的爱慕与赠予• 悲剧的女先知• ……
我们谈的Cassandra• 无中心的、高性能、可扩展的、分布式非关系型数据库
• 出身名门:
• Facebook开源的NoSQL数据库
• 万千宠爱:
• Twitter, Digg, Rackspace...
• 飞来横祸
• Twitter, Digg, Facebook
• 涅槃重生
• Twitter, Netflix, Rackspace, Reddit
Digg的故事
John Quinn
Digg的未来
http://about.digg.com/blog/looking-future-cassandra/
⼀一年后……
http://techcrunch.com/2010/09/07/digg-struggles-vp-engineering-door/
Digg员工如是说……http://www.quora.com/Is-Cassandra-to-blame-for-Digg-v4s-technical-failures
但究竟Digg的Cassandra遇到了什么问题?
Twitter in 2010FRIDAY, JULY 9, 2010
Facebook in 2010
为什么Cassandra不靠谱• Repair: 数据修复的可靠性
(CASSANDRA-1316)
• Scale: 插入节点对集群的影响/负载均衡 (CASSANDRA-192)
• Compaction: 对性能的影响
• Memory (Key cache, OOM...)
• Mature....
今日Cassandra
Cassandra @ Twitter
Web Analytics of Twitter
SpiderDuck of Twitter
Rainbird of Twitter
Cassandra @ Netflix
Cassandra @ Netflix
为什么Cassandra很酷
• 无中心架构,Column Family数据模型
• 很快,写操作更快• 性能线性扩展(ref: netflix, ycsb...)
• Counter数据类型
Gartner的成熟度曲线
Gartner的技术成熟度模型:技术萌芽期、过热期、幻觉破灭谷底区、复苏区、生产力成熟期
主要特性
关于NoSQL
• NoSQL Databases and Polyglot Persistence (多模式/混合式的持久化)
• NoSQL and BigData
• NoSQL and Not Only SQL
多种数据模型
• Key-Value
• Graph
• Document (JSON...)
• Column Family, 多维哈希表, 稀疏表
Column Family• 类比RDBMS中的表
• 存储⼀一系列的列• 每个列是⼀一个三元组(名:值:时间戳)
• 不同的行的列不必相同• 列是有序的(有索引的)• 可以取出⼀一列,或进行区间查询• 常用场景:时间线、不同属性……
• Super Column Family, Composite Column
CAP原则
⼀一致性、可用性与分区耐受性,三者只能取其二
Cassandra的可调⼀一致性• 数据存取API可以指定需要的⼀一致性
• CL.ZERO
• CL.ANY
• CL.ONE
• CL.QUORUM
• CL.ALL
• W+R>N 意味着强⼀一致性
操作接口
• Cassandra API
• Thrift API
• Clients: Hector, PYCASSA...
• CQL
Benchmarks
• YCSB
• http://nosql.mypopescu.com/post/3163240962/ycsb-benchmark-results-for-cassandra-hbase-mongodb
• Netflix’s benchmark
• http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html
主要适用场景• 需要高性能(尤其是写入性能)、随时可用、结构化、海量数据的场景
• 时间线• 消息• 广告跟踪• ……
日常运维• Node repair
• gc_grace_seconds
• 避免多节点同时repair
• 增加节点• 划分token range, 指定seed node
• 均衡数据• ⼀一种策略:成倍增加节点
相关工具
各种客户端
• Java: Hector, Astyanax by Netflix
• Scala: Cassie by Twitter
• Python: Pycassa...
• Ruby: cassandra by Twitter
• ...
OpsCenter by DataStax
Priam by Netflix
• 每个节点上运行的辅助工具,用于:• Backup and recovery (to S3)
• Bootstrapping and automated token assignment.
• Centralized configuration management
• RESTful monitoring and metrics
核心技术
DHT
• Dynamo by Amazon
• 结构化P2P, ⼀一致性哈希
• Gossip
• 读时修复• Anti-Entropy, Merkle Tree
写入路径
• Commit Log
• MemTable
• SSTable
Bloom Filter
• Bloom Filter vs. Hash
• 出发点:磁盘访问是代价高昂的• 假阳性
参考
• 官方主页: http://cassandra.apache.org/
• Datastax: http://www.datastax.com/
• 《Cassandra权威指南》: http://www.ituring.com.cn/book/9
Q & A谢谢