Raft概论

Raft概论

Thursday, Jun 18, 2020

@ Shen Jianan

分布式系统很大程度上解决了我们在单机系统上遇到的可靠性和扩展性问题。为了解决扩展性,引入了分片;为了解决可靠性,引入了副本。而引入的这两个机制,又带来了更多需要解决的刁钻问题。 在本篇文章中,笔者对分布式一致性算法Raft进行介绍。由于主要介绍大的结构和流程,所以称为“概论”。如果想要知道更多细节,可以下载参考资料中的内容进行更细致的研究。 本文结构:首先简要介绍共识算法可以解决那些问题;接着,对Raft算法的主要流程和数据结构进行概述;对Raft有一个整体印象后,聚焦于选主流程、日志复制中的细节和问题;最后,证明Raft算法的正确性,并描述Raft如何处理成员变更的问题。
Redis设计与实现——事件

Redis设计与实现——事件

Thursday, Jun 16, 2016

@ Shen Jianan

事件 Redis服务器是事件驱动程序,需要处理两种事件: 文件事件——服务器与客户端通信产生的事件 时间事件——Redis中类似serverCron函数的给定时间点执行的事件
Redis设计与实现——AOF持久化

Redis设计与实现——AOF持久化

Monday, Jun 13, 2016

@ Shen Jianan

AOF持久化 RDB持久化通过保存键值对来记录数据库,而AOF则通过保存写命令来记录数据库的。写入的命令有特殊的格式,通过文本格式写入,只是在命令中间增加一些固定的协议分隔符。
Redis设计与实现——RDB持久化

Redis设计与实现——RDB持久化

Monday, Jun 13, 2016

@ Shen Jianan

RDB持久化 RDB文件的创建与载入 SAVE命令会阻塞Redis服务器进程,这期间不能处理任何命令。而BGSAVE会派生一个子进程,由子进程创建RDB文件。
Redis设计与实现——SDS哈希表

Redis设计与实现——SDS哈希表

Monday, May 30, 2016

@ Shen Jianan

哈希表 dictht结构体定义了一个哈希表,保存着指向dictEntry的指针的数组。通过使用链表来解决哈希冲突。 dict结构体是字典的结构体,每个字典有两个哈希表,便于在rehash的时候依然可以进行遍历操作。dict使用safe值来标记当前是否是安全状态,用table值标记当前被迭代的哈希表号码。
BigTable论文阅读&个人翻译

BigTable论文阅读&个人翻译

Monday, Jan 11, 2016

@ Shen Jianan

Bigtable是2005年谷歌的论文:《Bigtable: A Distributed Storage System for Structured Data》中介绍的一种分布式存储系统,后来被Hadoop社区实现为HBase。读懂这篇论文,那么理解HBase也就非常容易了。本篇博客略去了性能评估、API和应用实例的部分,只讲比较关键的设计与机制部分。 这篇论文在不少的地方已经有人翻译了,我为什么还要再翻译一遍嘞?一是这些都是别人翻译的,可能会有些疏漏(比如这篇厦大数据库实验室的翻译,我在看论文看不懂的时候就会去找它来对照理解,但是对照英文版本就会发现有些地方的翻译是有问题的),还是看英文原版比较准确地理解意思。另一方面,能够把论文翻译出来,也就说明比较清楚地了解论文的意思了,这也算是一种检验。

About Me

2018.02至今 杭州嘉云数据 算法引擎

2017.6-2017.12 菜⻦网络-⼈工智能部-算法引擎

2016.09-2018.06 南京大学研究生

2015.07-2015.09 阿里巴巴-ICBU-实习

2012.09-2016.06 南京大学本科