×
反应式设计模式

反应式设计模式

1星价 ¥48.0 (4.9折)
2星价¥48.0 定价¥98.0

温馨提示:5折以下图书主要为出版社尾货,大部分为全新(有塑封/无塑封),个别图书品相8-9成新、切口有划线标记、光盘等附件不全详细品相说明>>

图文详情
  • ISBN:9787302517146
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:362
  • 出版时间:2018-11-01
  • 条形码:9787302517146 ; 978-7-302-51714-6

本书特色

现代Web应用程序的用户数量众多,即使服务器出现故障或有新服务器上线,Web应用程序也需要继续提供服务;Web应用程序需要在资源有限的情况下,将信息提供给分布于全球的广大用户。“反应式应用程序”能适应部分失败以及负载变化情形,并在变化多端的分布式环境中保持即时响应性;如何做到这一点呢?秘诀就在于“消息驱动的架构”以及各种设计模式。 《反应式设计模式》围绕反应式宣言展开,讲述什么是反应式、为何需要反应式,以及反应式系统设计与开发中的一些常用模式,无论是软件开发者还是系统架构师,都可从本书中汲取知识养分。书中提出许多真知灼见,勾勒出反应式应用程序、反应式系统以及反应式平台等概念,有场景、有故事、有概念、有实践,令人沉醉其中,流连忘返。

内容简介

《反应式设计模式》介绍反应式应用程序设计的原则、模式和经典实践,讲述如何用断路器模式将运行缓慢的组件与其他组件隔开、如何用事务序列(Saga)模式实现多阶段事务以及如何通过分片模式来划分数据集,分析如何保持源代码的可读性以及系统的可测试性(即使在存在许多潜在交互和失败点的情况下)。 主要内容 ? “反应式宣言”很好不错指南 ? 流量控制、有界一致性、容错等模式 ? 得之不易的关于“什么行不通”的经验 ? 在巨大的负载下保持伸缩性的架构

目录

目 录 第Ⅰ部分 简介 第1章 为什么需要反应式? 3 1.1 剖析反应式应用 5 1.2 应对负载 6 1.3 应对失败 7 1.4 让系统即时响应 9 1.5 避免大泥球 10 1.6 整合非反应式组件 11 1.7 小结 12 第2章 《反应式宣言》概览 13 2.1 对用户作出反应 13 2.1.1 理解传统方法 14 2.1.2 使用共享资源的延迟分析 16 2.1.3 使用队列限制*大延迟 17 2.2 利用并行性 18 2.2.1 通过并行化降低延迟 19 2.2.2 使用可组合的Future改善并行性 21 2.2.3 为序列式执行表象买单 22 2.3 并行执行的限制 24 2.3.1 阿姆达尔定律 24 2.3.2 通用伸缩性法则 25 2.4 对失败作出反应 26 2.4.1 划分与隔离 28 2.4.2 使用断路器 29 2.4.3 监督 30 2.5 放弃强一致性 32 2.5.1 ACID 2.0 33 2.5.2 接受更新 34 2.6 对反应式设计模式的需求 35 2.6.1 管理复杂性 36 2.6.2 使编程模型更贴近真实世界 37 2.7 小结 38 第3章 行业工具 39 3.1 反应式的早期解决方案 39 3.2 函数式编程 41 3.2.1 不可变性 42 3.2.2 引用透明性 44 3.2.3 副作用 45 3.2.4 函数作为一等公民 46 3.3 即时响应用户 47 3.4 对反应式设计的现有支持 49 3.4.1 绿色线程 49 3.4.2 事件循环 50 3.4.3 通信顺序进程 51 3.4.4 Future和Promise 53 3.4.5 反应式扩展工具包 58 3.4.6 Actor模型 59 3.5 小结 64 第Ⅱ部分 微言大义 第4章 消息传递 67 4.1 消息 67 4.2 垂直伸缩 68 4.3 “基于事件”与“基于消息” 69 4.4 “同步”与“异步” 71 4.5 流量控制 73 4.6 送达保证 75 4.7 作为消息的事件 77 4.8 同步消息传递 79 4.9 小结 79 第5章 位置透明性 81 5.1 什么是位置透明性? 81 5.2 透明化远程处理的谬误 82 5.3 基于显式消息传递的纠正方案 83 5.4 优化本地消息传递 84 5.5 消息丢失 85 5.6 水平扩展性 87 5.7 位置透明性使测试更加简单 88 5.8 动态组合 88 5.9 小结 90 第6章 分而治之 91 6.1 分层拆解问题 92 6.2 “依赖”与“子模块” 94 6.3 构建你自己的大公司 96 6.4 规范和测试的优点 97 6.5 水平扩展性和垂直伸缩性 98 6.6 小结 99 第7章 原则性失败处理 101 7.1 所有权意味着承诺 101 7.2 所有权隐含生命周期控制 103 7.3 所有级别上的回弹性 104 7.4 小结 105 第8章 有界一致性 107 8.1 封装模块纠正方案 108 8.2 根据事务边界对数据和行为进行分组 109 8.3 跨事务边界建模工作流 109 8.4 失败单元即一致性单元 110 8.5 分离职责 111 8.6 坚持一致性的隔离范围 113 8.7 小结 114 第9章 按需使用非确定性 115 9.1 逻辑编程和声明式数据流 115 9.2 函数式反应式编程 117 9.3 不共享简化并发 118 9.4 共享状态的并发 119 9.5 如何窘境突围? 119 9.6 小结 121 第10章 消息流 123 10.1 推动数据向前流动 123 10.2 模型化领域流程 125 10.3 认清回弹性的局限性 125 10.4 估计速率和部署规模 126 10.5 为流量控制进行规划 127 10.6 小结 127 第Ⅲ部分 设计模式 第11章 测试反应式应用程序 131 11.1 如何测试 131 11.1.1 单元测试 132 11.1.2 组件测试 133 11.1.3 联动测试 133 11.1.4 集成测试 133 11.1.5 用户验收测试 134 11.1.6 黑盒测试与白盒测试 134 11.2 测试环境 135 11.3 异步测试 136 11.3.1 提供阻塞的消息接收者 137 11.3.2 选择超时时间的难题 139 11.3.3 断言消息的缺失 145 11.3.4 提供同步执行引擎 146 11.3.5 异步断言 148 11.3.6 完全异步的测试 149 11.3.7 断言没有发生异步错误 151 11.4 测试非确定性系统 154 11.4.1 执行计划的麻烦 155 11.4.2 测试分布式组件 155 11.4.3 模拟Actor 156 11.4.4 分布式组件 157 11.5 测试弹性 157 11.6 测试回弹性 158 11.6.1 应用程序回弹性 158 11.6.2 基础设施的回弹性 162 11.7 测试即时响应性 164 11.8 小结 165 第12章 容错及恢复模式 167 12.1 简单组件模式 167 12.1.1 问题设定 168 12.1.2 模式应用 168 12.1.3 模式回顾 170 12.1.4 适用性 171 12.2 错误内核模式 171 12.2.1 问题设定 172 12.2.2 模式应用 172 12.2.3 模式回顾 175 12.2.4 适用性 176 12.3 放任崩溃模式 176 12.3.1 问题设定 177 12.3.2 模式应用 177 12.3.3 模式回顾 178 12.3.4 实现上的考虑 179 12.3.5 推论:心跳模式 180 12.3.6 推论:主动失败信号模式 180 12.4 断路器模式 181 12.4.1 问题设定 182 12.4.2 模式应用 182 12.4.3 模式回顾 186 12.4.4 适用性 187 12.5 小结 187 第13章 复制模式 189 13.1 主动-被动复制模式 190 13.1.1 问题设定 190 13.1.2 模式应用 191 13.1.3 模式回顾 203 13.1.4 适用性 204 13.2 多主复制模式 204 13.2.1 基于共识的复制 205 13.2.2 具有冲突检测与处理方案的复制方式 208 13.2.3 无冲突的可复制数据类型 210 13.3 主动-主动复制模式 217 13.3.1 问题设定 218 13.3.2 模式应用 218 13.3.3 模式回顾 225 13.3.4 与虚拟同步模型的关系 226 13.4 小结 227 第14章 资源管理模式 229 14.1 资源封装模式 229 14.1.1 问题设定 230 14.1.2 模式应用 230 14.1.3 模式回顾 236 14.1.4 适用性 237 14.2 资源借贷模式 237 14.2.1 问题设定 238 14.2.2 模式应用 238 14.2.3 模式回顾 240 14.2.4 适用性 241 14.2.5 实现上的考虑 242 14.2.6 变体:使用资源借贷模式进行局部公开 242 14.3 复杂命令模式 243 14.3.1 问题设定 243 14.3.2 模式应用 244 14.3.3 模式回顾 251 14.3.4 适用性 252 14.4 资源池模式 252 14.4.1 问题设定 253 14.4.2 模式应用 253 14.4.3 模式回顾 255 14.4.4 实现上的考虑 256 14.5 托管阻塞模式 257 14.5.1 问题设定 257 14.5.2 模式应用 258 14.5.3 模式回顾 260 14.5.4 适用性 261 14.6 小结 262 第15章 消息流模式 263 15.1 请求-响应模式 264 15.1.1 问题设定 264 15.1.2 模式应用 265 15.1.3 该模式的常见实例 267 15.1.4 模式回顾 272 15.1.5 适用性 272 15.2 消息自包含模式 273 15.2.1 问题设定 273 15.2.2 模式应用 274 15.2.3 模式回顾 276 15.2.4 适用性 277 15.3 询问模式 277 15.3.1 问题设定 278 15.3.2 模式应用 278 15.3.3 模式回顾 281 15.3.4 适用性 283 15.4 转发流模式 283 15.4.1 问题设定 283 15.4.2 模式应用 284 15.4.3 模式回顾 284 15.4.4 适用性 285 15.5 聚合器模式 285 15.5.1 问题设定 285 15.5.2 模式应用 286 15.5.3 模式回顾 289 15.5.4 适用性 290 15.6 事务序列模式 290 15.6.1 问题设定 291 15.6.2 模式应用 291 15.6.3 模式回顾 293 15.6.4 适用性 294 15.7 业务握手协议(或可靠投递模式) 294 15.7.1 问题设定 295 15.7.2 模式应用 295 15.7.3 模式回顾 300 15.7.4 适用性 301 15.8 小结 301 第16章 流量控制模式 303 16.1 拉取模式 303 16.1.1 问题设定 304 16.1.2 模式应用 304 16.1.3 模式回顾 306 16.1.4 适用性 307 16.2 托管队列模式 307 16.2.1 问题设定 308 16.2.2 模式应用 308 16.2.3 模式回顾 310 16.2.4 适用性 310 16.3 丢弃模式 311 16.3.1 问题设定 311 16.3.2 模式应用 311 16.3.3 模式回顾 313 16.3.4 适用性 316 16.4 限流模式 316 16.4.1 问题设定 316 16.4.2 模式应用 317 16.4.3 模式回顾 320 16.5 小结 320 第17章 状态管理和持久化模式 321 17.1 领域对象模式 321 17.1.1 问题设定 322 17.1.2 模式应用 322 17.1.3 模式回顾 326 17.2 分片模式 326 17.2.1 问题设定 326 17.2.2 模式应用 327 17.2.3 模式回顾 329 17.2.4 重要警告 329 17.3 事件溯源模式 330 17.3.1 问题设定 330 17.3.2 模式应用 330 17.3.3 模式回顾 333 17.3.4 适用性 333 17.4 事件流模式 334 17.4.1 问题设定 334 17.4.2 模式应用 334 17.4.3 模式回顾 336 17.4.4 适用性 337 17.5 小结 337 附录A 反应式系统图示 339 附录B 一个虚构的案例 341 附录C 《反应式宣言》正文 355
展开全部

作者简介

Roland Kuhn博士曾在慕尼黑工业大学学习物理专业,获得了博士学位;在欧洲核子研究中心(瑞士日内瓦)的高能粒子物理实验中,发表了关于核子的胶子自旋结构测量的博士专题论文。该实验需要使用和实现大型计算集群以及快速的数据处理网络,这也为Roland透彻理解分布式计算奠定了基础。此后,Roland博士在德国空间运营中心工作了4年,负责建设军事卫星的控制中心和地面基础设施。再后来,他加入Lightbend(之前叫做Typesafe)公司,在2012年11月到2016年3月期间负责带领Akka团队。在此期间,他与Martin Odersky和Erik Meijer一起在Coursera平台上讲授Principles of Reactive Programming课程,这门课程的学员超过12万人。Roland与Jonas Bonér等人共同撰写了**版的《反应式宣言》,该宣言于2013年6月发表。目前,Roland是Actyx的首席技术官及联合创始人,Actyx是一家总部位于慕尼黑的公司,致力于使欧洲的各类中小型制造企业享受到现代反应式系统的福泽。 Brian Hanafee在加利福尼亚大学伯克利分校获得电气工程与计算机科学学士学位,现任富国银行的首席系统架构师,负责设计网上银行和支付系统,并长期引领公司的技术门槛提升。此前,Brian曾在甲骨文公司工作,致力于研究新兴产品、互动电视系统以及文本处理系统。Brian也曾任博思艾伦咨询公司的咨询师,并曾在ADS公司将人工智能技术应用到军事规划系统中。Brian还为**代弹射安全的头盔综合显示系统编写了软件。 Jamie Allen是星巴克UCP项目的技术总监,致力于以跨运营模式、跨地域的方式,为星巴克公司各地的消费者重新定义数字体验。他是Effective Akka一书的作者,曾与Roland和Jonas一起在Lightbend公司工作4年以上。Jamie自2008年以来一直从事Scala和Actor开发工作,与世界各地的客户合作,帮助他们理解和采用反应式系统设计。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航