Cassandra在海量数据存储及大型项目案例介绍-part1

Posted 思通数科x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cassandra在海量数据存储及大型项目案例介绍-part1相关的知识,希望对你有一定的参考价值。

Cassandra起源

2007 年 Facebook 为了解决消息收件箱搜索问题( Inbox Search problem)而开始设计 Cassandra 项目。 当时 Facebook 遇到了传统的方法难以解决的超大数据量存储可扩展性问题。具体来说,项目团队需要处理大量的消息副本、消息的反向索引等不同形式的数据,需要处理很多随机读和并发随机写操作。

在2009年3月,Cassandra 被转移到 Apache 孵化器项目,并在2010年2月17日,它被投票成为一个顶级项目。 在 Apache Cassandra Wiki 上,您可以找到 committers 列表,其中许多人自 2010/2011 年以来就一直参与该项目。 committers 主要来自 Twitter,LinkedIn,Apple,其中还包括了许多独立开发者。

Cassandra在国外有大量的项目使用案例,其中不乏有很多大公司都在使用,例如:沃尔玛、Facebook、Spotify、Uber、苹果公司、Best Buy、Ebay、HuLu、Instagram,等等。但是,恰恰相反,在国内对此却不温不火。

由于我们在舆情系统中使用了Cassandra,并且前期也做了大量的调研和性能测试、稳定性测试、集成测试、迁移测试、灾难恢复测试等。之前我们一直使用mongoDB,但是他给我们带来了一个硬伤,删除数据后磁盘空间大小不变。因此,我们正在逐步抛弃mongoDB,转向Cassandra。

Cassandra 直接操作本地磁盘或者分布式磁盘,而 HBase 需要依赖 HDFS共享存储,这样从系统维护的角度上来考虑,Cassandra优于HBase了。在同等基础设施性能的 Cassandra 写入性能优于 HBase 近乎一个数量级,读性能基本持平。

下面就把我们对Cassandra的调研结果向大家分享,由于内容过长,所以将分享的内容将分为4个篇章,同时每个篇章里面的案例,我们会尽量把公司或机构的背景以及实际的应用场景和Cassandra使用规模披露给大家。

Ably

随着物联网(IoT)和新技术的兴起,很多公司有能力收集和使用比以往任何时候都多的数据更多的数据也意味着更高的期望和更激烈的竞争,由此,Ably为多家公司提供物联网消息通讯和联网数据传输平台,最终存储在 Apache Cassandra中。他们有望在2023年达到每月10亿台设备的消息通讯。Ably将物联网之间传输的数据和消息通过互联网传输,并且使用Cassandra来存储实时的持久化消息。Ably在实践的过程中也提到了遇到的故障问题:Conclusion: Believe Cassandra, but don’t use counter columns (相信Cassandra,但是不要相信counter 计数器)。这也是对我们有很好的提示和前车之鉴。

Cassandra counter columns: nice in theory, hazardous in practice | Ably Blog: Data in Motion

Activision

美国动视动视公司(Activision, Inc.)成立于1979年,是一家视频游戏开发商、发行商和经销商。美国动视发行的第一个产品是为Atari 2600设计的视频控制台。动视是世界上最大的电子游戏(Video Game)开发商和发行商。他们通过高度个性化的通信向玩家发送信息。它使用了大量实时数据,并使用Apache Cassandra构建消息实时存储。该公司在2011年开始了一个产品研发项目,其中包括改进其使用数据的方式,以提供更好的客户体验。他们尝试了许多不同的数据库,包括Oracle、MongoDB和Infobright,在试图找到一个能够解决所有挑战的数据库。随着2014年《使命召唤:先进战争》的发布他们试用了 Apache Cassandra,可以用高度个性化的通信方式向玩家发送信息,以增强玩家的体验并增加参与度。

Case Study: Cassandra Meets Call of Duty - DATAVERSITY

AdStage

AdStage.io是一款跨平台广告管理工具,能够让在线广告更容易上手。。AdStage想帮助中小型公司更好地在多个在线广告平台上制作、投放和管理广告。AdStage一直在代表广告商监控业绩趋势并优化营销活动。Apache Cassandra提供了公司所需的运行速度,以确保平台具有低延迟和所需的吞吐量。

Resources - Instaclustr

Urban Airship

Urban Airship成立于2009年,总部位于美国俄勒冈州波特兰。Urban Airship为其客户提供多渠道营销解决方案,利用手机程序、短信和电子邮件各种渠道进行信息推送,拥有众多旅游企业客户,例如阿拉斯加航空。去年,Urban Airship帮助Google Pay通过移动设备向用户提供票务和登机服务。该公司最初是一个支持推送通知的平台,但后来将营销渠道扩展到电子邮件、短信、移动钱包和语音助手等。目标是通过这些渠道管理消息推送,统一全渠道的客户数据。

最初Airship将设备数据存储在一组Postgres Shards中,他们的规模很快超过了新添加Shards的存储负载,因此他们转向使用HBase和Cassandra的多数据库体系结构。特别是2016年美国大选期间,24小时内 Urban Airship一天的消息推广量扩大到25亿次通知。

HBase非常擅长于高吞吐量的扫描,而Cassandra则擅长于低基数的查找,而在这种情况下,响应只包含少数结果。两者都允许高容量的写吞吐量,因为Urban Airship所有来自用户手机的元数据更新都是实时应用,每个设备的失效特征也不同。HBase支持出现故障时的一致性和分区容差,而Cassandra支持可用性和分区容差。他们利用HBase和Cassandra中的“单元版本”概念,就是我们通常说的时间戳来存储元数据多个版本。

How Urban Airship Scaled To 2.5 Billion Notifications During The U.S. Election | Airship

Apple

家喻户晓的苹果公司(Apple Inc. )是美国一家高科技公司。苹果营收达到3658亿美元,由史蒂夫·乔布斯、斯蒂夫·盖瑞·沃兹尼亚克和罗纳德·杰拉尔德·韦恩(Ron Wayne)等人于1976年4月1日创立。一年前,苹果声称,他们运行了75000多个Cassandra节点,存储了超过10 PB的数据。至少有一个集群有1000多个节点,而苹果经常通过Cassandra每秒执行数百万次操作(读/写)。Cassandra是苹果占主导地位的NoSQL数据库,其列表是其他数据库的两倍。苹果甚至收购了NoSQL数据库FoundationDB背后的公司。

Apple's secret NoSQL sauce includes a hefty dose of Cassandra | TechRepublic

Backblaze

Backblaze成立于2007年,总部位于加利福尼亚州圣马特奥,是一家云存储公司,管理着超过1 EB的数据,客户遍布175多个国家。他们需要一种能够处理非常高的写吞吐量并不断扩展写吞吐量的东西。在分布式存储应用商店中提供用户文件索引元数据存储,而Apache Cassandra正是他们所需要的选择。2013年,Backblaze研发了一套IaaS平台(Backblaze B2)提供的云存储类似于Amazon S3、Microsoft Azure存储和Google云存储,易于使用、价格合理且值得信赖。Backblaze研究了分布式数据库,并引入了Apache Cassandra,对现有的计算机备份堆栈进行了改良。

Apache Cassandra | Apache Cassandra Documentation

BazaarVoice

EmoDB是一个开源的RESTful数据存储库,建立在Cassandra之上,存储JSON文档,最值得注意的是,它提供了一个数据总线,允许订阅者实时监视这些文档的更改。

https://www.youtube.com/watch?v=5jKZUnkhB50

Best Buy

百思买是美国一家电子消费品销售公司,全球员工数81600,Best Buy也经营的软件,电子游戏,音乐,手机,数码相机,汽车音响,摄像头,和冰箱,洗碗机,烘干机等家用电器。使用Apache Cassandra管理假日流量的大幅飙升 — 7倍流量峰值和突发>50000转/秒 — 并称之为“完美无瑕”。

https://www.slideshare.net/joelcrabb/cassandra-and-riak-at-bestbuycom

Bigmate

Bigmate是使用车辆远程信息处理、资产互联网(IoA)和CCTV视频安全覆盖解决方案的领先创新者。Bigmate使用TIBCO Jaspersoft®embedded BI解决了以前无法解决的物理资产问题。2020年10月Bigmate公司打算建立了一个大规模物联网平台,用于吸收和处理异构数据。他们每天有20000个客户发送实时数据。在项目平台开发过程中,技术团队考虑了一系列支持物联网平台的数据库,包括mysql、MongoDB等。经过多方验证,最后开源apache cassandra成为他们物联网和人工智能和机器学习数据解决方案需求的最有利选择。Cassandra还提供了简单和无限的可伸缩性,它可以在现有集群保持活动状态的同时无缝地添加节点。世界上最大的Cassandra生产部署环境,包括苹果和Netflix,利用了包括数千个节点的Cassandra。

How Open Source Apache Cassandra Solved Our IoT Scalability and Reliability Challenges - IoT Central

Blackberry

黑莓是一家领先的全球企业软件和服务公司,提供物联网平台,旨在为企业的运输车队提供持续的可视性。2022年2月1日消息,黑莓宣布以6亿美元出售其非核心专利资产,专利主要涉及移动设备、消息传递和无线网络。黑莓将Apache Cassandra部署为其物联网(IoT)平台的NoSQL数据库解决方案。BlackBerry物联网平台为BlackBerry雷达物联网解决方案提供动力,该解决方案旨在提供对组织运输车队的持续可视性。

Blackberry Case Study - Instaclustr

BlackRock

blackrock中文名贝莱德集团,是美国的一家上市投资管理集团。贝莱德成立于1988年,贝莱德总部设在美国纽约市,贝莱德集团代表全球各地的个人与机构投资者管理资产,提供种类繁多的证券、固定收益、现金管理与选择性投资产品。在BlackRock,他们以各种方式使用Apache Cassandra为阿拉丁投资管理平台提供支持。尤其是利用Cassandra基础设施中管理多租户在平台上发挥的作用。

https://www.youtube.com/watch?v=322GytEo_fE

Bloomberg

彭博社利用其在全球资本市场、技术、数据、定价、分析、分销和研究方面的专业知识,提供世界上最大的资产管理公司使用的独立、无偏见的固定收益指数。生成和发布这些基准的平台由彭博指数工程团队设计和管理。彭博社工程师团队(Bloomberg Engineering)正在进行一项多年建设,利用 Apache Cassandra 和Apache Solr创建一个新的指数构建平台,以处理彭博巴克莱固定收益指数的日常生产。这包括构建和生产一个Apache Solr支持的搜索平台,以每分钟处理数千次搜索,一个Apache Cassandra后端数据库,以每天存储数百万个数据点,以及一个分布式计算引擎,以每天处理数百万次计算。

https://www.bloomberg.com/company/stories/meet-the-team-indices-engineering/

Bundesagentur für Arbeit (Federal Agency)

德国劳动局,联邦就业局是德意志联邦共和国的中央公共机构之一。因此,责任按照最高标准收集、分析和管理公民和各部门的数据。用户数据和来自业务关键信息系统的监控数据之间有一个重要区别,它们对高可用性和持久性(即永久性存储)有类似的要求。为了在要求的时间范围内监控查询和执行分析,同时保持生产运行,监控数据的任务应该与实际用户数据分开。不幸的是,传统的MySQL、Oracle关系数据库就位的情况下无法实现这一点。此外,不断增长的数据记录需要现有解决方案无法提供的可扩展性。

IT系统部门需要一种新的解决方案来实时监控应用程序和业务流程,并能够快速应对任何负面影响。他们选择了DataStax产品,DataStax是建立在Cassandra的数据库,同时还提供Enterprise商业版本,在该项目中,DataStax公司提供了Apache Cassandra根据他们的需求进行定制开发。后期,DataStax还提供全面的咨询以及在项目完成期间和之后的远程或现场服务支持。

备注:2021年11月5日,DataStax今天宣布在中国北京设立了一个新办事处并增加了一名新任的总经理,以进一步拓展其亚太(APAC)市场业务版图。

Using DSE to deliver value to Germany's taxpayers | Federal Employment Agency | DataStax

Intuit Mint

Intuit Mint是一项免费的个人理财服务,在美国和加拿大有 1100 多万用户,该公司于2014年6月被Intuit公司以3.6亿美元收购。该公司服务可关联客户的财务信息(例如银行账户、信用卡和账单),并集中显示此类信息。Mint 能实时自动更新信息和划分信息类别,这样客户就可以查看财务状况,追踪支出,并密切关注自己的投资。Mint 还提供账单提醒和付款服务,因此人们不仅可以查看其财务状况,还可以据此采取行动。

Mint Bills目前拥有超过1100万用户,就需要为1100万客户提供实时分析,以前Mint Bills依赖MySQL作为主要数据存储,在500万用户的时候在规模和性能上达到了顶峰。关系数据库体系结构无法轻松或可预测地扩展,因为来自不同银行帐户、投资帐户和帐单的用户数据中固有的大量数据和动态数据模型。此外,Mint-Bills的关系模型无法满足支持并发用户查看帐户信息和实时检索支付结果的在线应用程序的性能需求。

为了提供最好的客户体验,Mint Bills意识到它需要一个强大的数据库基础设施技术方法。它还需要一种快速可靠的方法来每天汇总用户信息,分析并跟踪信用卡和账单的数量等信息,甚至是前几周的数据。这些需求促使Mint Bills寻找一个平台,该平台还需要能无缝的Hadoop集成,能够将事务与历史信息合并和分析,从而获得准确的业务洞察力。

为了满足可伸缩性和实时性能的需要,Mint Bills选择Apache Cassandra来存储用户帐户数据。公司技术负责人Csasznik Shaked补充道:“当你在Mint Bills应用程序上选择账户时,你直接从Cassandra检索信息。”。

目前,Mint Bills在一个集群中有Cassandra 21个节点,在Datatax enterprise 中存储15tb的事务数据。即使不同类型数据模型的用户和帐户数量快速增长,Mint Bills仍然可以轻松地执行和扩展。同时Mint Bills聘请 Cassandra 专家和DataStax团队提供的全天候支持。

Mint Provides Real-Time Analysis to 11M Customers | Intuit Mint | DataStax

思通舆情|开源舆情系统

在我们的开源项目中 每个节点的 Apache Cassandra 存储了上亿条的网页详情和原始网页的数据,我们根据系统唯一ID查询,在Cassandra的索引上读取速度非常快,完全是秒开的!写入每秒同时的并发在8000-20000个请求在一秒内可完成,每台机器的配置并不高,JVM内存配置参数在8G内存。

开源项目地址:  开源免费舆情监测网络监控系统: 思通舆情 是一款开源免费的舆情系统,支持本地化部署。支持对海量的舆情数据进行交叉分析和深度挖掘,为用户提供全面的舆情数据,专业的舆情分析,快速的舆情处理等服务,提升企业品牌价值和风控能力。#舆情系统#舆情监测#网络舆情#开源舆情#免费舆情#舆情分析https://gitee.com/stonedtx/yuqing

欢迎对我们的项目 pull request 或者 留言对我们提出建议。您的支持和参与就是我们坚持开源的动力!请  star 或者 fork!

大型网站架构系列:电商网站架构案例

转自:itfly8大型网站架构系列:电商网站架构案例(3)

 本文章是电商网站架构案例的第三篇,主要介绍数据库集群,读写分离,分库分表,服务化,消息队列的使用,以及本电商案例的架构总结。

6.5数据库集群(读写分离,分库分表)

大型网站需要存储海量的数据,为达到海量数据存储,高可用,高性能一般采用冗余的方式进行系统设计。一般有两种方式读写分离和分库分表。

读写分离:一般解决读比例远大于写比例的场景,可采用一主一备,一主多备或多主多备方式。

本案例在业务拆分的基础上,结合分库分表和读写分离。如下图:

 

(1)       业务拆分后:每个子系统需要单独的库;

(2)       如果单独的库太大,可以根据业务特性,进行再次分库,比如商品分类库,产品库;

(3)       分库后,如果表中有数据量很大的,则进行分表,一般可以按照Id,时间等进行分表;(高级的用法是一致性Hash)

(4)       在分库,分表的基础上,进行读写分离;

 

相关中间件可参考Cobar(阿里,目前已不在维护),TDDL(阿里),Atlas(奇虎360),MyCat(在Cobar基础上,国内很多牛人,号称国内第一开源项目)。

分库分表后序列的问题,JOIN,事务的问题,会在分库分表主题分享中,介绍。

6.6服务化

         将多个子系统公用的功能/模块,进行抽取,作为公用服务使用。比如本案例的会员子系统就可以抽取为公用的服务。

        

6.7消息队列

         消息队列可以解决子系统/模块之间的耦合,实现异步,高可用,高性能的系统。是分布式系统的标准配置。本案例中,消息队列主要应用在购物,配送环节。

(1)       用户下单后,写入消息队列,后直接返回客户端;

(2)       库存子系统:读取消息队列信息,完成减库存;

(3)       配送子系统:读取消息队列信息,进行配送;

 

目前使用较多的MQ有Active MQ,Rabbit MQ,Zero MQ,MS MQ等,需要根据具体的业务场景进行选择。建议可以研究下Rabbit MQ。

6.8其他架构(技术)

除了以上介绍的业务拆分,应用集群,多级缓存,单点登录,数据库集群,服务化,消息队列外。还有CDN,反向代理,分布式文件系统,大数据处理等系统。

此处不详细介绍,大家可以问度娘/Google,有机会的话也可以分享给大家。

七、架构总结

 

以上是本次分享的架构总结,其中细节可参考前面分享的内容。其中还有很多可以优化和细化的地方,因为是案例分享,主要针对重要部分做了介绍,工作中需要大家根据具体的业务场景进行架构设计。 

以上是电商网站架构案例的分享一共有三篇,从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。

关于负载均衡,业务拆分,集群架构,读写分离,分库分表,服务化,消息队列等常用技术和架构实现,本博客将会推出系列文章,进行介绍。欢迎小伙伴们围观。

大型网站架构交流(架构之家)QQ群二:464527023 ;微信公众号:itfly8。以架构为核心的兴趣群,专注大型分布式网站架构,大数据,架构模式,设计模式。技术分享,经典电子书分享,欢迎加入!

以上是关于Cassandra在海量数据存储及大型项目案例介绍-part1的主要内容,如果未能解决你的问题,请参考以下文章

大型网站架构系列:电商网站架构案例

大型网站技术架构-核心原理与案例分析-阅读笔记5

《大型网站技术架构-核心原理与案例分析》之一: 大型网站架构演化

海量数据存储解决方案之分库分表原理解析及mycat安装及使用

电商网站架构案例

万亿级企业MySQL海量存储分库分表设计实践