点击蓝字 关注我们
在本文中,来自360系统部的国浩就Cassandra在360的最新进展进行了介绍。在360,国浩老师负责对象存储系统的开发、对Cassandra的二次开发及线上集群维护。
由于本次演讲时间较长,我们将分为三篇文章在微信上刊载。此篇为演讲的第一部分。
点击文末“阅读原文”观看演讲录像,了解更多技术细节。
大家好,我是来自奇虎360的国浩。今天我给大家带来的是Cassandra在360的最新进展。

我会从四个方面来介绍Cassandra在360的应用情况:Cassandra在360的使用历史再结合两个案例来介绍Cassandra在360的使用场景,最后介绍360的大规模集群是怎样做到运维统一的。

首先我先介绍Cassandra在360的使用历史。Cassandra在360已经有使用十年之多的历史了,我们在2011年就把Cassandra使用在了生产环境。
最初,我们是应用到了个人云盘的业务上,最初的版本是0.7.3的版本。最初的节点数也是比较少的,是15台。后来随着我们个人云盘业务的发展,从15台,到300台,到4000台,到2015年最高的时候14000台Cassandra节点。
2015年我们公司高层决定对个人云盘业务做了私有化,不再免费提供了。这样的话我们Cassandra的节点数下降了。
后来我们出于在2018年的考虑,对我们公司内所有的对象存储做了一个统一的平台,所以2018年我们又重新拾起了Cassandra,并且从最开始的0.7.3版本迁移到了3.11.1。当时0.7.3和3.11.1都是共存的。
现在我们的节点数达到了2000多台。2020年,因为公司收购了一些ToB的公司,我们打算在ToB上大力发展,对我们Cassandra的要求也是更高了。所以我们后面会以更大的力度去跟进Cassandra 4.0的一些最新的功能。
后面我也会介绍我们针对Cassandra原生版本的一些改进,比如对0.7.3的一些技术上的改进,包括我们做的一些功能上的定制开发,这些也都迁移到了我们最新的版本上。

下面我会介绍我们公司把Cassandra应用与对象存储的项目里的应用情况。
首先理论上对象存储应该是没有存储上限的,实质上它就是一个拥有命名空间(bucket)的大规模键值存储,用户可以通过键值这样的一个简单的查询来存取一些数据。
公司是针对Cassandra的基础上来构建这样的键值存储。目前这个存储接入的业务包括我们的视频云、360IM、安全云盘。总体的服务是达到了800个节点的规模,存储了近20PB的数据,每天增加量是300TB以上。
然后对象存储的特点是:存储量是巨大的;文件大小也是任意的;它还是一个在线的存储,所以对我们的性能和时间要求也比较高;而且它根据用户的使用情况,它是没有冷热数据的区分的,用户也可能要求取到一个很老的数据,而且我们的读写速度要求是比较高的。

因为这些特点,也给我们的系统设计带来一些挑战。
首先因为数据量非常多,它会存储海量的小文件,对于我们元信息存储的压力就会成为我们存储的瓶颈。存储的容量也是我们考量的范围之内,因为它本身有无限扩展容量的要求。
针对我们公司的网络环境,我们公司同城会有多个机房,机房之间会存在一些割接的需求,在割接的情况下,我们怎么去保证数据的高可用。另外业务对这个系统的依赖性也是比较高的,对访问时延的毛刺要求比较低。
为什么我们要基于Cassandra来构建对象存储服务呢?
首先我们是看中它的平行扩展的功能,并且数据能够自动平衡。它的多种数据分区策略,能解决数据热点的问题。然后它支持多数据中心的部署,防止了我们单个机房割接造成的数据中心的孤岛的一些问题。
还有就是我们服务的可用性要求比较高,我们的业务也是可以接受最终一致性的;另外Cassandra的可调节一致性,以及高分区容错性,对整体的服务影响小。
针对我们服务的这些特点,我们最终选择把我们的对象存储构建在Cassandra之上。

这里是我们对象存储的技术架构。从上往下应该是有三种角色,我们先从单机房的情况来看看。
首先第一层是我们的S3的接入层,也就是一个Web server,接受用户的读写请求,把数据进行切片,最终存到我们我们的数据集群(Datum Cluster)。
数据切片的元信息,我们会存到第二层的元数据信息的集群(Meta Cluster)。Meta Cluster的设计我们使用了双数据中心的架构,按照一边三个副本的部署形式,主要看中了Cassandra对多数据中心部署的原生支持。
我们的Cassandra对某一个Bucket底下可以支持范围Scan的功能。这个也解决了我们海量小文件元信息存储体量的问题。
我们的Datum集群也是使用了Cassandra多副本的部署形式,我们针对敏感度比较高的业务使用了多副本2+2的配置,针对要求比较低一些的业务使用了我们自研的EC(Erasure Code)纠删码的功能,可以把成本降到1.4个副本,也就是说比之前的成本下降了一半还要多。
我们后面的数据中心也拆分了多个小集群,这样可以减少单个集群故障的影响范围。因为使用多数据中心存放数据,也可以防止单数据中心孤岛问题。另外我们也看中了Cassandra的TTL功能,因为用户在上传的时候可以指定TTL,然后Cassandra会根据TTL自动清除过期的数据。
---未完待续---
本文版权归DataStax所有
未经书面允许禁止转载

DataStax在中国
技术资讯 | 行业动态 | 活动信息
阅读这篇文章有收获?
请通过点赞、分享和在看告诉我们






