欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • 分布式系统模式(英文版)/架构师书库
      • 作者:(美)乌梅什·乔希|责编:张莹
      • 出版社:机械工业
      • ISBN:9787111777526
      • 出版日期:2025/04/01
      • 页数:410
    • 售价:51.6
  • 内容大纲

        本书深入剖析了主流开源分布式系统模式,包括模式中的常见问题和解决方案,并展示了Kafka和Kubernetes等系统的真实代码示例,以帮助企业架构师和开发人员更好地理解这些系统的工作原理,以及分布式系统的设计原则,为应对数据存储在多台服务器上时可能出现的各种问题做好准备。
        通过阅读本书,读者将:
        了解什么是分布式系统,以及为什么需要分布式系统。
        更深入地理解分布式系统模式设计所面临的挑战,以选择合适的云服务和产品。
        理解包括数据库、内存数据网格、消息代理,以及各种云服务在内的系统的实现原理。
        自信地浏览开源代码库,并清晰地看到模式和解决方案如何映射到如Kafka和Kubernetes这样的真实世界系统中。
        本书对于分布式架构工程师以及想要构建自己的分布式系统的开发者来说,是一本有价值的参考书。
  • 作者介绍

        乌梅什·乔希,软件架构领域的领军人物,Thoughtworks首席顾问,拥有超过24年的IT行业经验。分布式系统领域的资深专家,对分布式系统的设计和实现有着深刻的理解,对分布式系统的架构模式有系统的梳理和总结。在Scala、Akka、Kafka、Cassandra、Kubernetes、Docker和云服务等技术领域积累了丰富的经验,这些技术专长使他能够从理论到实践全面掌握分布式系统的核心问题。
  • 目录

    第一部分  概述
      第1章  分布式系统
        1.1  单服务器的限制
        1.2  业务逻辑和数据层分离
        1.3  数据分区
        1.4  故障观察
        1.5  复制:屏蔽故障
          1.5.1  进程止甚崩溃
          1.5.2  网络延迟
          1.5.3  进程暂停
          1.5.4  时钟不同步
        1.6  定义分布式系统
        1.7  模式方法
      第2章  模式概述
        2.1  在单服务器上持数据的弹性
        2.2  竞争性更新
        2.3  处理主节点失效
        2.4  依托“世代时钟”解决多节点故障问题
        2.5  符合仲裁机制方可提交日志记录
        2.6  从节点基于高水位标记提交
        2.7  主节点用消息队列来持对众多客户端的响应
        2.8  由从节点处理读请求以减轻主节点的负担
        2.9  把大量数据分散到多节点分区
        2.10  通过复制分区提高集群的弹性
        2.11  跨分区维持一性少需要两个段
        2.12  分布式系统的顺序不能依赖于系统时间戳
        2.13  一性核心可以管理数据集群的成员资格
        2.14  用Gossip传播机制来管理分布式集群
    第二部分  数据复制模式
      第3章  预写日志
        3.1  问题的提出
        3.2  解决方案
          3.2.1  实现考虑
          3.2.2  在事务存储中的使用
          3.2.3  与事件溯源对比
        3.3  示例
      第4章  日志分段
        4.1  问题的提出
        4.2  解决方案
        4.3  示例
      第5章  低水位标记
        5.1  问题的提出
        5.2  解决方案
          5.2.1  基于快照的低水位标记
          5.2.2  基于时间的低水位标记
        5.3  示例
      第6章  主节点与从节点
        6.1  问题的提出
        6.2  解决方案
          6.2.1  主节点选举

          6.2.2  仅有多数读/写不足以提供强一性证
        6.3  示例
      第7章  心跳机制
        7.1  问题的提出
        7.2  解决方案
          7.2.1  小型集群:基于共识算法的系统
          7.2.2  技术考虑
          7.2.3  大型集群:基于Gossip协议
        7.3  示例
      第8章  多数法定节点数
        8.1  问题的提出
        8.2  解决方案
          8.2.1  决定集群中服务器的数量
          8.2.2  灵活的多数法定节点数
        8.3  示例
      第9章  世代时钟
        9.1  问题的提出
        9.2  解决方案
        9.3  示例
      第10章  高水位标记
        10.1  问题的提出
        10.2  解决方案
        10.3  示例
      第11章  Paxos
        11.1  问题的提出
        11.2  解决方案
          11.2.1  协议流程
          11.2.2  键值存储示例
          11.2.3  弹性Paxos
        11.3  示例
      第12章  复制日志
        12.1  问题的提出
        12.2  解决方案
          12.2.1  Multi-Paxos和Raft
          12.2.2  复制客户端请求
          12.2.3  主节点选举
          12.2.4  技术考虑
          12.2.5  推送与拉取
          12.2.6  日志中有什么
        12.3  示例
      第13章  单一更新队列
        13.1  问题的提出
        13.2  解决方案
          13.2.1  队列的选择
          13.2.2  使用通道和轻量级线程
          13.2.3  限流
          13.2.4  其他考虑
        13.3  示例
      第14章  请求等待列表
        14.1  问题的提出

        14.2  解决方案
        14.3  示例
      第15章  幂等接收器
        15.1  问题的提出
        15.2  解决方案
          15.2.1  使已存的客户端请求过期
          15.2.2  移除已注册的客户端
          15.2.3  多一次、少一次和恰好一次作
        15.3  示例
      第16章  由从节点处理读请求
        16.1  问题的提出
        16.2  解决方案
          16.2.1  寻找近的副本
          16.2.2  连接断开或慢速从节点
          16.2.3  读写一性
          16.2.4  线性化读
        16.3  示例
      第17章  版本化值
        17.1  问题的提出
        17.2  解决方案
          17.2.1  版本化键的排序
          17.2.2  读多个版本
          17.2.3  MVCC和事务隔离性
          17.2.4  使用类似RocksDB的存储引擎
        17.3  示例
      第18章  版本向量
        18.1  问题的提出
        18.2  解决方案
          18.2.1  版本向量比较
          18.2.2  在键值存储中使用版本向量
        18.3  示例
    第三部分  数据分区模式
      第19章  固定分区
        19.1  问题的提出
        19.2  解决方案
          19.2.1  选择哈希函数
          19.2.2  将分区映射到集群节点
          19.2.3  替代方案:分区数量与节点数量成比例
        19.3  示例
      第20章  键范围分区
        20.1  问题的提出
        20.2  解决方案
          20.2.1  预定义键范围
          20.2.2  示例场景
          20.2.3  自动分割范围
        20.3  示例
      第21章  两段提交
        21.1  问题的提出
        21.2  解决方案
          21.2.1  锁和事务隔离性

          21.2.2  提交和回滚
          21.2.3  示例场景
          21.2.4  使用版本化值
          21.2.5  使用复制日志
          21.2.6  故障处理
          21.2.7  异构系统中的事务
        21.3  示例
    第四部分  分布式时间的模式
      第22章  Lamport时钟
        22.1  问题的提出
        22.2  解决方案
          22.2.1  因果关系、时间和先后关系
          22.2.2  键值存储示例
          22.2.3  分有序
          22.2.4  单个主节点更新值
        22.3  示例
      第23章  混合时钟
        23.1  问题的提出
        23.2  解决方案
          23.2.1  使用混合时钟的多版本存储
          23.2.2  使用时间戳读取值
          23.2.3  为分布式事务分配时间戳
        23.3  示例
      第24章  时钟约束等待
        24.1  问题的提出
        24.2  解决方案
          24.2.1  读请求重启
          24.2.2  使用时钟约束API
        24.3  示例
    第五部分  集群管理模式
      第25章  一性核心
        25.1  问题的提出
        25.2  解决方案
          25.2.1  元数据存储
          25.2.2  处理客户端交互
        25.3  示例
      第26章  租约
        26.1  问题的提出
        26.2  解决方案
          26.2.1  将租约附加到键值存储中的键上
          26.2.2  处理主节点失效
        26.3  示例
      第27章  状态监控
        27.1  问题的提出
        27.2  解决方案
          27.2.1  客户端实现
          27.2.2  服务器端实现
          27.2.3  处理连接失败
        27.3  示例
      第28章  Gossip传播

        28.1  问题的提出
        28.2  解决方案
          28.2.1  避不要的状态交换
          28.2.2  选择Gossip节点的标准
          28.2.3  群组成员资格和故障检测
          28.2.4  处理节点重启
        28.3  示例
      第29章  应急主节点
        29.1  问题的提出
        29.2  解决方案
          29.2.1  向所有现有成员发送成员资格更新
          29.2.2  一个示例场景
          29.2.3  处理缺失的成员资格更新
          29.2.4  故障检测
          29.2.5  与主从模式的比较
        29.3  示例
    第六部分  节点间通信模式
      第30章  单套接字通道
        30.1  问题的提出
        30.2  解决方案
        30.3  示例
      第31章  请求批处理
        31.1  问题的提出
        31.2  解决方案
        31.3  示例
      第32章  请求管道
        32.1  问题的提出
        32.2  解决方案
        32.3  示例
    参考文献