cassandra概况
为什么选择Cassandra?cassandra到底有那些令人印象深刻的特点呢?不防我们先来看下cassandra目前的大体概况。
理论扎实,师出名门
![0bf41ba1163b45c20c80b4063efe95bc.png](https://i-blog.csdnimg.cn/blog_migrate/c5478d5c05bd2e3de428613f6499b8b6.jpeg)
cassandra不仅吸收了dynamo论文中的如何做分布式,如何做副本复制,故障容错等方面成功的经验,又吸取了google bigtable中的LSM单机引擎层面精华。理论扎实,工程实现靠谱,所以面世以来,不断受到人们的追捧。
DB-EnginesRanking排名一骑绝尘
![c675a6f82a6a1c03cb4f0bdc8ad7b2eb.png](https://i-blog.csdnimg.cn/blog_migrate/e59bdca5f2c8aac0d1530a88dd36e8e8.jpeg)
宽表领域第一,全部数据排名第十,可以看出广受用户认可,流行度颇高。
Nosql主流产品性能对比
![d25f88f1a904087da767b50547bf2ad7.png](https://i-blog.csdnimg.cn/blog_migrate/b640c37bb80bb3367c695b24427b86e0.jpeg)
从benchmark可以看到cassandra性能是摇摇领先的,受用户认可也是有原因的,毕竟能打,有实力。
摘自:https://www.datastax.com/nosql-databases/benchmarks-cassandra-vs-mongodb-vs-hbase
为什么选择cassandra
了解了cassandra概况,表现抢眼,再让我们深入看看,什么原因让我们选择cassandra
我大致总结了如下十点:
1.线性扩展,轻松应对速度,多样性和复杂性问题
与下一代云应用相关的许多挑战都集中在数据量和数据处理速度上。Cassandra能否有能力应对这种具有多样性的数据流量?答案是肯定的,Cassandra是线性扩展,可以根据前台数据流量轻松确定集群规模,处理能力不够?加一台节点试试。
![e1dba8b4736e21ae5456d27066703ac3.png](https://i-blog.csdnimg.cn/blog_migrate/6512861672d7e9114787acc8c7a6f32d.jpeg)
2.可以处理大量数据集
Netflix,Hulu,Instagram,eBay,Apple和Spotify都在大规模使用Cassandra,作为他们产品后端的一部分。facebook的instangram一天用cassandra处理上亿图片,这足够说明了cassandra可以自如的处理大量数据集。
3. 一致化软硬件环境,易于大规模部署
不像有些分布式系统,cassandra不依赖外部组件,所有必须的操作都集成在cassandra内部了,因为是p2p对等架构,无主,环上的节点都是对等的,所以实际部署时,只需要一种机型,一个进程,极度简化部署及后续运维工作,适合大规模部署。
4. 高度容错
Cassandra采用了许多容错机制。由于C* 是无主的,所以没有单点故障。可以做到不停服滚动升级。这是因为Cassandra可以支持多个节点的临时失效(取决于群集大小),对群集的整体性能影响可以忽略不计。
Cassandra提供多地域容灾。Cassandra允许您将数据复制到其他数据中心,并在多个地域保留多副本。除了作为强大的灾难恢复和业务连续性保障之外,这有助于满足许多监管,离线分析等要求。
![683d34af8595792fc4d62042d411d965.png](https://i-blog.csdnimg.cn/blog_migrate/31631b98cbb1d425c005a5f8195d6b85.jpeg)
图示:多DC可用于多地容灾,或者离线分析用。
5. 被证明过,已经在企业应用程序和许多用例中取得成功
已经有许多Cassandra被有效使用的例子。银行和其他金融机构正在使用C*存储大量金融数据。分析公司正在使用Cassandra来存储网络分析数据。医疗公司正在使用Cassandra来存储传感器数据和其他时序数据。还有许多公司利用Cassandra存储物联网数据。所以说cassandra是被证明过的。
6.易于管理
Cassandra简化了系统管理。由于Cassandra是一个无主系统,环中的所有节点都是相同的; 一个同质的系统。它具有容错能力,可以支持节点临时失效,同时对性能的影响最小。这意味着节点易于更换,并且也不要求即刻替换宕机节点。
7.自主优化
有大量的,不同的参数让你根据自身场景不断的调优,举个例子,如果你是一个重写,读很少的场景,可以修改配置参数成重写系统。参数设置不仅仅是集群级别的,也可以是dc级别的,甚至客户端单个请求级别的,比如单次请求设置一致性级别,已达到更低的延时。
![1f2f180d95b1d795d711944a21781038.png](https://i-blog.csdnimg.cn/blog_migrate/b375d3e453aa5422a6093289245685f1.jpeg)
图示:调节一致性级别,达到更低延时目标
8.易于集成其他开源组件
Cassandra可以很容易的跟其他开源组件做集成。据我所知,cassandra已经成功跟kafka,spark,solr做集成,打通了大数据生态上下游,成为大数据处理里面重要的一环
![5056e2d0a17eaa6ca2d70bf16a259453.png](https://i-blog.csdnimg.cn/blog_migrate/c7e57372acfd3c77f6366c915670a990.jpeg)
9.出色的监控选项
cassandra提供了很多的监控指标,这些监控项这可以通过Cassandra利用Java MBeans并将它们暴露给不同外部监控系统,比如Datastax的监控系统Opscenter,阿里云的天象监控系统。您可以使用这些指标监控cassandra运行状况,再出现异常指标做出相应的决策。
10. 开源可控&活跃的社区
目前apache cassandra有5.4K Star,并且是开源可控,不需要昂贵的licence费用。stackoverflow上有数万个打了cassandra tag的问题,这些足以说明cassandra足够活跃。
一个开源软件要获得真正意义上的成功,就需要有一个围绕它发展的生态系统。对于像Cassandra这样的数据库,就必须有围绕它的咨询,监控和故障排查系统,插件,仪表系统和备份系统, 使得您的组织不需要重复开发上述一切能力,可以基于社区已有的内容。甚至很多云厂商提供Cassandra托管服务,让您只关注应用程序的开发。
总结
cassandra功能强大,更像一个真正的数据库,以下图总结来结束本文
![ba3e7320e75c54645f2a089601e4c65c.png](https://i-blog.csdnimg.cn/blog_migrate/2247e1922096331cc2d3c1429a08bac9.jpeg)
Cassandra是您理想的数据库原因有很多。了解您的系统要求,工作负载和未来业务增长情况将有助于您做出正确的选择。如你所见,选择Cassandra是一个十分明智的选择。
作者:陈江@阿里