一、集群启动流程

1、选举主节点

许多节点启动,集群干的第一件事儿就是选主,之后的的流程由主节点触发。

先确定唯一的、大家公认的主节点;再想办法把最新的及其原数据复制到选举的主节点上。

选主是对Bully算法的改进,主要思路是对节点 ID 排序,取最大值做 master,每个节点都运行这个流程。

由此产生三个制约条件:

  1. 参选人数需要过半,达到quorum后就选出了临时的主。为什么是临时的?每个节点运行排序取最大值的算法,结果不一定相同。举个栗子,集群有5台主机,节点 ID 分别是:1,2,3,4,5.当产生网络分区或者节点启动速度差异较大,节点1 看到的节点列表是:1,2,3,4,选出4;节点2看到的节点列表:2,3,4,5,选出5。结果就不一致了由此产生第二条限制。
  2. 得票数须过半。某节点被选为主,须判断加入他的节点数过半,才确认 master 身份。解决第一个问题。
  3. master 节点,当探测到节点离开事件,须判断当前节点数是否过半。如果不到quorum,则放弃 master 身份,重新加入集群。如果不这么做,设想以下情况:假设10台机器组成的集群产生网络分区,3台一组,7台一组,产生分区前, Master位于3台中的一个,此时7台1组的节点会重新并成功选取 Master,产生双主,俗称脑裂。

2、选举集群元信息

3、allocation过程

4、index recovery

5、集群启动日志

二、节点启动流程

概述:

1、启动脚本

2、解析命令行参数和配置文件

3、加载安全配置

4、检查内部环境

5、检测外部环境

6、启动内部模块

7、启动keepalive线程

【参考】

https://www.easyice.cn/

最新文章

  1. Openjudge 1.13-23:区间内的真素数(每日一水)
  2. Docker 学习笔记(CentOS 7.1)
  3. backbone event 事件订阅 和发布 源码小读
  4. UIView下使用Animation控制动画
  5. Fast portable non-blocking network programming with Libevent
  6. C#之任务,线程和同步
  7. 网易面经(Java开发岗)
  8. MAC配置VIM环境
  9. js(javaScript)的各种事件触发,以常见为主eg:onclick
  10. day03 Python字典dict的增删查改及常用操作
  11. Mybatis延迟加载、缓存
  12. 抽屉之Tornado实战(1)--分析与架构
  13. Java Collection - 003 高效的找出两个List中的不同元素
  14. java8 数据结构的改变(一)
  15. LeetCode: Multiply Strings 解题报告
  16. 6 - Python内置结构 - 字典
  17. MINA学习汇总
  18. Python基础入门-字符串
  19. php屏蔽错误消息
  20. Educational Codeforces Round 42 (Rated for Div. 2) A

热门文章

  1. 架构-数据库访问-SQL语言进行连接数据库服务器:SQL语言进行连接数据库服务器
  2. 认识DOM(上)
  3. javascript 动态修改css样式方法汇总(四种方法)
  4. import * as 用法
  5. 常用的adb命令收集
  6. linux下mysql 5.7编写存储过程一直报错说Mysql server version for the right syntax
  7. 应用安全_WTS-WAF绕过
  8. JavaSE编码试题强化练习3
  9. [Python3] 014 集合的内置方法
  10. Bootstrap selectpicker 强制向下