展开全部

主编推荐语

全面介绍分布式系统设计原理与实践。

内容简介

本书从原理和实践角度全面介绍如何设计分布式系统。内容包括节点、通信、并发与并行、面向对象的分布式架构、面向服务的分布式架构、面向消息的分布式架构、EST风格的架构、微服务架构、Serverless架构、Cloud Native架构、虚拟化与容器技术、分布式计算、分布式存储、分布式监控、分布式版本控制、数据一致性、分布式事务、安全性、可用性等,内容丰富、案例新颖,相关理论与技术实践较为前瞻。本书最后还提供了一个综合实战案例,手把手教读者如何来基于Spring Cloud技术来实现微服务架构。

目录

  • 封面
  • 扉页
  • 版权信息
  • 目录
  • 内容提要
  • 前言
  • 第1章 分布式系统概述
  • 1.1 什么是分布式系统
  • 1.2 分布式系统常用术语
  • 1.3 集中式系统与分布式系统
  • 1.4 分布式系统特征
  • 1.5 设计分布式系统所面临的挑战
  • 1.6 本章小结
  • 1.7 习题
  • 第2章 节点
  • 2.1 什么是线程
  • 2.2 进程和线程
  • 2.3 线程和纤程
  • 2.4 编程语言中的线程对象
  • 2.4.1 定义和启动一个线程
  • 2.4.2 暂停线程执行
  • 2.4.3 中断线程
  • 2.4.4 等待另一个线程完成
  • 2.5 节点之间的通信
  • 2.5.1 消息丢失
  • 2.5.2 消息乱序
  • 2.5.3 数据错误
  • 2.5.4 不可靠的TCP
  • 2.6 本章小结
  • 2.7 习题
  • 第3章 通信
  • 3.1 本地过程调用
  • 3.1.1 本地过程调用的概念
  • 3.1.2 本地过程调用的实现
  • 3.2 远程过程调用
  • 3.2.1 远程过程调用原理
  • 3.2.2 如何实现远程过程调用
  • 3.2.3 远程过程调用API
  • 3.2.4 远程过程调用发展历程
  • 3.3 常用网络I/O模型
  • 3.3.1 阻塞I/O模型
  • 3.3.2 非阻塞I/O模型
  • 3.3.3 I/O复用模型
  • 3.3.4 信号驱动I/O模型
  • 3.3.5 异步I/O模型
  • 3.3.6 几种I/O模型的比较
  • 3.4 I/O操作中的常用术语
  • 3.4.1 阻塞和非阻塞
  • 3.4.2 同步与异步
  • 3.4.3 总结
  • 3.5 实战:在Java中实现常用网络I/O模型
  • 3.5.1 Java OIO
  • 3.5.2 Java NIO
  • 3.5.3 Java AIO
  • 3.6 事件驱动
  • 3.6.1 事件驱动编程
  • 3.6.2 事件循环的实现
  • 3.6.3 Reactor模型
  • 3.6.4 Proactor模型
  • 3.7 本章小结
  • 3.8 习题
  • 第4章 并发与并行
  • 4.1 并发与并行的区别
  • 4.2 线程与并发
  • 4.3 并发带来的风险
  • 4.3.1 死锁
  • 4.3.2 饥饿
  • 4.3.3 活锁
  • 4.4 解决并发风险
  • 4.4.1 同步
  • 4.4.2 原子访问
  • 4.5 提升系统并发能力
  • 4.5.1 无锁化设计提升并发能力
  • 4.5.2 缓存提升并发能力
  • 4.5.3 更细颗粒度的并发单元
  • 4.6 本章小结
  • 4.7 习题
  • 第5章 面向对象的分布式架构
  • 5.1 基于对象的分布式架构
  • 5.2 常用的分布式对象系统
  • 5.2.1 微软DCOM
  • 5.2.2 CORBA
  • 5.2.3 Java RMI
  • 5.3 分布式对象系统优缺点
  • 5.4 实战:基于Java RMI实现分布式对象通信
  • 5.4.1 示例概述
  • 5.4.2 编写RMI服务器
  • 5.4.3 编写RMI客户端
  • 5.4.4 运行
  • 5.5 本章小结
  • 5.6 习题
  • 第6章 面向服务的分布式架构
  • 6.1 什么是面向服务的架构
  • 6.2 SOA的基本概念
  • 6.3 基于Web服务的SOA
  • 6.3.1 XML-RPC
  • 6.3.2 SOAP
  • 6.3.3 Microsoft.NET Remoting
  • 6.3.4 Java中的XML Web服务
  • 6.3.5 超越SOAP
  • 6.3.6 SOA的演变
  • 6.4 Web服务的分类
  • 6.4.1 “大”Web服务
  • 6.4.2 RESTful Web服务
  • 6.4.3 Web服务技术选型
  • 6.5 实战:基于JAX-WS实现Web服务
  • 6.5.1 JAX-WS概述
  • 6.5.2 创建Web服务器和客户端的基本步骤
  • 6.5.3 JAX-WS终端要求
  • 6.5.4 创建基于JAX-WS的服务器
  • 6.5.5 创建基于JAX-WS的客户端
  • 6.5.6 运行
  • 6.6 本章小结
  • 6.7 习题
  • 第7章 面向消息的分布式架构
  • 7.1 什么是面向消息的分布式架构
  • 7.1.1 常用术语
  • 7.1.2 使用场景
  • 7.1.3 常用技术
  • 7.2 常见消息中间件产品介绍
  • 7.2.1 Apache ActiveMQ
  • 7.2.2 RabbitMQ
  • 7.2.3 Apache RocketMQ
  • 7.3 消息通信常用模式
  • 7.3.1 工作队列
  • 7.3.2 发布/订阅
  • 7.3.3 路由
  • 7.3.4 主题
  • 7.3.5 RPC
  • 7.4 了解JMS规范
  • 7.4.1 JMS消息风格
  • 7.4.2 JMS接口
  • 7.5 实战:基于JMS的消息发送和接收
  • 7.5.1 项目概述
  • 7.5.2 项目配置
  • 7.5.3 编码实现
  • 7.5.4 运行
  • 7.6 本章小结
  • 7.7 习题
  • 第8章 REST风格的架构
  • 8.1 什么是REST
  • 8.2 REST设计原则
  • 8.3 成熟度模型
  • 8.3.1 第0级:使用HTTP作为传输方式
  • 8.3.2 第1级:引入了资源的概念
  • 8.3.3 第2级:根据语义使用HTTP动词
  • 8.3.4 第3级:使用HATEOAS
  • 8.4 REST API管理
  • 8.5 常用技术
  • 8.5.1 JAX-RS规范
  • 8.5.2 Jersey
  • 8.5.3 Apache CXF
  • 8.5.4 Spring Web MVC
  • 8.6 实战:基于Java实现REST API
  • 8.6.1 基于Jersey来构建REST服务
  • 8.6.2 基于Apache CXF来构建REST服务
  • 8.6.3 基于Spring Web MVC来构建REST服务
  • 8.7 本章小结
  • 8.8 习题
  • 第9章 微服务架构
  • 9.1 什么是微服务架构
  • 9.2 微服务架构与SOA架构的区别
  • 9.2.1 单体架构的例子
  • 9.2.2 微服务架构的例子
  • 9.3 何时采用微服务架构
  • 9.4 常用技术
  • 9.4.1 Jetty HTTP Server
  • 9.4.2 构建REST程序
  • 9.4.3 运行
  • 9.5 实战:基于Spring Boot实现微服务
  • 9.5.1 配置环境
  • 9.5.2 REST API设计
  • 9.5.3 编写程序代码
  • 9.5.4 安装REST客户端
  • 9.5.5 运行、测试程序
  • 9.6 微服务与通信
  • 9.6.1 HTTP通信
  • 9.6.2 消息通信
  • 9.6.3 事件驱动的通信
  • 9.7 了解CQRS
  • 9.7.1 CQRS概述
  • 9.7.2 CQRS与Event Sourcing的关系
  • 9.7.3 CQRS好处
  • 9.8 实战:基于CQRS微服务通信
  • 9.8.1 配置
  • 9.8.2 Aggregate
  • 9.8.3 Command
  • 9.8.4 Event
  • 9.8.5 测试
  • 9.9 本章小结
  • 9.10 习题
  • 第10章 Serverless架构
  • 10.1 什么是Serverless架构
  • 10.2 Serverless架构的典型应用
  • 10.2.1 UI驱动的应用
  • 10.2.2 消息驱动的应用
  • 10.3 常见的Serverless架构
  • 10.3.1 AWS Lambda
  • 10.3.2 Google Cloud Functions
  • 10.3.3 Iron.io
  • 10.3.4 IBM OpenWhisk
  • 10.3.5 Serverless Framework
  • 10.3.6 Azure WebJobs
  • 10.4 Serverless架构原则
  • 10.4.1 根据需要使用计算服务执行代码
  • 10.4.2 编写单一用途的无状态函数
  • 10.4.3 设计基于推送的、事件驱动的管道
  • 10.4.4 创建更粗实、更强大的前端
  • 10.4.5 拥抱第三方服务
  • 10.5 实战:使用AWS平台实现Serverless架构
  • 10.6 本章小结
  • 10.7 习题
  • 第11章 Cloud Native架构
  • 11.1 Cloud Native概述
  • 11.1.1 软件需求的发展
  • 11.1.2 开发方式的巨变
  • 11.1.3 云是大势所趋
  • 11.2 Cloud Native特性
  • 11.2.1 以云为基础架构
  • 11.2.2 云服务
  • 11.2.3 无服务
  • 11.2.4 可扩展
  • 11.2.5 高可用
  • 11.2.6 敏捷
  • 11.2.7 云优先
  • 11.3 12-Factor
  • 11.3.1 基准代码
  • 11.3.2 依赖
  • 11.3.3 配置
  • 11.3.4 后端服务
  • 11.3.5 构建、发布、运行
  • 11.3.6 进程
  • 11.3.7 端口绑定
  • 11.3.8 并发
  • 11.3.9 易处理
  • 11.3.10 开发环境与线上环境等价
  • 11.3.11 日志
  • 11.3.12 管理进程
  • 11.4 Cloud Native成功案例分析
  • 11.4.1 Amazon
  • 11.4.2 Netflix
  • 11.4.3 淘宝网
  • 11.5 Cloud Native与微服务架构的关系
  • 11.6 Cloud Native与Serverless架构的关系
  • 11.7 Cloud Native的优点及面临的挑战
  • 11.7.1 Cloud Native优点
  • 11.7.2 Cloud Native不是“银弹”
  • 11.7.3 面临的挑战
  • 11.8 本章小结
  • 11.9 习题
  • 第12章 虚拟化与容器技术
  • 12.1 虚拟化技术
  • 12.2 容器与虚拟机
  • 12.2.1 成熟度方面的比较
  • 12.2.2 启动速度的比较
  • 12.2.3 安全方面的比较
  • 12.2.4 性能方面的比较
  • 12.3 基于容器的持续部署
  • 12.3.1 持续部署管道
  • 12.3.2 测试
  • 12.3.3 构建
  • 12.3.4 部署
  • 12.3.5 蓝-绿部署
  • 12.3.6 运行预集成以及集成后测试
  • 12.3.7 回滚与清理
  • 12.3.8 决定每个步骤的执行环境
  • 12.3.9 完成整个持续部署流
  • 12.4 容器技术与微服务架构
  • 12.4.1 基于Google Kubernetes架构
  • 12.4.2 基于DaoCloud DCE架构
  • 12.5 容器技术与Cloud Native架构
  • 12.6 实战:基于Docker发布微服务
  • 12.6.1 创建微服务
  • 12.6.2 微服务容器化
  • 12.6.3 使用Gradle来构建Docker image
  • 12.6.4 运行image
  • 12.6.5 访问应用
  • 12.6.6 关闭容器
  • 12.6.7 Docker发布微服务
  • 12.7 本章小结
  • 12.8 习题
  • 第13章 分布式计算
  • 13.1 分布式计算概述
  • 13.2 分布式计算应用场景
  • 13.3 分布式计算常用技术
  • 13.3.1 MapReduce
  • 13.3.2 Apache Hadoop
  • 13.3.3 Apache Spark
  • 13.4 实战:基于Spark词频统计
  • 13.4.1 项目概述
  • 13.4.2 项目配置
  • 13.4.3 编码实现
  • 13.4.4 运行
  • 13.5 本章小结
  • 13.6 习题
  • 第14章 分布式存储
  • 14.1 分布式存储概述
  • 14.2 分布式存储应用场景
  • 14.3 分布式存储常用技术
  • 14.3.1 Bigtable
  • 14.3.2 Apache HBase
  • 14.3.3 Apache Cassandra
  • 14.3.4 Memcached
  • 14.3.5 Redis
  • 14.3.6 MongoDB
  • 14.4 实战:基于MongoDB文件服务器
  • 14.4.1 文件服务器的需求
  • 14.4.2 所需技术
  • 14.4.3 文件服务器的实现
  • 14.4.4 运行
  • 14.4.5 其他配置项
  • 14.5 本章小结
  • 14.6 习题
  • 第15章 分布式监控
  • 15.1 分布式监控概述
  • 15.2 分布式监控应用场景
  • 15.3 分布式监控常用技术
  • 15.3.1 Nagios
  • 15.3.2 Zabbix
  • 15.3.3 Consul
  • 15.3.4 ZooKeeper
  • 15.4 实战:基于ZooKeeper的服务注册和发现
  • 15.4.1 项目概述
  • 15.4.2 项目配置
  • 15.4.3 编码实现
  • 15.4.4 运行
  • 15.5 本章小结
  • 15.6 习题
  • 第16章 分布式版本控制
  • 16.1 版本控制系统简史
  • 16.2 集中式与分布式版本控制系统
  • 16.3 常用技术
  • 16.3.1 Bazaar
  • 16.3.2 Mercurial
  • 16.3.3 Git
  • 16.4 了解Git Flow
  • 16.4.1 分支定义
  • 16.4.2 新功能开发工作流
  • 16.4.3 Bug修复工作流
  • 16.4.4 版本发布工作流
  • 16.5 本章小结
  • 16.6 习题
  • 第17章 数据一致性
  • 17.1 什么是CAP理论
  • 17.2 为什么CAP只能三选二
  • 17.3 CAP常见模型
  • 17.3.1 牺牲分区容错性(CA模型)
  • 17.3.2 牺牲可用性(CP模型)
  • 17.3.3 牺牲一致性(AP模型)
  • 17.4 CAP的意义及发展
  • 17.4.1 CAP最新发展
  • 17.4.2 BASE
  • 17.5 以数据为中心的一致性模型
  • 17.5.1 严格一致性
  • 17.5.2 持续一致性
  • 17.5.3 顺序一致性
  • 17.5.4 因果一致性
  • 17.5.5 入口一致性
  • 17.6 以客户为中心的一致性模型
  • 17.6.1 单调读一致性
  • 17.6.2 单调写一致性
  • 17.6.3 读写一致性
  • 17.6.4 写读一致性
  • 17.7 本章小结
  • 17.8 习题
  • 第18章 分布式事务
  • 18.1 本地事务
  • 18.1.1 一个银行转账的例子
  • 18.1.2 事务隔离级别
  • 18.2 分布式事务面临的挑战
  • 18.3 节点复制
  • 18.3.1 Master-Slave复制
  • 18.3.2 Master-Master多主复制
  • 18.4 两阶段提交
  • 18.4.1 准备阶段
  • 18.4.2 提交阶段
  • 18.4.3 两阶段提交状态机
  • 18.4.4 两阶段提交的缺陷
  • 18.5 三阶段提交
  • 18.5.1 CanCommit
  • 18.5.2 PreCommit
  • 18.5.3 DoCommit
  • 18.5.4 三阶段提交状态机
  • 18.5.5 三阶段提交的缺陷
  • 18.6 Paxos算法
  • 18.6.1 问题描述
  • 18.6.2 提案的选定
  • 18.6.3 获取被选定的提案值
  • 18.6.4 进展性
  • 18.6.5 实现
  • 18.6.6 总结
  • 18.6.7 缺陷
  • 18.7 Raft算法
  • 18.7.1 Raft概述
  • 18.7.2 复制状态机
  • 18.7.3 Raft算法基础
  • 18.7.4 Raft算法Leader选举
  • 18.7.5 Raft算法日志同步
  • 18.7.6 Raft算法安全性
  • 18.7.7 处理Follower和Candidate异常
  • 18.7.8 时间要求及可用性
  • 18.7.9 集群成员关系变更
  • 18.7.10 日志压缩
  • 18.7.11 客户端交互
  • 18.7.12 总结
  • 18.8 消息
  • 18.8.1 本地消息表
  • 18.8.2 事务消息
  • 18.8.3 如何保障幂等性
  • 18.8.4 总结
  • 18.9 本章小结
  • 18.10 习题
  • 第19章 安全性
  • 19.1 基本概念
  • 19.1.1 安全威胁、策略和机制
  • 19.1.2 密码与数字签名
  • 19.2 加密算法
  • 19.2.1 对称加密
  • 19.2.2 使用对称密钥加密的数字签名
  • 19.2.3 非对称加密
  • 19.2.4 使用公钥加密的数字签名
  • 19.3 安全通道
  • 19.3.1 SSL/TLS
  • 19.3.2 SSL握手过程
  • 19.3.3 HTTPS
  • 19.4 访问控制
  • 19.4.1 防火墙
  • 19.4.2 堡垒机
  • 19.4.3 拒绝服务
  • 19.4.4 访问控制的模型
  • 19.5 实战:基于Spring Security实现安全认证
  • 19.5.1 添加依赖
  • 19.5.2 添加业务代码
  • 19.5.3 配置消息转换器
  • 19.5.4 配置Spring Security
  • 19.5.5 创建应用配置类
  • 19.5.6 创建内嵌Jetty的服务器
  • 19.5.7 应用启动器
  • 19.5.8 运行应用
  • 19.6 本章小结
  • 19.7 习题
  • 第20章 可用性
  • 20.1 故障不可避免
  • 20.2 使用冗余提升系统可用性
  • 20.3 常用副本控制协议
  • 20.3.1 中心化副本控制协议
  • 20.3.2 primary-secondary协议
  • 20.3.3 去中心化副本控制协议
  • 20.4 负载均衡技术
  • 20.4.1 客户端发现模式
  • 20.4.2 服务端发现模式
  • 20.5 实战:基于NGINX实现服务高可用
  • 20.5.1 配置负载均衡
  • 20.5.2 负载均衡常用算法
  • 20.5.3 实现Web服务的高可用
  • 20.5.4 运行
  • 20.6 本章小结
  • 20.7 习题
  • 第21章 综合实战:基于Spring Cloud的微服务架构设计与实现
  • 21.1 Spring Cloud概述
  • 21.1.1 什么是Spring Cloud
  • 21.1.2 Spring Cloud与Spring Boot的关系
  • 21.2 Spring Cloud入门配置
  • 21.2.1 Maven配置
  • 21.2.2 Gradle配置
  • 21.2.3 声明式方法
  • 21.3 Spring Cloud的子项目介绍
  • 21.3.1 Spring Cloud子项目的组成
  • 21.3.2 Spring Cloud组件的版本
  • 21.4 实现微服务的注册与发现
  • 21.4.1 服务发现的意义
  • 21.4.2 如何集成Eureka Server
  • 21.4.3 如何集成Eureka Client
  • 21.4.4 实现服务的注册与发现
  • 21.5 本章小结
  • 21.6 习题
  • 附录 本书所涉及的软件及相关版本
  • 参考文献
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。