摘要:
本文是第六章Partition的读书笔记。 这部分讨论的内容是 怎么partition,发生 热点数据/数据偏斜 的时候怎么办 partition后数据的二级索引怎么管理 rebalancing 重平衡:添加删除节点时分区怎么处理 服务发现:怎么知道自己要的数据在哪个节点上,节点或分区发生变化了怎么 阅读全文
摘要:
本文是第五章Replication中single leader部分的读书笔记。 这部分内容讨论的问题是 以怎样的方式复制(同步 or 异步) 怎么增加新的follower follower或leader故障了怎么办 复制日志该以什么样的格式存储 single-leader架构下,读follower有 阅读全文
摘要:
本文是第七章Transaction部分的读书笔记。 这部分包括的内容为: ACID的含义 读已提交和它存在的问题 快照隔离(可重复读)和它存在的问题 可串行化的实现方法 个人感觉这部分的亮点在于对 lost update 和 Write Skew and Phantoms 的分析. 我的总结就是3种 阅读全文
摘要:
本文是第三章SSTable and LSM-Trees部分的读书笔记。 这部分包括的内容为 介绍如何用Hash Index与log组成key-value数据库,为了引入以SSTable作为log的实现 SSTable的特点 如何处理读写请求,如何保证crash-safe compact和merge的 阅读全文
摘要:
本文介绍golang标准库HTTP middleware的写法。 1. http.Handler与http.HandlerFunc http.Handler type Handler interface { ServeHTTP(ResponseWriter, *Request) } http.Han 阅读全文
摘要:
本文介绍Go语言中 == 在一些常见场景下的判断逻辑。 基础类型与指针 对于基础类型和指针,== 符号都是直接判断值是否相等。 因为指针的值实际上是内存地址,所以对于指针是否相等的判断和c语言一样都是看指针是否指向同一个内存地址 // 基础类型: int, string等, 都是值比较 var i1 阅读全文
摘要:
源自: https://medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649 对于如下的程序,我们需要通过三步得到最终的QAP programe ⇒ gates gates ⇒ 阅读全文
摘要:
本文介绍基于单个Redis节点实现分布式锁与基于多个Redis节点实现分布式锁的方案。 1. 基于单个Redis节点 对于基于单个Redis节点的分布式锁来说,加锁时带上uniqueID与timeout,释放时对比uniqueID就是目前的最佳做法,至少官方就是这么推荐的。但为了有更深刻的理解,我们 阅读全文