代码改变世界

随笔分类 -  分布式系统

分布式系统理论 - 从放弃到入门

2017-01-01 02:45 by bangerlee, 8169 阅读, 收藏, 编辑
摘要: 随承载用户数量的增加和容灾的需要,越来越多互联网后台系统从单机模式切换到分布式集群。回顾自己毕业五年来的工作内容,同样有这样的转变。 毕业头两年负责维护运行在刀片机上的业务,在机房里拔插单板的日子是我逝去的青春。设备之间通过VCS组成冷备,但即使有双机软件保护,宕机、网络丢包等问题发生时业务仍会受影 阅读全文

分布式系统理论进阶 - Paxos变种和优化

2016-12-18 20:38 by bangerlee, 6703 阅读, 收藏, 编辑
摘要: 引言 《分布式系统理论进阶 - Paxos》中我们了解了Basic Paxos、Multi Paxos的基本原理,但如果想把Paxos应用于工程实践,了解基本原理还不够。 有很多基于Paxos的优化,在保证一致性协议正确(safety)的前提下,减少Paxos决议通信步骤、避免单点故障、实现节点负载 阅读全文

分布式系统理论进阶 - Raft、Zab

2016-10-26 21:50 by bangerlee, 19227 阅读, 收藏, 编辑
摘要: 引言 《分布式系统理论进阶 - Paxos》介绍了一致性协议Paxos,今天我们来学习另外两个常见的一致性协议——Raft和Zab。通过与Paxos对比,了解Raft和Zab的核心思想、加深对一致性协议的认识。 Raft Paxos偏向于理论、对如何应用到工程实践提及较少。理解的难度加上现实的骨感, 阅读全文

分布式系统理论基础 - 选举、多数派和租约

2016-08-21 21:11 by bangerlee, 10799 阅读, 收藏, 编辑
摘要: 选举(election)是分布式系统实践中常见的问题,通过打破节点间的对等关系,选得的leader(或叫master、coordinator)有助于实现事务原子性、提升决议效率。 多数派(quorum)的思路帮助我们在网络分化的情况下达成决议一致性,在leader选举的场景下帮助我们选出唯一lead 阅读全文

分布式系统理论进阶 - Paxos

2016-07-12 23:22 by bangerlee, 28417 阅读, 收藏, 编辑
摘要: 引言 《分布式系统理论基础 - 一致性、2PC和3PC》一文介绍了一致性、达成一致性需要面临的各种问题以及2PC、3PC模型,Paxos协议在节点宕机恢复、消息无序或丢失、网络分化的场景下能保证决议的一致性,是被讨论最广泛的一致性协议。 Paxos协议同时又以其“艰深晦涩”著称,下面结合 Paxos 阅读全文

分布式系统理论基础 - 时间、时钟和事件顺序

2016-05-03 10:58 by bangerlee, 17000 阅读, 收藏, 编辑
摘要: 十六号…… 四月十六号。一九六零年四月十六号下午三点之前的一分钟你和我在一起,因为你我会记住这一分钟。从现在开始我们就是一分钟的朋友,这是事实,你改变不了,因为已经过去了。我明天会再来。 —— 《阿飞正传》 现实生活中时间是很重要的概念,时间可以记录事情发生的时刻、比较事情发生的先后顺序。分布式系统 阅读全文

分布式系统理论基础 - CAP

2016-04-04 18:27 by bangerlee, 19089 阅读, 收藏, 编辑
摘要: 引言 CAP是分布式系统、特别是分布式存储领域中被讨论最多的理论,“什么是CAP定理?”在Quora 分布式系统分类下排名 FAQ 的 No.1。CAP在程序员中也有较广的普及,它不仅仅是“C、A、P不能同时满足,最多只能3选2”,以下尝试综合各方观点,从发展历史、工程实践等角度讲述CAP理论。希望 阅读全文

RPC框架实现 - 通信协议篇

2015-05-07 23:03 by bangerlee, 14902 阅读, 收藏, 编辑
摘要: RPC(Remote Procedure Call,远程过程调用)框架是分布式服务的基石,实现RPC框架需要考虑方方面面。其对业务隐藏了底层通信过程(TCP/UDP、打包/解包、序列化/反序列化),使上层专注于功能实现;框架层面,提供各类可选架构(多进程/多线程/协程);应对设备故障(高负载/死机) 阅读全文

分布式服务协调员zookeeper - 应用场景和监控

2015-04-15 00:00 by bangerlee, 5306 阅读, 收藏, 编辑
摘要: zookeeper在分布式系统中作为协调员的角色,可应用于Leader选举、分布式锁、配置管理等服务的实现。以下我们从zookeeper提供的API、应用场景和监控三方面学习和了解zookeeper(以下简称ZK)。 ZK API ZK以Unix文件系统树结构的形式管理存储的数据,图示如下: 其中每 阅读全文