Cassandra 的过去、现在、未来(二)

2020 年 1 月 07 日

Cassandra 的过去、现在、未来(二)

▌现在


1. 特征总览



首先快速看下 Cassandra 的整体特点,对其有个整体的了解:


  • 由于使用对等节点,因此易于扩展

  • 由于采用 LSM 单机引擎,支持高效写入

  • 高可用性和容错能力

  • 可调一致性


支持 CQL 查询


  • 弹性数据存储

  • 易于做数据分布


2. 一致性 hash & gossip 去中心化



如果现阶段我们再去设计表格系统,猜想应该还是会设计成这样,一次性 hash 是非常经典的分布式方式。它的核心思路是通过客户端和 server 端一致认可的一种协议,找数据的分布,规避 master 节点。传统的很多设计都存在 master 节点,里面存储了数据分片,客户端先去 master 里面找到第一层路由,然后再和路由的后端节点做交互。但是通过一次性 hash,可以屏蔽掉路由表环节。客户端和后端有一种默认的公约,只要照着公约就可以直接找到后端节点。


大体思路是:gossip 上带有程序,可以取个 hash 整数,后端进行 server 其实也会有唯一节点,把唯一节点做成 id 排序,每个 server 会管理一个 range。所以对于一个主键在 Cassandra 里是会切出前半部分,算出 hash 值之后,在这个环里可以做映射。


由于 Cassandra 的元信息比较少,只有一些分布信息,以及每个 server 管理了哪些 range 等,信息非常少,没有必要额外再切出一个 master 管理信息,因此它使用 gossip 协议。Gossip 协议是一种 pear 2 pear 的消息通信传递架构,具有最终一致性。可能有很短暂的一瞬间,里面的一些元信息 ( 如 token 分布 ) 是不太一样的。


3. LSM 单机引擎



LSM 单机引擎现在已经不是一个很新的概念了,这里简单介绍一下:客户端按照一个 cql 写进来,在 Cassandra 里面这个叫做 replication,就是一次写。Cassandra 只能保证一次读和一次写是原子的,但是读跟写组合起来并不能保证是原子的。还有 cache 的操作,属于高级功能了,一次写写到后端的节点 ( node ) 里面,会先追加写 WAL ( Write-Ahead-Log ),然后会到 memtable 里面,当然里面有很多的优化,比如使用 memtable 这种方式,避免用户内存和 cornal space 内存的拷贝。


当 memtable 比较大时,列比较多的时候,会存成 SSTable,有三种 campaction 策略:基于使用窗口的,还有像 levelDB 一样基于 level 的,level0~level7,越往下数据越旧,SSTable 越大。


4. 使用现状



Cassandra 在各大公司都有广泛使用,这里列举了国内外一些大型公司的使用情况。Apple 有大范围使用 Cassandra,对外披露有 10W + nodes。国内 360 有使用,饿了么在推荐系统中也有使用。还有国外的一些巨头,像 Reddit 论坛平台和 discord 点餐平台也有在使用,比如 memcache 切到 Cassandra 主要是受限于内存。


本文转载自 DataFunTalk 公众平台。


原文链接:https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247496333&idx=2&sn=2f36fb5991c6e963f247abc36f6d71a6&chksm=fbd740e1cca0c9f75644a4d9bd201d818b204727c4f425fdbb338ea43221e93c9cce71bf38d5&scene=27#wechat_redirect


2020 年 1 月 07 日 09:51134

评论

发布
暂无评论
发现更多内容

第五周-笔记

leo

极客大学架构师训练营

《ZooKeeper分布式过程协同技术详解》.pdf

田维常

电子书

第五周 - 作业

leo

极客大学架构师训练营

DataOps系列丨DataOps理念与设计原则

DataPipeline

大数据

JVM运行时数据区,你真得好好学一学

Simon郎

JVM Java 分布式

实现2nm工艺突破,台积电为何能给“摩尔定律”续命?

脑极体

git使用与原理剖析及其私服搭建

程序员Fox

git

区块链的新信任模式将重塑传统金融业

CECBC区块链专委会

区块链 资产流动性

DataOps系列丨DataOps的组织架构与挑战

DataPipeline

大数据

架构师训练营第 1 期 - 第九周总结

Todd-Lee

极客大学架构师训练营

五、一致性哈希算法

Geek_28b526

DataOps系列丨数据的「资产负债表」与「现状」

DataPipeline

大数据

Appium常用操作之「Toast提示信息获取」

清菡

大专学历Java开发7年,从年初被裁到四面美团点评成功上岸,闭关七个月,入职那一天我哭了!

Java架构追梦

Java 阿里巴巴 面试 美团 java架构

阿里大牛八年打造,编程宝典,从初学到编程进阶—深入学习—实战

马士兵老师

Java 阿里巴巴 程序员 架构 编程语言

用 Python 实现定时自动化收取蚂蚁森林能量

Python小二

Python

LeetCode 热题 - 递归

哈希说

LeetCode

Maven-技术专题-Setting文件结构解析

李浩宇/Alex

Nacos实战及其源码分析

程序员Fox

Spring Cloud nacos spring cloud alibaba

架构师系列之6: python实现一致性hash

桃花原记

Spring Cloud Config 实现分布式配置中心

AI乔治

Java 架构 微服务 Spring Cloud

网络冲浪信任危机频发,区块链能否破局?

CECBC区块链专委会

区块链 征信透明

架构师训练营 W05 作业

Geek_f06ede

释放数字化活力 高质量建设数字中国

CECBC区块链专委会

数字经济

《使用C ++的数据结构和程序设计》限时免费下载

计算机与AI

c++

给,你们想要的内存溢出MAT排查工具

田维常

内存溢出

区块链+供应链,双链融合开启新时代

CECBC区块链专委会

区块链 供应链物流

输入法B端市场转化:百度推动产业智能化的新路径

脑极体

石、火、水:从OriginOS透视移动系统进化论

脑极体

结合实战和源码来聊聊Java中的SPI机制?

冰河

Java spi 服务发现

消灭微服务的坏味道 之 循环依赖

码猿外

微服务 循环依赖 坏味道

Cassandra 的过去、现在、未来(二)-InfoQ