
分布式系统|共识算法 Paxos
Paxos 算法是由 Leslie Lamport 在 1990 年代提出的一种基于消息传递共识算法。在讨论分布式算法时,Paxos 几乎是一个绕不开的话题。在过去的几十年中,它已经成为分布式共识的象征,许多流行的共识算法都是基于 Paxos 进行改进的,比如 Fast Paxos、Raft、ZAB 等协议。虽然 Paxos 算法可以认为是一些共识算法的基础,但是其本身也相对较复杂,理解起来有一定的难度。
Paxos 算法是由 Leslie Lamport 在 1990 年代提出的一种基于消息传递共识算法。在讨论分布式算法时,Paxos 几乎是一个绕不开的话题。在过去的几十年中,它已经成为分布式共识的象征,许多流行的共识算法都是基于 Paxos 进行改进的,比如 Fast Paxos、Raft、ZAB 等协议。虽然 Paxos 算法可以认为是一些共识算法的基础,但是其本身也相对较复杂,理解起来有一定的难度。
GDB 官方手册
Raft 算法是一类基于日志复制的分布式共识算法,由于 Raft 算法易于理解和实现,在提出后,迅速获得了广泛关注,并成为了分布式系统中实际应用最广泛的一致性算法之一。目前,已经有十多种语言的 Raft 算法实现框架,比较有代表性的有 etcd、Consul,CockroachDB 等。
由于分布式系统中的程序是部署在多个节点上的,各个节点通过网络通信。一旦有网络通信,就会有网络的可靠性问题,延迟问题,以及各个节点的故障问题等等。可能出现有的节点能正常工作,而有的节点挂掉,导致有的请求达到正常节点就能正常处理,而打到故障节点又会失败。又或者因为网络故障,导致有的写操作在部分节点成功,而在另一些节点失败,总之可能存在种种状态不一致的情况,这些问题的存在影响着系统在高性能,高可用等方面的设计。
崩溃一致性是指系统在发生崩溃(例如服务器宕机、进程异常退出或断电)后,能够确保持久化的数据仍然处于一致的有效状态。也就是说,无论何时发生崩溃,系统存储上的数据要么保持崩溃前的完整更新,要么回退到崩溃前的稳定状态,不会出现部分更新导致的数据不完整或损坏。
针对腾讯 CSIG 一面的问题做一个总结,包括读写操作在整个内核中的 I/O 请求链路,页缓存、零拷贝技术,以及用户态 I/O 和系统调用的优化。
ART 索引是由 Viktor Leis, Alfons Kemper, Thomas Neumann 等人提出,它相比于 B+ 树的主要区别在于 B+ 树是面向磁盘的,而 ART 则是面向内存的,即 ART 索引是需要全部加载到内存中
为了使不同的文件系统共存, Linux 内核在用户层与具体文件 系统之前增加了虚拟文件系统中间层,它对复杂的系统进行抽象化,对用户提供了统一的文件操作接口。无论是 ext2/3/4、FAT32、NTFS 存储的文件,还是 /proc、/sys 提供 的信息还是硬件设备,无论内容是在本地还是网络上,都使用一样的 open、read、write 来访问,使得 “一切皆文件” 的理念被实现,这也正是软件中间层的魅力。