Unique Binary Search Trees II

作者:sryan 更新时间:2019-04-08 17:20 分类:数据结构与算法

Given an integer n, generate all structurally unique BST’s (binary search trees) that store va...

点击数:92 回复数:0

Etcd的并行落盘与apply

作者:sryan 更新时间:2019-02-28 18:25 分类:分布式

etcd的raft实现可以说是一个非常标准的raft实现,对于状态机返回的各种状态,我们只要依照etcd建议的处理流程来处理就可以了。 etcd为了加快log的应用,可能还有点为了逻辑解耦,将log的...

点击数:300 回复数:0

ETCD的raft实现 (2)

作者:sryan 更新时间:2019-02-28 17:56 分类:分布式

在这篇文章中,整理一下数据流的逻辑。我们要明确,raft状态机的驱动有以下几种方式: 逻辑层的ticker 传输层收到的各种包的step 逻辑层的各种propose 除了以上的方式,raft状态机无法...

点击数:279 回复数:0

ETCD的raft实现 (1)

作者:sryan 更新时间:2019-01-30 16:50 分类:分布式

读完raft的论文,大致对于一些细节有所了解,整体的实现也有所了解,总结起来,raft是一个共识协议,保证了一个集群内log的一致性。当log一致,则把log apply到state machine后...

点击数:452 回复数:0

raft思考推导杂记

作者:sryan 更新时间:2019-01-30 17:31 分类:分布式

基础结论与疑问: Leader不会删除任何自己的日志,只会将自己的日志复制到Follower中 Follower的日志可能被覆盖,常见场景:该Follower在某个term中是Leader,但是数据未...

点击数:254 回复数:0

MySQL Group Replication源码简析(3)

作者:sryan 更新时间:2018-11-09 16:14 分类:数据库

上一篇主要介绍了事务提交的流程,得知在事务提交前会通过 waitTicket 来等待冲突检测的结果,本篇主要来理一下冲突检测如何通知到提交事务的线程,也就是一个条件变量。相似地,我们还是先来理一下几个...

点击数:420 回复数:0

MySQL Group Replication源码简析(2)

作者:sryan 更新时间:2018-11-08 18:03 分类:数据库

上一个简析主要介绍了MGR的插件注册、调用流程,这篇文章会主要记录一下MGR中几个关键模块的梳理,便于后续将它们串联起来。 各种类用途 Continuation Continuation 其实是一个 ...

点击数:516 回复数:0

MySQL Group Replication源码简析(1)

作者:sryan 更新时间:2018-11-08 14:51 分类:数据库

这段时间在准备17号技术大会的技术分享,第一次在那么大的场合进行分享,还是有点紧张的,所以做了不少准备。但是说实话,双主解决方案只要没有涉及到冲突解决的,实现就那么回事,没有什么太大的技术含量。在方案...

点击数:474 回复数:0

锁、内存屏障与缓存一致性

作者:sryan 更新时间:2018-10-17 15:40 分类:操作系统

在应用层,关于锁的使用大家应该都很熟悉了,作用就是为了保护共享变量不被同时操作而导致无法预测的情况。然而深入到具体实现,锁仅仅只是锁定临界区吗? 锁的实现其实还必须实现一个语义,也就是内存屏障。内存屏...

点击数:1218 回复数:1

[ETCD] The event in requested index is outdated and cleared

作者:sryan 更新时间:2018-09-17 10:07 分类:工具使用

最近遇到一个很奇怪的问题,在线下调试很正常,但是到测试环境后, watch 后发现一直报 The event in requested index is outdated and cleared 错误...

点击数:720 回复数:0