cassandra启动过程介绍

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介: 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的架构图,我专门从网上弄下来的。
1977 0
|
5月前
分布式系列教程(25) -解决Zookeeper启动失败的问题
分布式系列教程(25) -解决Zookeeper启动失败的问题
135 0
|
5月前
|
消息中间件 负载均衡 监控
分布式系列教程(08) -分布式协调工具Zookeeper(介绍&安装&配置详解)
分布式系列教程(08) -分布式协调工具Zookeeper(介绍&安装&配置详解)
374 0
|
5月前
|
存储 NoSQL 容灾
轻松掌握组件启动之MongoDB(上):高可用复制集架构环境搭建
本文介绍了MongoDB复制集的架构和特点,强调了使用复制集提供数据的高可用性和冗余性的重要性。复制集由Primary节点和Secondary节点组成,确保数据一致性。复制集还具有数据分发、读写分离和异地容灾等附加功能。使用MongoDB复制集可以提供稳定可靠的数据存储和高可用性。
轻松掌握组件启动之MongoDB(上):高可用复制集架构环境搭建
|
5月前
|
监控 NoSQL 安全
轻松掌握组件启动之MongoDB(下):高可用复制集架构环境搭建
本章介绍了MongoDB复制集的配置和使用方法,如何初始化和添加节点到复制集,验证主节点的写入和从节点的读取功能。了解如何查询复制集的状态,包括成员的健康状况、同步信息和角色等。最后,我们介绍了如何配置复制集的安全认证,包括创建用户和生成keyFile文件,并演示了使用认证信息连接复制集的方式。通过本章的学习,你将掌握MongoDB复制集的基本使用和配置方法。
|
8月前
|
存储 Java 关系型数据库
分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库
本文主要介绍分布式定时任务框架Quartz集成SpringBoot持久化数据到Mysql数据库的操作,上一篇文章使用Quartz创建定时任务都是保存在内存中,如果服务重启定时任务就会失效,所以Quartz官方也提供将定时任务等信息持久化到Mysql数据库的功能,本文主要实现这种Quartz的这种使用方式。
423 0
分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库
深入理解 ZooKeeper单机客户端的启动流程(二)
深入理解 ZooKeeper单机客户端的启动流程(二)
119 0
|
Java
深入理解 ZooKeeper单机客户端的启动流程(三)
深入理解 ZooKeeper单机客户端的启动流程(三)
274 0
|
Java Linux Shell
Zookeeper单机安装部署与配置(二)
Zookeeper单机安装部署与配置(二)
313 0