作者 |
周志明 张程 |
丛书名 |
出版社 |
机械工业出版社 |
ISBN |
9782106221112 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8081487 - 凤凰架构:构建可靠的大型分布式系统--------------------------- 内容简介 这是一本从架构视角讲解如何构建大型分布式系统的著作,是超级畅销书《深入理解Java虚拟机》的作者周志明多年架构和研发经验的总结,得到了多位行业资深架构专家的联袂推荐。 全书共16章,分为演进中的架构、架构师的视角、分布式的基石、不可变基础设施和技术方法论五部分。 第1部分 演进中的架构(第1章) 着重介绍了软件开发历史中多种主流架构风格出现的契机、解决的问题以及带来的新缺陷。 第二部分 架构师的视角(第2~5章) 总结了一名架构师应该在架构设计时思考哪些问题,有哪些主流的解决方案和行业标准做法,各种方案有什么优缺点,不同的解决方法会带来什么不同的影响,等等。 第三部分 分布式的基石(第6~10章) 重点讨论了“不同架构风格是应该在技术规范上统一,还是由应用系统自行解决”这个问题,给出了解决思路、方法和常见工具。 第四部分 不可变基础设施(第11~15章) 重点讲解了基础设施不变性的目的、原理与实现途径,包括虚拟化容器、容器间网络、持久化存储、资源与调度、服务网格等内容。 第五部分 技术方法论(第16章) 面向技术决策者集中讨论了与分布式、微服务、架构等相关的理论话题,将解决问题的能力归纳、总结、升华为方法论。 全书以实践为导向,一个案例贯穿全书,同时给出了基于Spring Boot、Spring Cloud、Kubernetes、Istio、AWS Lambda 五种架构风格的样例工程。 . ---------------------------8071046 - 分布式系统架构:技术栈详解与快速进阶--------------------------- 内容简介 本书从全栈角度讲解了分布式系统涉及的各项主要技术,从原理剖析、应用场景和实践案例3个维度展开,是作者多年分布式系统研发和架构经验的总结。 从前端到后端、从高效交互到负载均衡、从网络传输到Web服务器、从高并发到高可用……本书囊括了分布式系统的整个技术体系,内容详实、结构清晰,能帮助读者理解和掌握分布式系统架构设计的难点和调优方案。 全书一共10章,具体内容如下: 第1章介绍了分布式架构的理念、目标、作用,以及架构和设计中的难点; 第2章讲解了分布式架构中前端和后端的交互方式、交互难点、高效交互调优; 第3章讲解了分布式环境下网络传输的过程、难点、性能调优; 第4章讲解了Nginx的负载均衡、页面缓存、限流、高可用、性能调优; 第5章讲解了Varnish的HTTP加速、数据缓存、缓存策略、高可用、性能调优; 第6章讲解了Tomcat的原理、加载机制、安全管理、高可用集群、性能优化; 第7章讲解了分布式环境中高并发的问题,通过多种技术方案,如缓存、消息队列、分布式锁等方式去优化和处理,提高系统整体的吞吐量; 第8章介绍了普通事务与分布式事务的差异性,以及分布式事务的多种处理方式; 第9章讲解了如何通过高效索引优化、高可用的技术方案让MySQL能够提供更高效的数据库服务; 第10章讲解了分布式环境中的高可用,即如何通过容量预估、全链路压测、容灾设计来提高系统整体的可用性和健壮性。 |
目录 |
[套装书具体书目] 8071046 - 分布式系统架构:技术栈详解与快速进阶 - 9787111655909 - 机械工业出版社 - 定价 89 8081487 - 凤凰架构:构建可靠的大型分布式系统 - 9787111683919 - 机械工业出版社 - 定价 99 ---------------------------8081487 - 凤凰架构:构建可靠的大型分布式系统--------------------------- 赞誉 自序 前言 第一部分 演进中的架构 第1章 服务架构演进史2 1.1 原始分布式时代2 1.2 单体系统时代5 1.3 SOA时代8 1.4 微服务时代12 1.5 后微服务时代16 1.6 无服务时代19 第二部分 架构师的视角 第2章 访问远程服务24 2.1 远程服务调用24 2.1.1 进程间通信24 2.1.2 通信的成本26 2.1.3 三个基本问题28 2.1.4 统一的RPC30 2.1.5 分裂的RPC32 2.2 REST设计风格34 2.2.1 理解REST35 2.2.2 RESTful的系统37 2.2.3 RMM41 2.2.4 不足与争议45 第3章 事务处理48 3.1 本地事务49 3.1.1 实现原子性和持久性50 3.1.2 实现隔离性54 3.2 全局事务57 3.3 共享事务62 3.4 分布式事务64 3.4.1 CAP与ACID64 3.4.2 可靠事件队列67 3.4.3 TCC事务69 3.4.4 SAGA事务72 第4章 透明多级分流系统75 4.1 客户端缓存76 4.1.1 强制缓存77 4.1.2 协商缓存79 4.2 域名解析81 4.3 传输链路83 4.3.1 连接数优化84 4.3.2 传输压缩88 4.3.3 快速UDP网络连接90 4.4 内容分发网络92 4.4.1 路由解析92 4.4.2 内容分发95 4.4.3 CDN应用96 4.5 负载均衡97 4.5.1 数据链路层负载均衡99 4.5.2 网络层负载均衡101 4.5.3 应用层负载均衡104 4.5.4 均衡策略与实现106 4.6 服务端缓存107 4.6.1 缓存属性108 4.6.2 缓存风险117 第5章 架构安全性120 5.1 认证121 5.1.1 认证的标准121 5.1.2 认证的实现128 5.2 授权129 5.2.1 RBAC130 5.2.2 OAuth 2133 5.3 凭证140 5.3.1 Cookie-Session140 5.3.2 JWT142 5.4 保密147 5.4.1 保密的强度147 5.4.2 客户端加密148 5.4.3 密码存储和验证149 5.5 传输151 5.5.1 摘要、加密与签名151 5.5.2 数字证书154 5.5.3 传输安全层157 5.6 验证160 第三部分 分布式的基石 第6章 分布式共识166 6.1 Paxos168 6.1.1 Paxos的诞生169 6.1.2 算法流程169 6.1.3 工作实例172 6.2 Multi Paxos174 6.3 Gossip协议178 第7章 从类库到服务180 7.1 服务发现180 7.1.1 服务发现的意义181 7.1.2 可用与可靠182 7.1.3 注册中心实现185 7.2 网关路由186 7.2.1 网关的职责186 7.2.2 网络I/O模型188 7.2.3 BFF网关190 7.3 客户端负载均衡191 7.3.1 客户端负载均衡器193 7.3.2 代理负载均衡器194 7.3.3 地域与区域196 第8章 流量治理198 8.1 服务容错198 8.1.1 容错策略199 8.1.2 容错设计模式201 8.2 流量控制209 8.2.1 流量统计指标210 8.2.2 限流设计模式211 8.2.3 分布式限流215 第9章 可靠通信217 9.1 零信任网络217 9.1.1 零信任安全模型的特征218 9.1.2 Google的实践探索220 9.2 服务安全222 9.2.1 建立信任222 9.2.2 认证223 9.2.3 授权227 第10章 可观测性230 10.1 事件日志233 10.1.1 输出233 10.1.2 收集与缓冲235 10.1.3 加工与聚合236 10.1.4 存储与查询237 10.2 链路追踪239 10.2.1 追踪与跨度239 10.2.2 数据收集240 10.2.3 追踪规范化243 10.3 聚合度量244 10.3.1 指标收集245 10.3.2 存储查询248 10.3.3 监控预警250 第四部分 不可变基础设施 第11章 虚拟化容器254 11.1 容器的崛起256 11.1.1 隔离文件:chroot256 11.1.2 隔离访问:名称空间257 11.1.3 隔离资源:cgroups258 11.1.4 封装系统:LXC259 11.1.5 封装应用:Docker260 11.1.6 封装集群:Kubernetes263 11.2 以容器构建系统266 11.2.1 隔离与协作266 11.2.2 韧性与弹性271 11.3 以应用为中心的封装275 11.3.1 Kustomize276 11.3.2 Helm与Chart277 11.3.3 Operator与CRD279 11.3.4 开放应用模型284 第12章 容器间网络288 12.1 Linux网络虚拟化288 12.1.1 网络通信模型289 12.1.2 干预网络通信291 12.1.3 虚拟化网络设备294 12.1.4 容器间通信304 12.2 容器网络与生态306 12.2.1 CNM与CNI306 12.2.2 CNM到CNI308 12.2.3 网络插件生态310 第13章 持久化存储314 13.1 Kubernetes存储设计314 13.1.1 Mount和Volume316 13.1.2 静态存储分配318 13.1.3 动态存储分配322 13.2 容器存储与生态325 13.2.1 Kubernetes存储架构325 13.2.2 FlexVolume与CSI327 13.2.3 从In-Tree到Out-of-Tree329 13.2.4 容器插件生态331 第14章 资源与调度336 14.1 资源模型336 14.2 服务质量与优先级337 14.3 驱逐机制340 14.4 默认调度器342 第15章 服务网格346 15.1 透明通信的涅槃347 15.1.1 通信成本347 15.1.2 数据平面352 15.1.3 控制平面358 15.2 服务网格与生态360 15.2.1 服务网格接口361 15.2.2 通用数据平面API363 15.2.3 服务网格生态364 第五部分 技术方法论 第16章 向微服务迈进368 16.1 目的:微服务的驱动力369 16.2 前提:微服务需要的条件371 16.3 边界:微服务的粒度375 16.4 治理:理解系统复杂性377 16.4.1 静态的治理378 16.4.2 发展的治理380 附录A 技术演示工程实践383 附录B 部署Kubernetes集群402 ---------------------------8071046 - 分布式系统架构:技术栈详解与快速进阶--------------------------- 前 言 第1章 分布式架构介绍 1 1.1 分布式架构发展过程 2 1.2 分布式架构设计理念和目标 6 1.2.1 设计理念 6 1.2.2 设计目标 7 1.3 分布式架构应用场景 10 1.4 分布式架构设计难点 10 1.4.1 网络因素 10 1.4.2 服务可用性 11 1.4.3 数据一致性 12 1.5 分布式架构解决痛点 13 1.6 本章小结 14 第2章 分布式架构前后端交互 15 2.1 前后端交互发展过程 15 2.1.1 传统交互模式 16 2.1.2 前后端分离交互模式 19 2.1.3 整体交互 22 2.2 前后端交互方式 22 2.2.1 工作流程 22 2.2.2 交互常见状态码 29 2.3 前后端交互难点 30 2.4 前后端交互优化 32 2.5 案例讲解 37 2.6 本章小结 40 第3章 分布式架构网络传输 41 3.1 网络传输协议 41 3.2 网络传输调用过程 46 3.2.1 协议概述 46 3.2.2 传输过程 48 3.3 网络传输优化 52 3.4 本章小结 54 第4章 分布式架构Nginx 55 4.1 Nginx工作原理 55 4.2 Nginx源码编译安装 57 4.3 Nginx配置 62 4.4 Nginx代理&负载均衡 64 4.4.1 正向代理 66 4.4.2 反向代理 66 4.4.3 动静分离 68 4.4.4 负载均衡策略 69 4.5 Nginx缓存 74 4.6 Nginx限流 76 4.7 Nginx屏蔽 79 4.8 Nginx优化 79 4.8.1 优化思路 79 4.8.2 核心配置优化 79 4.9 Nginx高可用 82 4.10 本章小结 86 第5章 分布式架构Varnish 87 5.1 Varnish工作原理 87 5.2 Varnish源码编译安装 89 5.3 Varnish配置 92 5.4 Varnish核心指令 98 5.4.1 Varnish核心指令之backend 98 5.4.2 Varnish核心指令之director 98 5.5 Varnish缓存 102 5.5.1 Varnish缓存状态 102 5.5.2 Varnish缓存管理 104 5.6 Varnish处理策略 105 5.6.1 pass 106 5.6.2 pipe 106 5.6.3 lookup 107 5.7 Varnish健康检查 107 5.8 Varnish优化 109 5.8.1 Varnish优化思路 109 5.8.2 Varnish优化讲解 109 5.9 Varnish高可用 111 5.10 本章小结 116 第6章 分布式架构Tomcat 117 6.1 Tomcat原理 117 6.2 Tomcat生命周期 123 6.3 Tomcat源码编译安装 124 6.4 Tomcat结构 126 6.4.1 bin 126 6.4.2 conf 127 6.4.3 lib 128 6.4.4 logs 129 6.4.5 webapps 129 6.5 Tomcat加载过程 130 6.5.1 Bootstrap类初始化 130 6.5.2 Bootstrap启动 132 6.6 Tomcat安全 135 6.6.1 配置调整 135 6.6.2 安全策略 136 6.6.3 SSL传输安全 136 6.7 Tomcat集群 137 6.7.1 集群组件实现 138 6.7.2 集群配置 139 6.8 JVM 142 6.8.1 Class文件结构 143 6.8.2 类的装载、连接和初始化 145 6.8.3 JVM的内存分配 148 6.8.4 JVM执行引擎 151 6.8.5 垃圾回收 152 6.9 Tomcat性能调优 158 6.9.1 性能测试 158 6.9.2 性能优化 162 6.10 本章小结 167 第7章 分布式架构高并发 168 7.1 高并发使用场景 169 7.2 高并发难点 171 7.2.1 高并发期间如何避免产生脏数据 171 7.2.2 当出现脏数据后如何处理 171 7.2.3 高并发期间如何节约带宽 172 7.3 高并发之缓存 174 7.3.1 Redis介绍 174 7.3.2 Redis原理 175 7.3.3 Redis安装编译 176 7.3.4 Redis数据结构 178 7.3.5 Redis持久化 181 7.3.6 Redis事务 183 7.3.7 Redis分布式锁 186 7.3.8 Redis任务队列 189 7.3.9 Redis高并发处理常见问题及解决方案 201 7.3.10 Redis高可用 211 7.3.11 Redis调优 213 7.4 高并发之消息队列 214 7.4.1 RocketMQ介绍 214 7.4.2 RocketMQ安装编译 217 7.4.3 RocketMQ应用场景 221 7.4.4 RocketMQ路由中心 222 7.4.5 RocketMQ消息存储结构 224 7.4.6 RocketMQ刷盘和复制策略 226 7.4.7 RocketMQ消息队列 227 7.4.8 RocketMQ高并发处理常见问题及解决方案 238 7.4.9 RocketMQ集群 240 7.4.10 RocketMQ调优 240 7.5 高并发优化 242 7.5.1 优化思路 242 7.5.2 优化方案 243 7.6 高并发经典案例 245 7.7 本章小结 249 第8章 分布式架构事务 250 8.1 分布式事务介绍 251 8.1.1 本地事务 251 8.1.2 全局事务 253 8.1.3 两阶段提交 254 8.1.4 分布式事务 255 8.1.5 小结 255 8.2 分布式事务概论 256 8.2.1 CAP定理 256 8.2.2 BASE理论 257 8.3 分布式事务应用场景 258 8.4 分布式事务难点 259 8.4.1 网络因素 259 8.4.2 消息重复发送 260 8.4.3 CAP定理选择 262 8.5 分布式事务解决方案 262 8.5.1 最大努力通知 263 8.5.2 TCC事务补偿 273 8.5.3 消息一致性 284 8.6 分布式事务案例讲解 295 8.7 本章小结 297 第9章 分布式架构MySQL 298 9.1 MySQL运行原理 299 9.2 MySQL编译启动 304 9.3 MySQL事务 307 9.3.1 事务特性 307 9.3.2 隔离级别 308 9.3.3 死锁 308 9.3.4 事务日志 309 9.4 MySQL存储引擎 310 9.4.1 概述 310 9.4.2 InnoDB 311 9.4.3 MyISAM 313 9.5 MySQL之SQL操作 314 9.5.1 SQL介绍 314 9.5.2 库 316 9.5.3 表 316 9.6 MySQL索引 317 9.6.1 索引概述 317 9.6.2 数据结构 318 9.6.3 索引分类 319 9.6.4 创建索引 319 9.7 MySQL备份 321 9.7.1 备份概述 321 9.7.2 备份类型 321 9.7.3 备份内容 322 9.8 MySQL难点 323 9.8.1 死锁 323 9.8.2 连接数过多 325 9.8.3 主从复制延迟 325 9.8.4 CPU飙高 326 9.8.5 索引效率 326 9.9 MySQL性能优化 326 9.9.1 优化思路 326 9.9.2 优化过程 327 9.10 MySQL集群 331 9.11 本章小结 333 第10章 分布式架构高可用 334 10.1 高可用概述及难点 334 10.2 高可用涉及内容 336 10.3 高可用具体应用 344 10.4 高可用案例讲解 345 10.5 本章小结 346 |