与锁的比较 相同点 如果用锁保护临界区,那么同一时刻只会有一个线程在临界区内,其他线程都在临界区外面。lock-free 是所有线程都可以进临界区,但是最后只有一个线程可以继...
![240](https://cdn2.jianshu.io/assets/default_avatar/10-e691107df16746d4a9f3fe9496fd1848.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240)
与锁的比较 相同点 如果用锁保护临界区,那么同一时刻只会有一个线程在临界区内,其他线程都在临界区外面。lock-free 是所有线程都可以进临界区,但是最后只有一个线程可以继...
概述 概述为什么我们需要无锁编程无锁编程的相关概念 为什么我们需要无锁编程 多核编程中,我们常用锁来避免多个线程同时修改同一个数据时产生的条件竞争。当锁本身成为瓶颈时,我们又...
索引 索引为什么我们需要索引实现优缺点怎么正确地使用索引 为什么我们需要索引 加快数据库的查询速度。 实现 索引的基本原理:保存一些元数据作为路标,帮助我们快速查找数据。如果...
层级压缩 为什么需要压缩 因为 sstable 文件越来越多,会耗尽磁盘空间,并且也会影响查找效率,所以需要压缩和合并 sstable。我们把修改、删除都当作添加操作导致了 ...
leveldb 的基本原理 背景 leveldb 是一个持久化的键值存储数据库引擎。google 将 leveldb 和 paxos 结合,搞出了一个分布式存储系统 bigT...
安全性 安全性是指Raft需要保证每个状态机需要以相同的顺序执行相同的命令。我们前面所说的领导者选举和日志复制的机制并不足以保证这个要求。 选举约束 前面所讲的选举机制,还存...
日志复制 问题 目的是什么? 保持集群中大多数服务器的状态一致。 复制过程的关键点是什么?处理日志不一致。 日志 日志由一个个顺序编号的日志项组成。每个日志项都存储了: 领导...
领导者选举 什么是领导者 Raft 首先选举一个服务器作为领导者,然后让这个领导者全面负责可复制日志的管理。领导者需要从客户端接受日志条目,将这些日志条目复制到别的服务器,告...
基本概念 领导者 At any given time server is in the one of three states: Followers only respond...
Quorum NWR 自定义一致性 Quorum NWR 自定义一致性问题原理实现应用 问题 我们已经有一个 AP 型的 KV 系统了,现在要求数据具有强一致性,怎么办?重新...
Gossip 协议实现最终一致性 背景 有些系统对可用性比较敏感,例如监控主机和业务运行的告警系统,我们希望系统在极端条件(例如集群中只有一个节点可用)下也能正常运行。根据 ...
突破领导者的限制 突破领导者的限制问题哈希算法一致性哈希算法算法原理虚拟节点对比 问题 假设我们使用 Raft 算法实现了一个 KV 服务。虽然领导者简化了共识协商,但是写请...
Basic Paxos [TOC] 什么是Basic Paxos 确定一个值 Basic Paxos描述的是多个节点如何就某个值达成共识。 三种角色 在Basic Paxos...
BASE理论 为什么需要BASE理论 强一致性的分布式系统或者事务性的分布式系统使用起来非常方便,不需要考虑太多,就像单机系统一样。但是,根据CAP理论,强一致性必然会影响可...
事务的隔离性 事务的隔离性:多个事务并发执行时不受到彼此干扰的特性。也就是说,不同用户的多个事务并发执行,一个用户的事务不会被另一个用户的事务干扰,多个并发事务间要相互隔离。...
ACID理论 背景 ACID理论是数据库为了保证事务正确性而提出的一种理论,它包含四个约束: 原子性(Atomicity):组成事务的一组操作,要么全部成功,要么全部失败,不...
CAP理论 为什么需要CAP理论 开发分布式系统时,我们需要根据业务特点,设计合适的分区容错一致性模型,以实现集群能力。这个问题的棘手点在于:当系统发生分区错误时,应该如何保...
bthread_start_background 函数在后端创建一个bthread,但是该bthread没有立刻运行,而是等待空闲的worker pthread将其偷过来运行...
bthread概述 [TOC] TaskControl TaskControl用于管理brpc创建的worker pthread。 初始化 创建一个 TaskControl ...
butex butex是一种类似于futex的同步原语,由brpc实现 。但futex只能够用于同步pthread,而butex除了pthread,还可以同步bthread。...