December 10, 2016
Programming
之前阅读论文并实现了一个可扩展的哈希表,已经在生产环境使用。这里简单描述一下思路,详细的实现可以参见论文。
哈希的常规实现方式是开辟一个长度为N的大数组,新插入一个元素时,先根据元素hash值模除N,将元素节点插入这个桶,桶上有元素,一般可以拉链解决冲突。当元素越来越多,每个桶上链表就会比较 ...
Read more
November 10, 2016
DistributedSystem
一致性术语的理解一致性这个中文术语在计算机的不同领域有不同的含义,对应的英文术语也是不一样的:Consistency, Consensus, Coherence等等。
就这三个术语而言,其区别可以简单的如下理解:
Coherence这个单词只在Cache Coherence场景下出现过,它 ...
Read more
October 23, 2016
Paxos
Raft论文解读
摘要Raft是针对复制日志的一致性协议。效果上,Raft等价于multi-paxos协议;效率上和Paxos一样。但是Raft协议的整体结构与Paxos差别比较大,Raft协议更加容易理解,也更加适合工程实现。Raft为了使协议更加容易理解,将一致性协议拆分为独立的几个要素 ...
Read more
October 11, 2016
Programming
Chapter 1 整洁代码Lebanc’s Law: later equals never.
Chapter 2 有意义的命名Chapter 3 函数每个函数一个抽象层级
Chapter 4 注释Chapter 5 格式Chapter 6 对象和数据结构Chapter 7 错误处理Chap ...
Read more
October 10, 2016
Paxos
Read more
October 10, 2016
Puzzle
陶哲轩的博客上的一个puzzle。
地址在这里:https://terrytao.wordpress.com/2008/02/05/the-blue-eyed-islanders-puzzle/ 。你可以直接跳过去读原文。
这是发生在一个在虚构的岛上的故事,不过因为这里面的逻辑本身就非常微妙 ...
Read more
October 2, 2016
Database
读过Paxos等论文的读者,应该对复制状态机(Replicated State Machine)的概念并不陌生。复制状态机在分布式系统中是一个很简单却很强大的模型,也是一种很有价值的思想。
模型一句话描述就是:多个节点上,从相同的初始状态开始,执行相同的一串命令,产生相同的最终状态。
这里 ...
Read more
September 21, 2016
Database
Spanner是Google搞的一个scalable, multi-version, globally distributed, synchronously-replicated dataase。它的最大特点就是数据分布在全球范围内,支持外部一致性的分布式事务。在2012年Spanner论文 ...
Read more
September 10, 2016
DistributedSystem
Time, Clocks, and the Ordering of Events in a Distributed System这篇论文Lamport发表于1978年,讨论的是分布式系统下的时钟和事件序问题。
图片来自《星际穿越》(计算机分布式系统环境与爱因斯坦相对论时空观具有本质相似性) ...
Read more
August 18, 2016
Programming
最近听到一个度量软件复杂度的概念,叫decoupling level,想起来以前买过一本《人月神话》,这两天把它从书堆里面翻出来了。虽然书有300多页,不过里面大部分观点,我想从业者应该都认可,因此书里的新东西并不多。
Chapter 1: 焦油坑职业的乐趣:工作的创造性;产品有价值;零件正 ...
Read more