- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 《redis设计与实现》-17集群故障转移
一 RAFT算法 书接上篇17 集群的故障检测,本篇主要介绍集群检测到某主节点下线后,是如何选举新的主节点的。注意到Redis集群是无中心的,那么使用分布式一致性的算法来使集群中各节点能对在新主节点的选举上达成共识就是一个比较可行的方案。Redis使用了Raft算法来做主节点选举的。所以这里先简单介绍下Raft的原理:( 坦白的说,我是看不懂论文的数学公式,真让人头疼,之前在看书pa...
2019-01-29 22:57:55 535
原创 《redis设计与实现》-17 集群的故障检测
一 序 redis集群中的节点分为master 和slave 。其中master负责处理槽;slave 会复制master 的数据, 并在master 下线后, 代替它继续进行处理命令请求。下面分别介绍节点复制、故障检测,限于篇幅故障转移下一篇整理。二 节点复制 向集群节点发送"CLUSTER REPLICATE <nodeID>"命令,使收到命令的集群节点成为...
2019-01-27 22:09:43 803
原创 《redis设计与实现》-17 集群重新分片reshard
一 重新分片 Redis集群的重新分片操作可以将任意数量已经指派给某个节点(源节点)的槽改为指派给另一个节点(目标节点),并且相关槽所属的键值对也会从源节点被移动到目标节点。 重新分片操作可以在线进行,在重新分片过程中,集群不需要下线,并且源节点和目标节点都可以继续处理命令请求。二 重新分片的原理 Redis的集群管理工具redis-trib,通过向源节点和目标节点发送命令来进...
2019-01-23 23:52:27 1792
原创 《redis设计与实现》-17 在集群中执行命令
一 序在对数据库中的16384个槽都进行了指派之后,集群就会进入上线状态,这时客户端就可以向集群中的节点发送数据命令了。当客户端向节点发送与数据库键有关的命令时,接收命令的节点会计算出命令要处理的数据库键属于哪个槽,并检查这个槽是否指派给了自己:如果键所在的槽正好就指派给了当前节点,那么节点直接执行这个命令 如果将所在的槽并没有指派给当前节点,那么节点会向客户端返回一个MOVED错误,...
2019-01-18 23:50:45 269
原创 《redis设计与实现》-17槽指派
一 序 Redis集群通过分片的方式来保存数据库中的键值对:集群的整个数据库被分为16384个槽(slot),数据库中每个键都属于这16384个槽的其中一个,集群中的每个节点可以处理0个或最多16384个槽。 当数据库总的16384个槽都有节点在处理时,集群处于上线状态(ok);相反地,如果数据库中有任何一个槽没有得到处理,那么集群处于下线状态(fail)。 通过向节...
2019-01-18 17:02:33 555
原创 《redis设计与实现》-17 集群 gossip协议
一 gossip协议 上一篇介绍了集群的cluster meet命令实现过程,握手过程结束后,A节点会将B节点信息通过gossip协议传播给集群的其他节点,其他节点也会与B节点握手,最终经过一段时间后,B节点会被集群的所有节点认识。 补充下背景知识: Gossip算法如其名,灵感来自办公室八卦,只要一个人八卦一下,在有限的时间内所有的人都会知道该八卦的信息,这种方式也与...
2019-01-16 23:23:37 5233 1
原创 《redis设计与实现》-17 cluster节点
一 序 关于redis的集群,官网介绍比较全面了。https://redis.io/topics/cluster-spec 设计目标:High performance and linear scalability up to 1000 nodes. There are no proxies, asynchronous replication is used, and no merge...
2019-01-14 21:42:16 871
原创 awk 入门介绍
一 序 为了提高线上排查问题的能力,对于日志的查找分析是有要求的。所以作为Linux的常用命令,awk 少不了。所以本篇也接着这个机会,整理下awk的入门知识。 awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已...
2019-01-09 22:08:48 297
原创 《redis设计与实现》-16sentinel 源码部分
一 序 上一篇整理了sentinal的理论部分,本篇继续看下源码部分,源码在sentinel.c 。 redis的sentinel的解决方案基于主从复制结构着眼于分布式存储的高可用方案,那么数据的持久化跟复制就是基础。而sentinel就是针对异常情况下,如何对于实现主从切换,并且对于客户端透明。所以从整个系统来看,sentinel本身是监督者的身份,没有存储功能。而为了实现监督...
2019-01-07 00:46:34 1653 13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人