选举机制 启动时选举 从配置文件中读取集群个数1从.cfg文件中读取server的个数,以便在过半时选出leader 交换票1每台服务器把自己的票(myid和zxid)投给参与选举的节点 投票12345将自己手上比较大的票投出去先比较zxid,再比较myid因为zxid代表着事务id,在这台Zookeeper服务器上每当有一个数改变,zxid就会加一,为了保证数据一致,就优先选择zxid直到投票箱的数额 2022-01-24 Zookeeper原理
谈谈对Zookeeper的理解 应用场景 1从三种典型的应用场景介绍 集群管理在多个节点组成的集群中,为了保证集群的HA(Highly Available)的特性, 每个节点都需要冗余一份数据副本,这种情况下需要保证客户端访问集群中的任意一个节点都是最新的数据 解决方案Zookeeper 提供了 CP 模型,来保证集群中的每一个节点的数据一致性, 需要调用sync方法进行数据同步,但是Zookeeper并不是一个强一致性模 2022-01-24 Zookeeper原理
节点类型 持久化节点1create /xxx 临时节点1create -e /xxx 有序节点1create -s /xxx 容器节点1create -c /xxx 2022-01-24 Zookeeper原理
ZAB协议 介绍12Zookeeper作为非常重要的分布式协调组件,需要进行集群部署,集群中会以一主多从的形式进行部署。Zookeeper为了保证数据的一致性,使用了ZAB(Zookeeper Atomic Broadcast)协议,这个协议解决了Zookeeper的崩溃恢复和主从数据同步的问题 作用121.保证数据的一致性2.崩溃恢复 定义的四种节点状态Looking:选举状态 Following:从节 2022-01-24 Zookeeper原理
CAP理论 介绍123456CAP理论为:1. Consistency 一致性2. Availability 可用性3. Partition tolerance 分区容错性(分布式项目必选)最多只能满足上述的其中两项 一致性12All nodes see the same data at the same time所有节点在同一时间对外开发完全一样的数据 可用性12Reads and writes alw 2022-01-24 Zookeeper原理
主从复制原理 全量复制123451. 主节点通过bgsave命令fork子进程进行RDB持久化,该过程非常消耗CPU、内存(页表复制)、磁盘I/O2. 主节点通过网络将RDB文件发送给从节点,对主节点的带框会带来很大的消耗3. 从节点清空老数据、载入新RDB文件,其过程是阻塞的,无法响应客户端命令;如果从节点执行bgrewriteaof,也会带来额外的消耗 增量复制123456781. 复制偏移量:执行复制的 2022-01-24 Redis原理
为什么Redis非常快 基于内存1绝大部分请求都是纯粹的内存操作。 数据结构简单1对数据操作非常简单 采用单线程1避免了多线程上下文切换和竞争产生的消耗 多路复用1使用了多路I/O复用模型,非阻塞IO 底层模型1使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求 2022-01-24 Redis原理
九大数据结构 String12345一个key对应一个valueString类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。字符串value最多可以是512M 数据结构123简单动态字符串(Simple Dynamic String,缩写SDS),类似于Java的ArrayList当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多 2022-01-24 Redis原理
缓存淘汰算法和淘汰策略 常用淘汰算法FIFO12First In First Out,先进先出根据缓存被存储的时间,离当前最远的数据优先被淘汰 LRU12Least Recently Used,最近最少使用。算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 实现原理1231. 新数据插到链表头部2. 每当缓存命中,则将数据移动到链表头部3. 当链表满时,将链 2022-01-24 Redis原理