cassandra启动过程介绍

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: cassandra启动流程 整个启动流程会启动前端cql server用来接收客户端cql请求,启动node互相通信用的MessageService。这个都是常规操作,就不花费篇幅赘述了。cassandra启动过程对于新节点加入还是正常启动还是有区分的,新节点会造成数据重分布,所以需要先执行bootstrap。

cassandra启动流程

整个启动流程会启动前端cql server用来接收客户端cql请求,启动node互相通信用的MessageService。这个都是常规操作,就不花费篇幅赘述了。cassandra启动过程对于新节点加入还是正常启动还是有区分的,新节点会造成数据重分布,所以需要先执行bootstrap。

分区介绍

先看下cassandra cluster的分区概念。下面这个例子中表示,token组成了一个环,由这4台节点划分,每个server管理一段。所有key值都通过murmur3算法算出token,映射在hash环上,从而找到所属server
image

当有新节点加入集群后,新节点会新分配token,会管理新增部分tokenRange,相当于从老节点分割了token,从而引起了数据迁移
image
上图中server'新加入集群,负责了token范围(51-60),原来管理的server管理token的范围为(51-75),server'在加入集群前,需要先把数据拷贝过来,防止加入后,读数据失败。这其实就是bootstrap过程,原理很简单,但实际因为虚拟节点vnode存在,实现要比这复杂的多。

启动流程

下面是启动过程中比较重要的几个步骤

  • replay WAL

    • 对日志段进行新旧排序,从旧到新,依次replay日志段
    • 解析wal成为mutation,apply mutation,构建memtable,然后强制刷新成sst
    • 此过程不断校验crc,如果最后一个日志段数据损坏,如出现半条操作日志,是可以正常skip然后启动的,其他情况,默认启动失败。
  • JoinRing

    1. 判断本地系统表里面是否bootstrap完毕,完毕直接跳至第4步,否则新节点,开始执行第二步
    2. 生成tokens,默认是随机生成诺干个token,至于多少个,看配置的num_tokens个数。如果本机有其他程序混部导致负载高,可以适度少配置个数,降低cassandra读写负载。
    3. 本地持久化tokens,发起bootstrap,通过数据流接口,发起sst文件拷贝
    4. 将tokens通过Gossip广播给其他node,这样以后任意一节点都能正确找到key对应的node

钉钉群交流

为了营造一个开放的 Cassandra 技术交流,我们建立了微信群和钉钉群,为广大用户提供专业的技术分享及问答,定期在国内开展线下技术沙龙,专家技术直播,欢迎大家加入。
image

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
分布式数据库 Hbase
hbase源码系列(六)HMaster启动过程
这一章是server端开始的第一章,有兴趣的朋友先去看一下hbase的架构图,我专门从网上弄下来的。
2067 0
分布式系列教程(25) -解决Zookeeper启动失败的问题
分布式系列教程(25) -解决Zookeeper启动失败的问题
382 0
|
6月前
|
消息中间件 关系型数据库 Kafka
Flink问题之无法启动如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
219 1
|
6月前
|
资源调度 关系型数据库 MySQL
Flink问题之应用程序重启如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
367 0
|
6月前
|
Linux
Linux下Zookeeper分布式安装与配置
Linux下Zookeeper分布式安装与配置
293 0
|
流计算
110 Storm集群的进程及日志熟悉
110 Storm集群的进程及日志熟悉
68 0
|
存储 Java 大数据
分布式数据库HBase的安装部署和环境搭建的Standalone/伪集群模式
HBase是一个分布式数据库系统,能够支持高性能、高可靠性、高伸缩性的数据存储和读写操作。在大数据时代,HBase成为了一个越来越受欢迎的数据库选择。本文将介绍HBase的Standalone/伪集群模式的安装部署和环境搭建,帮助开发者快速上手。
720 1
|
存储 分布式计算 Hadoop
Linux/Hbase2.2.2安装教程_单机/伪分布式配置
Linux/Hbase2.2.2安装教程_单机/伪分布式配置
785 0
Linux/Hbase2.2.2安装教程_单机/伪分布式配置
深入理解 ZooKeeper单机客户端的启动流程(二)
深入理解 ZooKeeper单机客户端的启动流程(二)
138 0