cassandra启动过程介绍-阿里云开发者社区

开发者社区> 陈江@阿里> 正文

cassandra启动过程介绍

简介: 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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Node.js 启动小结
配置环境变量:  cmd-------> 启动dyson服务 在项目的路径下 如open cmd进入open目录执行npm start命令 在浏览器下输入访问地址:http://localhost:3000/(js脚本里的路径)
432 0
菜鸟入门【ASP.NET Core】9:RoutingMiddleware介绍以及MVC引入
前言 前面介绍了使用app.Map来配置路由,但是对于一般不是特别大的项目来说,不使用Map来进行路由配置。 配置路由 我们首先需要在Startup.cs文件中的ConfigureServices方法中进行路由依赖注入 services.
879 0
VxWorks启动过程详解(下)
<p class="item-content"><span style="font-size:12px">上一节主要是从映像的分类和各种映像的大致加载流程上看VxWorks的启动过程,这一节让我们从函数级看一下VxWorks的启动过程:</span></p> <span style="font-weight:bold"></span> <h4 class="item-content">
1412 0
[Android]Activity启动过程
Android系统启动加载流程: 参考图 Linux内核加载完毕 启动init进程 init进程fork出zygote进程 zygote进程在ZygoteInit.main()中进行初始化的时候fork出SystemServer进程 SystemServer进程开启的时候初始化Activit...
498 0
VxWorks启动过程详解(上)
<p>vxworks有三种映像: </p> <p><span style="font-size:12px">VxWorks Image的文件类型有三种</span></p> <ol> <li><span style="font-size:12px"> Loadable Images:由Boot-ROM引导通过网口或串口下载到RAM</span></li> <li><span style
1473 0
cocos2dx中关于Action动作的相关API的详细介绍
 //CCMoveBy  创建一个移动的动作 //参数1:移动到目标坐标所需的时间 //参数2:目标坐标 //支持reverse 可以获取其反向动作 //CCMoveTo  一样的 //CCActionInterval * moveBy = CCMoveBy::create(5,ccp(300, 100)); /
809 0
+关注
陈江@阿里
从业于BAT等公有云部门,分布式存储领域专家
21
文章
0
问答
来源圈子
更多
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载