网站颜色:

从Paxos到Zookeeper(分布式一致性原理与实践 大型网站和分布式系统开发教材编程教程 程序设计教材 计算机教材书 新华书店.

  • 产品名称:从Paxos到Zookeeper
  • 品牌:电子工业出版社
  • 书名:从Paxos到Zookeeper
  • 作者:倪超
  • 作者地区:中国大陆
  • 定价:75.00元
  • 书名:从Paxos到Zookeeper
  • 开本:16开
  • 是否是套装:否
  • 出版社名称:电子工业出版社

媒体评论

    感谢软件开源和知识开源,新浪爱彩利用各开源软件和算法,构建了核心交易系统和分布式中间件系统:利用ZooKeeper 构建了分布式 ID 生成器、分布式单例控制器、Dubbo RPC 框架,以及基于 Hadoop/JStorm/Spark 体系的业务系统,等等。ZooKeeper 的稳定性和对一致性的保证一直为业界所称道,在大量的分布式系统和开源组件中得到应用。本书是作者在长期使用 ZooKeeper 后深入研究其算法原理和源代码的总结,将对读者在分布式一致性的理论学习与实践上有启发意义。

新浪爱彩首席架构师 周锋

分布式一致性是中国银联风控系统架构与设计的重要目标,新一代的银联反洗钱交易实时分析系统采用 Storm 进行大数据的实时计算,ZooKeeper 作为 Storm 的重要组成部分,为数据一致性提供了关键保障。本书深入浅出地描述了分布式一致性这一问题的由来,并对 ZooKeeper 在 Storm、Hadoop 和 HBase 等大型分布式系统中的应用场景进行了详尽介绍,针对 ZooKeeper在分布式系统中的业务实践与运维保障提供了重要参考。

中国银联反洗钱系统核心负责人 罗科勤

分布式地理信息系统的研发挑战主要在于它的地理信息共享和分布式协调操作,ZooKeeper 作为一个针对大型分布式系统的高可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步和组服务等,正好能够解决地信系统中的诸多分布式一致性问题。该书兼顾分布式一致性的理论和实践,并重点讲解了 ZooKeeper,适合不同层次的读者阅读。

浙江省测绘局地信系统设计师 王浩烽

腾讯在 2010 年启动建设开放云平台时,面临着海量第三方虚拟机之间访问限制规则以及内网透明负载均衡配置的管理等问题。引入 ZooKeeper 之后,一直稳定运行至今,利用其发布订阅特性很好地保证了规则数据和配置信息的一致性,确保了服务的可用性。本书从分布式一致性理论出发,再以ZooKeeper 系统为例详尽地介绍了这个开源系统的架构与实现,并结合实际的应用场景和运维经验为在实战中面临分布式问题的读者提供了重要参考。

腾讯企业级产品中心架构师 陈盛龙

一致性是计算机学科中最“硬”和最重要的问题之一,可见写这样一个主题挑战之大。阿里巴巴业务庞大,倪超之前维护的为整个集团提供一致性方案的 ZooKeeper 集群,场景之复杂、规模之大在国内甚至世界上都可能是罕见的。本人由于工作需要对 Paxos 和 ZooKeeper 进行了粗浅的学习,所以有机会和倪超有过这方面的交流,乐自不言,获益彼多。本书兼顾理论与实践,希望让读者读完之后有所提升:使用上知其所以然,架构上能选择出合适又低成本的方案。

阿里巴巴 Dubbo 框架、PaaS 平台资深架构师 & 核心开发  李鼎

在我的工作经历中,有多次与分布式系统的配置管理中心打过交道,比如之前在老东家阿里巴巴负责 HSF 服务框架,以及最近在陌陌负责的 MOA 服务框架的工作。基于简单可用的原则,这些场景都没有选择使用 ZooKeeper,而是自己实现了配置管理系统。但最近在参与分布式缓存服务建设的过程中,我们发现已经无法再绕开分布式协调问题,这时,ZooKeeper作为行业的成熟实践就成了我们的不二之选。这本书的作者倪超是我在阿里的同事,一直从事着与 ZooKeeper 相关的工作 , 在这个领域积累了丰富的经验。本书从理论、设计实现和应用场景等多个方面对 ZooKeeper 进行了深入介绍,非常值得一读。

陌陌基础平台部主管 宓学强

搜狐从 2009 年微博时代初期就利用 ZooKeeper 的发布与订阅模型实现了对 CDN URL 和一些基本管理配置的动态加载。至今 ZooKeeper 已经被运用在了搜狐各大业务线上,完成了许多分布式高可用服务的构建,范围涉及分布式缓存、服务化框架和前端业务系统等等,帮助团队解决了分布式方面的主要技术障碍,大大提高了业务稳定性和运维效率。本书全面详尽地介绍了分布式环境中各个典型场景下的 ZooKeeper 应用实例,为读者构建自己的分布式高可用服务提供了参考。

搜狐移动事业部高级运维主管 刘鹏

 

目录

 

第1章  分布式架构    1

1.1  从集中式到分布式    1

1.1.1  集中式的特点    2

1.1.2  分布式的特点    2

1.1.3  分布式环境的各种问题    4

1.2  从ACID到CAP/BASE    5

1.2.1  ACID    5

1.2.2  分布式事务    8

1.2.3  CAP和BASE理论    9

小结    15

 

第2章  一致性协议    17

2.1  2PC与3PC    17

2.1.1  2PC    17

2.1.2  3PC    21

2.2  Paxos算法    24

2.2.1  追本溯源    25

2.2.2  Paxos理论的诞生    26

2.2.3  Paxos算法详解    27

小结    37

 

第3章  Paxos的工程实践    39

3.1  Chubby    39

3.1.1  概述    39

3.1.2  应用场景    40

3.1.3  设计目标    40

3.1.4  Chubby技术架构    43

3.1.5  Paxos协议实现    52

3.2  Hypertable    55

3.2.1  概述    55

3.2.2  算法实现    57

小结    58

 

第4章  ZooKeeper与Paxos    59

4.1  初识ZooKeeper    59

4.1.1  ZooKeeper介绍    59

4.1.2  ZooKeeper从何而来    62

4.1.3  ZooKeeper的基本概念    62

4.1.4  为什么选择ZooKeeper    64

4.2  ZooKeeper的ZAB协议    65

4.2.1  ZAB协议    65

4.2.2  协议介绍    66

4.2.3  深入ZAB协议    71

4.2.4  ZAB与Paxos算法的与区别    77

小结    78

 

 

第5章  使用ZooKeeper    79

5.1  部署与运行    79

5.1.1  系统环境    79

5.1.2  集群与单机    80

5.1.3  运行服务    84

5.2  客户端脚本    88

5.2.1  创建    88

5.2.2  读取    89

5.2.3  更新    90

5.2.4  删除    91

5.3  Java客户端API使用    91

5.3.1  创建会话    91

5.3.2  创建节点    95

5.3.3  删除节点    99

5.3.4  读取数据    100

5.3.5  更新数据    109

5.3.6  检测节点是否存在    113

5.3.7  权限控制    115

5.4  开源客户端    120

5.4.1  ZkClient    120

5.4.2  Curator    130

小结    162

 

第6章  ZooKeeper的典型应用场景    163

6.1  典型应用场景及实现注    163

6.1.1  数据发布/订阅    164

6.1.2  负载均衡    166

6.1.3  命名服务    170

6.1.4  分布式协调/通知    173

6.1.5  集群管理    179

6.1.6  Master选举    185

6.1.7  分布式锁    188

6.1.8  分布式队列    194

小结    197

6.2  ZooKeeper在大型分布式系统中的应用    197

6.2.1  Hadoop    198

6.2.2  HBase    203

6.2.3  Kafka    207

6.3  ZooKeeper在阿里巴巴的实践与应用    213

6.3.1  案例一  消息中间件:Metamorphosis    213

6.3.2  案例二  RPC服务框架:Dubbo    217

6.3.3  案例三  基于MySQL Binlog的增量订阅和消费组件:Canal    219

6.3.4  案例四  分布式数据库同步系统:Otter    223

6.3.5  案例五  轻量级分布式通用搜索平台:终搜    226

6.3.6  案例六  实时计算引擎:JStorm    238

小结    242

 

第7章  ZooKeeper技术内幕    243

7.1  系统模型    243

7.1.1  数据模型    243

7.1.2  节点特性    244

7.1.3  版本——保证分布式数据原子性操作    246

7.1.4  Watcher——数据变更的通知    249

7.1.5  ACL——保障数据的安全    265

7.2  序列化与协议    272

7.2.1  Jute介绍    272

7.2.2  使用Jute进行序列化    273

7.2.3  深入Jute    275

7.2.4  通信协议    277

7.3  客户端    284

7.3.1  一次会话的创建过程    286

7.3.2  服务器地址列表    289

7.3.3  ClientCnxn:网络I/O    295

7.4  会话    298

7.4.1  会话状态    298

7.4.2  会话创建    299

7.4.3  会话管理    304

7.4.4  会话清理    307

7.4.5  重连    309

7.5  服务器启动    311

7.5.1  单机版服务器启动    312

7.5.2  集群版服务器启动    315

7.6  Leader选举    321

7.6.1  Leader选举概述    321

7.6.2  Leader选举的算法分析    323

7.6.3  Leader选举的实现细节    328

7.7  各服务器角色介绍    335

7.7.1  Leader    335

7.7.2  Follower    338

7.7.3  Observer    339

7.7.4  集群间消息通信    339

7.8  请求处理    342

7.8.1  会话创建请求    343

7.8.2  SetData请求    351

7.8.3  事务请求转发    354

7.8.4  GetData请求    355

7.9  数据与存储    356

7.9.1  内存数据    356

7.9.2  事务日志    358

7.9.3  snapshot——数据快照    364

7.9.4  初始化    368

7.9.5  数据同步    372

小结    376

第8章  ZooKeeper运维    379

8.1  配置详解    379

8.1.1  基本配置    379

8.1.2  高级配置    380

8.2  四字命令    384

8.3  JMX    390

8.3.1  开启远程JMX    390

8.3.2  通过JConsole连接ZooKeeper    391

8.4  监控    397

8.4.1  实时监控    397

8.4.2  数据统计    398

8.5  构建一个高可用的集群    398

8.5.1  集群组成    398

8.5.2  容灾    399

8.5.3  扩容与缩容    402

8.6  日常运维    402

8.6.1  数据与日志管理    402

8.6.2  Too many connections    404

8.6.3  磁盘管理    405

小结    405

附录A  Windows平台上部署ZooKeeper    406

附录B  从源代码开始构建    409

附录C  各发行版本重大更新记录    414

附录D  ZooKeeper源代码阅读指引    418

内容简介

    本书从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议。同时,本书深入介绍了分布式一致性问题的工业解决方案——ZooKeeper,并着重向读者展示这一分布式协调框架的使用方法、内部实现及运维技巧,旨在帮助读者全面了解ZooKeeper,并更好地使用和运维ZooKeeper。全书共8章,分为五部分:第一部分(第1章)主要介绍了计算机系统从集中式向分布式系统演变过程中面临的挑战,并简要介绍了ACID、CAP和BASE等经典分布式理论;第二部分(第2~4章)介绍了2PC、3PC和Paxos三种分布式一致性协议,并着重讲解了ZooKeeper中使用的一致性协议——ZAB协议;第三部分(第5~6章)介绍了ZooKeeper的使用方法,包括客户端API的使用以及对ZooKeeper服务的部署与运行,并结合真实的分布式应用场景,总结了ZooKeeper使用的最佳实践;第四部分(第7章)对ZooKeeper的架构设计和实现原理进行了深入分析,包含系统模型、Leader选举、客户端与服务端的工作原理、请求处理,以及服务器角色的工作流程和数据存储等;第五部分(第8章)介绍了ZooKeeper的运维实践,包括配置详解和监控管理等,重点讲解了如何构建一个高可用的ZooKeeper服务。

作者简介

    倪超,阿里巴巴集团高级研发工程师,国家认证系统分析师,毕业于杭州电子科技大学计算机系。2010年加入阿里巴巴中间件团队担任研发实习岗位,一直从事ZooKeeper的开发与运维工作,从中学习与总结了不少分布式一致性相关的理论与实践经验,尤其对ZooKeeper及其相关技术有非常深入的研究。目前在中间件团队专家组任职产品经理,负责分布式产品的产品化和云计算化改造工作。

新浪微博:@ni掌柜

 

热门设计服务