云计算架构设计模式

云计算架构设计模式 pdf epub mobi txt 电子书 下载 2025

艾利克斯洪木尔 著
图书标签:
  • 云计算
  • 架构设计
  • 设计模式
  • 微服务
  • 可扩展性
  • 高可用性
  • 云原生
  • 分布式系统
  • DevOps
  • 容器化
想要找书就要到 新城书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 华中科技大学出版社
ISBN:9787568034029
版次:1
商品编码:12270942
包装:平装
开本:16开
出版时间:2017-12-01
用纸:胶版纸
页数:244
字数:390000
正文语种:中文

具体描述

编辑推荐

适读人群 :高级工程师、运维工程师、架构师、技术经理、技术总监、CTO
架构即未来
移动互联网、云计算、大数据时代,面临更多的技术挑战问题,设计模式已经从单一的OO问题领域向外扩张延伸,设计模式的范畴不会局限于语言本身,更多扩展到架构设计领域
我个人对编程语言没有偏见,它们各有所长,大家互相学习。有实力的程序员不需要通过编程语言来找优越感,都在踏实地研究技术。我接触的优秀程序员无论是对C++、Java,还是对C#等都没有编程语言的歧视。况且底层的算法、数据结构和设计模式都没有编程语言限制。
架构师和技术专家 程序员中的精英群体,技术领袖,也是公司中受人尊敬的群体。
十年磨一剑 精华知识
本书介绍了云计算时代、zui经典的24种架构设计模式,包含基于云平台设计架构面临的问题以及典型的解决方案,另外还有10个架构设计指南。
24种经典的设计模式包括:高并发、健康健康、消息编排、架构伸缩、缓存、消息推送、大数据存储和优化、安全令牌等架构设计的关键问题,是一本zui近几年难得的架构与设计模式图书。
本书内容不受编程语言限制,可以根据需要使用.NET、Java、PHP、Node.js、Go等。云计算平台可以是Azure、AWS、阿里云等共有云,也可以是私有云平台。
推荐本书给高级工程师、运维工程师、架构师、技术经理、技术总监、CTO学习使用。

内容简介

本书主要介绍了云计算时代、zui经典的24种架构设计模式,包含基于云平台设计架构面临的问题以及典型的解决方案,另外还有10个架构设计指南。
24种经典的设计模式包括高并发、健康健康、消息编排、架构伸缩、缓存、消息推送、大数据存储和优化、安全令牌等架构设计的关键问题,是一本zui近几年难得的架构与设计模式图书。
本书内容不受编程语言限制,可以根据需要使用.NET、Java、PHP、Node.js、Go等。云计算平台可以是Azure、AWS、阿里云等共有云,也可以是私有云平台。
推荐本书给高级工程师、运维工程师、架构师、技术经理、技术总监、CTO学习使用。

作者简介

Alex Homer是微软PP小组的技术作者。在加入微软之前,他做了多年的软件设计和培训工作。他在小组的主要精力花费在设计模式和架构方面,还编写指南和例子代码。他的博客地址是http://blogs.msdn.com/alexhomer/。
John Sharp 是Content Master (www.contentmaster.com)的首席技术专家。专注于使用.NET框架和Azure平台开发应用系统。John写过《Microsoft Visual C# Step By Step》 和 《Microsoft WCF Step By Step》。John讲授过许多培训课程,也写过许多覆盖诸多领域,比如C和C++编程、SQL Server数据库管理以及面向服务架构的技术文章。他获得了伦敦大学帝国理工学院的计算机科学学位。
Larry Brader是微软模式与实践小组的高级测试工程师,负责PP小组不同项目的测试工作,专注于客户端和服务器端。此外他对于基于ALM生成测试指南也有浓厚的兴趣。
Masashi Narumoto热衷于将互联网作为知识库的想法。互联网已经显著改变了我们的生活,毫无疑问还会带来巨大的变化。他的目标是汇聚大家的智慧以更有意义的形式提供出来,方便更多的人学习。在就职于模式与实践小组期间,他作为程序经理负责并完成了多个Azure指南的系列文档的编写工作,现在关注于大数据领域。之前,他花费了20多年时间来开发和咨询各种不同的解决方案,尤其是零售和制造业。Masashi的博客地址是http://blogs.msdn.com/masashi_narumoto,推特账号是@dragon119。
Trent Swanson是Full Scale 180的软件架构师,也是创始人之一,主要使用云计算技术。他一开始就使用Azure技术,帮助全球各地的客户来构建、部署和管理Azure上的云计算解决方案。无论是迁移现有应用到云计算平台还是构建全新应用,他都享受整个交付伸缩的、可靠的和可管理的云计算解决方案。

精彩书评

架构即未来
移动互联网、云计算、大数据时代,面临更多的技术挑战问题,设计模式已经从单一的OO问题领域向外扩张延伸,设计模式的范畴不会局限于语言本身,更多扩展到架构设计领域
我个人对编程语言没有偏见,它们各有所长,大家互相学习。有实力的程序员不需要通过编程语言来找优越感,都在踏实地研究技术。我接触的优秀程序员无论是对C++、Java,还是对C#等都没有编程语言的歧视。况且底层的算法、数据结构和设计模式都没有编程语言限制。
架构师和技术专家 程序员中的精英群体,技术领袖,也是公司中受人尊敬的群体。
十年磨一剑 精华知识
本书介绍了云计算时代、zui经典的24种架构设计模式,包含基于云平台设计架构面临的问题以及典型的解决方案,另外还有10个架构设计指南。
24种经典的设计模式包括:高并发、健康健康、消息编排、架构伸缩、缓存、消息推送、大数据存储和优化、安全令牌等架构设计的关键问题,是一本zui近几年难得的架构与设计模式图书。
本书内容不受编程语言限制,可以根据需要使用.NET、Java、PHP、Node.js、Go等。云计算平台可以是Azure、AWS、阿里云等共有云,也可以是私有云平台。
推荐本书给高级工程师、运维工程师、架构师、技术经理、技术总监、CTO学习使用。
微软P&P;模式与实践小组
微软P&P;小组鼎鼎的大名是微软模式与实践小组亲自打造的,为开发基于云计算架构应用程序遇到的常见问题提供了经典的解决方案,并将常用的经典方案归类为设计模式。
微软模式与实践小组是微软zui早的开源社区团队之一,主要关注于把行业经典设计模式与实际项目开发相结合的技术研究。
微软早期众多的开源项目都是由该小组主导完成,同时还编写了许多经典书籍和代码。
如果你坚持研究.NET技术10年以上,就一定看过微软P&P;小组的学习资料。
在.NET领域10年以上的程序员应该不会对P&P;小组陌生。其技术实力非常强,国内很多.NET架构师都是看P&P;小组的文章和代码成长起来的。
我“菜鸟”阶段,第yi次看完P&P;小组的文章就成为其忠实的粉丝,至今依然向技术圈子的朋友和新青年架构班的同学推荐他们的资料。
10年前P&P;小组开源的Enterprise Library代码、分布式与安全的文档,到后来的IOC容器Unity等,都是精华知识的沉淀。
23种设计模式
Erich Gamma等在《设计模式》一书种介绍了23种经典的设计模式。
本书介绍的24种经典设计模式包含高并发、健康健康、消息编排、架构伸缩、缓存、消息推送,大数据存储和优化、安全令牌等架构设计的关键问题,是难得的的设计模式书籍,可以作为zui经典的Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides 4大金刚的《设计模式》的扩展阅读资料。
24种云计算架构模式
本书介绍的24种经典设计模式包含高并发、健康健康、消息编排、架构伸缩、缓存、消息推送、大数据存储和优化、安全令牌等架构设计的关键问题,是难得的设计模式图书。
(1)缓存驻留模式 (2)断路器模式
(3)事务补偿模式 (4)竞争消费者模式
(5)计算资源合并模式 (6)命令和职责分离(CQRS)模式
(7)事件溯源模式 (8)外部配置存储模式
(9)联合身份模式 (10)门卫模式
(11)健康终结点监控模式 (12)索引表模式
(13)领导选举模式 (14)物化视图模型
(15)管道和过滤器模式 (16)优先级队列模式
(17)基于队列的负载均衡模式 (18)重试模式
(19)运行时重配置模式 (20)调度器代理监控模式
(21)分片模式 (22)静态内容托管模式
(23)限流模式 (24)令牌模式
24种架构设计模式都有对应的例子代码,可以下载参考。Java程序员也可以从中获益良多。
10个架构设计指南
除了详细介绍了24种云计算架构设计模式以外,这里还介绍了实际架构设计中的重要原则,归类为10个方面,可作为大家进行架构设计时的参考。
(1)异步消息传输 (2)自动伸缩指南
(3)缓存指南 (4)计算分区指南
(5)数据一致性指南 (6)数据分区指南
(7)数据复制与同步指南 (8)远程监控指南
(9)多数据中心部署指南 (10)服务调用统计指南

目录

目录
Table of Contents
第1章 缓存驻留模式 1
背景和问题 1
解决方案 1
相关模式与指南 5
更多信息 5
第2章 断路器模式 6
背景和问题 6
解决方案 6
问题与思考 8
何时使用此模式 10
相关模式和指南 14
第3章 补偿事务模式 15
背景和问题 15
解决方案 16
问题与思考 16
何时使用此模式 17
相关模式和指南 18
第4章 竞争消费者模式 19
背景和问题 19
解决方案 19
问题与思考 20
何时使用此模式 21
第5章 计算资源合并模式 25
背景和问题 25
解决方案 26
问题与思考 26
应用场景 28
相关模式和指南 32
扩展阅读 32
第6章 命令和查询职责分离(CQRS)模式 33
背景和问题 33
解决方案 34
问题与思考 35
何时使用此模式 36
第7章 事件溯源模式 41
背景和问题 41
解决方案 41
问题与思考 43
何时使用此模式 44
相关模式和指南 47
第8章 外部配置存储模式 48
背景和问题 48
解决方案 48
问题与思考 49
何时使用此模式 50
关联模式和指南 56
第9章 联合身份模式 57
背景和问题 57
解决方案 57
问题与思考 59
何时使用此模式 59
相关模式和指南 61
更多信息 61
第10章 门卫模式 62
背景和问题 62
解决方案 62
问题与思考 63
何时使用此模式 63
相关模式和指南 64
第11章 健康终端监控模式 65
背景和问题 65
解决方案 65
问题与思考 67
何时使用此模式 68
相关模式和指南 71
更多信息 71

第12章 索引表模式 72
背景和问题 72
解决方案 73
问题与思考 75
何时使用此模式 76
相关模式与指南 77
第13章 领导者选举模式 79
背景和问题 79
解决方案 79
问题与思考 80
何时使用此模式 80
相关模式与指南 85
更多信息 85
第14章 实体化视图模式 86
背景和问题 86
解决方案 86
问题与思考 87
何时使用此模式 88
相关模式与指南 89
第15章 管道过滤器模式 90
背景和问题 90
解决方案 91
问题与思考 92
何时使用此模式 93
相关模式与指南 97
第16章 优先队列模式 98
背景和问题 98
解决方案 98
问题与思考 100
何时使用此模式 101
相关模式与指南 103
第17章 基于队列的负载均衡模式 105
背景和问题 105
解决方案 105
问题与思考 106
何时使用此模式 107
相关模式和指南 108
第18章 重试模式 109
背景和问题 109
解决方案 109
问题与思考 111
何时使用此模式 112
相关模式与指南 114
更多信息 114
第19章 运行时重配模式 115
背景和问题 115
解决方案 115
问题与思考 116
何时使用此模式 117
相关的模式和指南 120
更多的信息 121
第20章 调度器代理管理者模式 122
背景和问题 122
解决方案 122
问题与思考 125
何时使用此模式 125
相关模式与指南 128
更多信息 129
第21章 分片模式 130
背景和问题 130
解决方案 130
分片策略 131
问题与思考 135
何时使用此模式 136
相关模式与指南 138
第22章 静态内容托管模式 139
背景和问题 139
解决方案 139
问题与思考 139
何时使用此模式 140
相关模式与指南 143
更多信息 143
第23章 限流模式 144
背景和问题 144
解决方案 144
问题与思考 146
何时使用此模式 147
相关模式与指南 148
第24章 令牌秘钥模式 149
背景和问题 149
解决方案 149
问题与思考 150
何时使用此模式 152
相关模式和指南 154
更多信息 154
第25章 异步消息传输指南 155
消息队列本质 155
异步消息传递的场景 158
实现异步消息传递的注意事项 159
相关模式和指南 161
更多信息 162
第26章 自动伸缩指南 163
什么是自动伸缩 163
实施自动伸缩的场景 164
实施自动伸缩的注意事项 164
Azure解决方案中的自动伸缩 165
相关模式和指南 167
更多信息 167
第27章 缓存指南 168
云应用程序中的缓存 168
使用缓存的注意事项 170
管理缓存并发 172
相关模式和指南 173
更多信息 173
第28章 计算分区指南 174
Azure计算选项概述 174
计算界限设计指南 174
组件分离计算实例 176
相关模式与指南 177
更多信息 178
第29章 数据一致性指南 179
管理数据一致性 179
最终一致性实现的注意事项 182
相关模式与指南 185
第30章 数据分区指南 186
为什么需要数据分区 186
分区策略 187
设计可扩展性的数据分区 190
设计分区以提升查询性能 191
分区可用性设计 192
问题与思考 192
相关模式与指南 194
更多信息 194
第31章 数据复制与同步指南 195
为什么要数据复制及同步 195
复制和同步数据 195
数据复制和同步的注意事项 198
实现同步 200
相关模式与指南 201
更多信息 201
第32章 远程监控指南 202
为什么远程监控很重要 202
监控 202
语义日志记录 204
遥测 205
远程监控的注意事项 205
相关模式与指南 207
更多信息 208
第33章 多数据中心部署指南 209
为什么部署到多个数据中心 209
多数据中心部署的思考 213
相关模式及指南 217
第34章 服务调用统计指南 218
为什么服务调用统计很重要 218
服务调用统计的场景 218
服务调用统计的注意事项 220
示例 221
相关模式及指南 222
更多信息 222

精彩书摘

架构即未来
移动互联网、云计算、大数据时代,面临更多的技术挑战问题,设计模式已经从单一的OO问题领域向外扩张延伸,设计模式的范畴不会局限于语言本身,更多扩展到架构设计领域
我个人对编程语言没有偏见,它们各有所长,大家互相学习。有实力的程序员不需要通过编程语言来找优越感,都在踏实地研究技术。我接触的优秀程序员无论是对C++、Java,还是对C#等都没有编程语言的歧视。况且底层的算法、数据结构和设计模式都没有编程语言限制。
架构师和技术专家 程序员中的精英群体,技术领袖,也是公司中受人尊敬的群体。
十年磨一剑 精华知识
本书介绍了云计算时代、zui经典的24种架构设计模式,包含基于云平台设计架构面临的问题以及典型的解决方案,另外还有10个架构设计指南。
24种经典的设计模式包括:高并发、健康健康、消息编排、架构伸缩、缓存、消息推送、大数据存储和优化、安全令牌等架构设计的关键问题,是一本zui近几年难得的架构与设计模式图书。
本书内容不受编程语言限制,可以根据需要使用.NET、Java、PHP、Node.js、Go等。云计算平台可以是Azure、AWS、阿里云等共有云,也可以是私有云平台。
推荐本书给高级工程师、运维工程师、架构师、技术经理、技术总监、CTO学习使用。

前言/序言

序言
Preface
本书由微软模式与实践小组(微软P&P;小组)亲自打造,得到了许多社区开发者的支持,为开发基于云计算架构的应用程序常见问题提供了解决方案。
本书指南
? 介绍实现云计算应用时,尤其是托管在Azure云平台时使用这些设计模式的好处。
? 讨论云计算设计模式的经典问题和解决方案,以及它们如何与Azure关联到一起。
? 展示如何使用Azure功能实现这些模式,强调其优点与顾虑。
? 通过描述如何把这些设计模式应用到云计算应用架构中以及它们之间的关系来描绘知识体系的宏伟蓝图。
本书介绍的主题适用于所有的分布式系统,无论是托管在Azure中还是其他云计算平台中。
我们的目的并非提供设计模式的详尽集合,而是选择了对云计算应用zui有用处的设计模式——尤其考虑到在用户中的流行度。本书不是详细介绍Azure平台功能的指南。要学习Azure可以参考http://azure.com。
本书内容
结合开发社区的代表性反馈,我们把云计算应用开发领域zui常见的问题归纳为8类。
类别 描述
可用性 可用性定义为系统正常工作的时间比例。它受系统错误、基础架构问题、各种工具以及系统负载的影响。通常根据系统正常运行的时间来衡量。云计算应用为用户提供了服务级别协议(SLA),它指的是应用程序必须以zui大化可用性的方式设计和实现
数据管理 数据管理是云应用的关键部分,并且影响质量特性。由于诸如性能、伸缩性或者可用性等原因,数据通常存储在不同服务器的不同位置上,这些也会带来新的挑战。例如,数据一致性必须是可维护的,并且数据需要进行跨区域同步
续表
类别 描述
设计和实现 良好的设计会在组件设计和部署里包含诸如一致性和内聚性、简化管理和部署的可维护性,以及允许组件和子系统被其他应用使用的重用性。设计和实现阶段的决策对于云计算应用和服务的总体质量及成本有重大影响
消息 云计算应用的分布式特性需要一个连接组件和服务的消息基础架构,理想情况下是松耦合方式,便于zui大化伸缩性。异步消息被广泛使用,而且提供了许多好处,同时也带来了许多挑战,比如消息顺序、毒消息管理、幂等性等
管理和监控 云计算应用运行在远程数据中心中,我们无法完全控制基础架构或者操作系统。相比私有云,这种情况使得管理工作更加困难。只有应用暴露运行时的信息,管理员和运营人员才可以管理和监控系统;只有支持修改业务需求和自定义,才不需要应用停止和创新部署
性能和伸缩性 性能是系统执行特性操作的响应性指标,而伸缩性是系统处理新增压力但不会影响性能与可用性的能力。云计算应用通常会遇到变化的工作负载和峰值,这种情况通过不可预测,特别是在多租户场景下。相反,应用应该能够通过伸缩来满足峰值的需要,而且当需要下降时回退。伸缩性不只是关注计算实例,还关注其他要素,比如数据存储、消息基础架构等
弹性 弹性是系统优雅地处理错误和恢复系统的能力。云计算主机的基本特性为:应用通常是多租户的,使用共享平台服务,竞争资源和带宽,通过互联网通信,运行在商用硬件上。这意味着将会出现更多短暂和永久的错误。探测错误,并快速和高效地恢复对于维护弹性来说必不可少
安全 安全是系统阻止设计使用范围外的恶意和意外操作的能力,是阻止泄露和丢失数据的能力。云计算应用暴露在互联网上,跨越信任的私有云环境边界,通常对外开放,因此可能会出现不信任的用户。应用必须以安全的方式设计和部署,避免恶意攻击,限制只有支持的用户可以访问,并且保护敏感数据
对于每个类别,我们都创建了关联的指南和文档,以帮助开发者解决常见的共同问题。这些包括以下3方面内容。
? 24种设计模式。这是云托管应用非常有用的24种设计模式。每个设计模式提供了描述上下文及其问题,解决方案及其问题,使用模式的公共格式,以及基于Azure平台的例子。每种模式也包含连接到其他相关模式的链接。
? 10个指南主题。提供了开发云计算应用所需的基本知识、实践经验与技巧。每个主题都详实地介绍了这些知识。
? 例子程序。演示了设计模式的使用过程。我们可以使用这些代码参考设计自己特定的需求代码。
设计模式
设计模式被分配到一个或者多个类别中。完整的设计模式列表如下所示。
模式 描述
缓存驻留模式 根据需要从数据存储器加载数据。此模式可以用来改进性能,还可以用于维护缓存和后台数据库之间的数据一致性
断路器模式 当连接远程服务或资源时,可能导致不定时间恢复系统的错误。此模式可以用于改进系统的稳定性和弹性
事务补偿模式 如果一个或者多个操作失败,就会取消执行的一系列工作,它定义了一组zui终一致性模型的操作。遵从zui终一致性模型的操作在云托管应用中非常常见,通常都会实现复杂的业务过程和工作流
竞争消费者模式 允许多个并发的消费者在相同的消息通道上处理接收的消息。此模式允许系统并发处理多个消息以优化系统的吞吐量,改进系统的伸缩性和可用性,平衡工作负载
计算资源合并模式 合并多个任务或者操作到单个计算单元里。此模式可以增加计算资源的使用率,降低云计算应用中计算处理的成本和管理开销
命令和职责分离(CQRS)模式 通过隔离接口来分离更新和读操作。此模式可以zui大化性能、伸缩性和安全性,通过高度的灵活性支持系统的进化,在领域级别阻止引起合并冲突的更新命令
事件源模式 使用只能追加的存储库来记录领域里发生在数据库方面的完整操作事件序列,而不是仅仅保存当前状态,让存储库可以用来创建特定的对象状态。此模式可以通过避免同步数据模型和业务模型的需求来简化复杂领域里的任务,改进性能、伸缩性和响应性,提供事务性数据的一致性,维护可以支持补偿操作的完整审计追踪和历史信息
外部配置存储模式 把配置信息从应用部署包移动到一个中心位置。此模式可以提供更简单的管理和配置数据控制、跨应用和应用实例共享配置的机会
联合身份模式 把验证委托给一个外部身份标识提供器。此模式可以简化部署,zui小化用户管理的需求,并且改进应用的用户体验
门卫模式 通过在客户端和应用与服务之间使用特定的作为代理的宿主实例来保护应用和服务,验证并保护请求,且在它们之间传递请求消息。此模式可以提供额外的安全层,并且降低系统受攻击的层面
健康终结点监控模式 在应用中实现功能检查,可以通过暴露的终结点定时访问监控数据。此模式可以帮助检验应用和服务是否正确执行
索引表模式 在频繁访问的数据存储库特定字段上出aung时就索引。此模式可以通过允许应用更快速地从数据存储库查询数据改进查询性能
续表
模式 描述
领导选举模式 选举一个实例作为领导来承担管理其他实例的职责,让其协调分布式节点的任务执行。此模式可以帮助确保任务不会与其他任务冲突,避免资源争用,或者被其他执行的任务干扰
物化视图模型 当数据格式并非查询操作期望的格式时,提前为一个或者多个数据存储器中的数据生成视图。此模式可以帮助实现高效查询和数据提取,改进应用程序的性能
管道和过滤器模式 把一个复杂的任务分解为一系列可以单独执行的可重用的任务元素。此模式可以通过独立部署和伸缩任务元素来改进性能、伸缩性和可重用性
优先级队列模式 为发送给服务的请求消息设置优先级,这样高优先级的请求可以被更快地处理。此模式在给独立类型的客户端提供不同服务级别担保时非常有用
基于队列的负载均衡模式 在任务和调用的服务之间使用队列作为缓冲区来平滑断断续续的可能导致服务失败或者任务超时的超量负载。此模式可以帮助zui小化峰值压力对于任务和服务的可用性和响应能力的影响
重试模式 当连接服务或者网络资源时,通过允许短暂错误重试操作来允许应用程序处理临时的失败。此模式可以用来改进应用的稳定性
运行时重配置模式 设计应用程序使其可以无需重新部署,或者重新启动应用来重新配置。这可以用于维护可用性和zui小化宕机时间
调度器代理监控模式 协调跨分布式服务和其他资源的集合。如果某个操作失败,则尝试透明地处理错误;或者如果系统无法从错误中恢复,则取消执行工作产生的影响。此模式可以通过对短暂异常、长期错误和处理错误启用恢复和重试操作增加系统的弹性
分片模式 把数据库水平分割为不同的区片进行存储。当存储和访问海量数据时,此模式可以改进伸缩性
静态内容托管模式 部署静态内容到可以直接发送给客户端的云端存储服务上。此模式可以减少对于昂贵计算实例的需求
限流模式 控制单个应用实例、单个租户或者整个服务消耗的资源数量。此模式可以允许系统继续工作,并且满足服务级别协议,甚至对资源增加极限负载时也可以正常工作
令牌模式 为了在应用程序代码里支持卸载数据传输操作,使用令牌或者秘钥来限制对特定资源或服务的访问。此模式在使用云托管存储系统或者队列时特别有用,并且可以zui小化成本,zui大化伸缩性和性能
主题
这些主题与特定的应用程序开发相关,如下图所示。

这个指南包含下面的主题。
主题 描述
异步消息通信指南 消息通信是许多分布式系统采用的关键策略,比如云计算。它允许应用和服务彼此通信并协同工作,且可以帮助构建可伸缩的和弹性的解决方案。消息通信支持异步操作,允许我们解耦服务调用和宿主进程
自动化伸缩指南 持续监控性能和伸缩系统以适应波动的工作负载、满足目标需求并且优化运营成本,这个过程可能需要大量的人力成本。这些工作可能无法人工完成。这也是自动化伸缩的用武之地
缓存指南 缓存是一种常见的改进系统性能和伸缩性的技术,它通过把高频率访问的数据拷贝到接近应用的数据存储区中来实现加速。缓存当应用程序重复读取相同的数据时zui高效,特别是原始数据存储区的速度相对缓存较慢的时候,它受制于高级别的争用,或者说它不会导致网络延迟
计算分区指南 当部署应用程序到云端时,很可能采用把服务和组件根据使用情况分别部署的方式,以便在维护伸缩性、性能、可用性和应用安全时zui小化运行成本
数据一致性指南 云应用通常使用的数据分散存储在不同的存储区里。管理和维护数据一致性变得尤为重要,尤其是出现并发性和可用性问题时。我们通常需要在并发性和一致性之间取舍。这意味着我们在设计解决方案时会考虑zui终一致性,而不会追求应用程序所有时刻都处于完全一致性状态
数据分区指南 在许多大型伸缩解决方案中,数据被分割到不同的可以单独管理和访问的分区中。必须仔细选择这些分区策略以便zui小化坏处zui大化好处。分区可以帮助我们改进伸缩性,降低争用,并且优化性能
续表
主题 描述
复制和同步数据指南 当部署应用到多个数据中心,比如云和私有云中时,为了zui大化可用性和性能、确保一致性、zui小化数据传输成本,就必须考虑如何在多个节点同步数据
远程监控指南 绝大多数应用都会包含诊断功能特性,这些特性可以生成自定义监控和调试信息,尤其是当错误发生的时候。这通常称为监控仪表盘,是通过添加事件和错误处理代码到应用程序中来实现的。收集远程信息的过程通常称为遥感监测
多数据中心部署指南 在多个数据中心部署应用有许多好处,比如增加可用性、更好的跨地区用户体验。然而,还有一些挑战要解决,比如数据同步和监管限制
服务调用统计指南 我们可能需要统计应用或者服务的调用信息以便计划、调整未来的需求策略,了解用户如何使用系统,或者对用户、组织部门或者客户计费。这些都是常见的需求,对大公司和独立软件供应商及服务商尤其如此
例子应用
10个例子程序演示了本书中介绍的一些模式实现过程,大家可以下载到本地运行,或者部署到Azure订阅账号里测试。要获取并运行这些程序代码:
(1) 可以到微软下载中心http://aka.ms/cloud-design-patterns-sample “Cloud Design Patterns - Sample Code”页面下载 “Cloud Design Patterns Examples.zip”压缩文件。
(2) 在Windows资源浏览器里打开压缩文件的属性,选择解压。
(3) 把代码复制到磁盘根目录,比如C:PatternsGuide。不要在用户配置文件夹里解压(比如Documents 或者 Downloads) ,否则可能导致文件名过长。
(4) 在浏览器里打开Readme.htm。它包含系统和例子的配置信息,在本地Azure模拟器运行例子或者部署到Azure平台上,掌握例子展示的知识点。
本指南与例子的对应关系如下表所示。
主题 描述
竞争消费者 这个例子包含2个组件:Sender worker role负责发送消息到Service Bus队列,Receiver worker role负责从队列接收消息并处理消息。Receiver worker role启动两个实例来模拟消费者竞争
计算资源合并 这个例子展示了如何统一多个独立的任务到单个的worker role中。运行这个例子没有其他需求
续表
主题 描述
外部配置存储 这个例子展示了在外部存储区保存配置文件而不是使用本地配置文件。在这个例子中,配置保存到Azure Blob Storage存储区。Blob包含的配置信息是通过ExternalConfigurationManager类的实例监控的。当ExternalConfigurationManager对象探测到配置已修改时,它就会提醒应用程序
健康终结点监控 这个例子展示了如何设置检查独立服务健康状态的Web终结点,它可以返回不同的状态码来表示状态。设计终结点的目的是让看门狗监控服务监控的,比如Azure终结点健康监控服务,但是我们也可以在浏览器里打开和调用终结点,查看状态结果。我们还可以部署和配置自己的终结点健康工具来发送请求给服务操作并分析接收到的应答消息
领导选举 这个例子展示了工作角色实例如何变成领导。领导可以协调和控制其他实例的任务,这些任务应该通过某个工作角色实例执行。领导选举通过获取租赁权来实现
管道和过滤器 这个例子包含两个可以执行整体处理部分操作的过滤器。这两个过滤器组合在一个管道中,一个过滤器的输出结果作为另一个过滤器的输入数据。过滤器作为单独的工作角色实现,Azure Service Bus总线队列提供了管道的基础架构
优先级队列 这个例子展示了如何通过Service Bus主题和订阅实现优先级队列。工作角色负责发送消息给主题,分配优先级给每个消息。接受工作角色从对应优先级订阅者中读取消息。在这个例子中,PriorityQueue.High工作角色运行两个实例,PriorityQueue.Low只运行一个实例。这样就能确保高优先级消息可以更快速地被读取
运行时重配置 这个例子展示了如何修改云服务的配置而不需要重新启动Web和worker role
静态内容托管 这个例子展示了如何从公共存储服务中快速获取静态内容。这个例子包含了一个Azure Web Role,它托管了包含Javascript文件和图片的网站,部署到Azure存储区中。这些内容通常部署到存储账号中,作为应用部署的一部分。但是,为了简化例子,启动程序时这些文件会被部署到存储账号中
令牌模式 这个例子展示了客户端程序如何在获取一个带有权限的共享访问前直接向大对象存储区写入数据。为了简单明了,这个例子关注获取和消费令牌秘钥的机制,不会展示如何实现验证或者安全通行
这些例子关注演示每个模式的关键功能特性,并不可以直接使用到生产环境。
更多信息
所有的章节都包含对于其他资源的参考,比如图书、博客文章以及论文。如果需要,大家可以阅读更详细的内容。为了方便大家,这里有一个网页包含所有连接的文章,直接点击http://aka.ms/cdpbibliography,大家可以阅读、查询资源。
反馈和支持
问题?评论?建议?任何关于本书的反馈或者要获取任何问题的帮助,请访问http://wag.codeplex.com。这个社区网站的论坛是我们推荐的反馈和支持渠道,因为它允许我们大家分享想法、问题和整个社区的解决方案。
图书团队
创意与项目管理: Masashi Narumoto
作者: Alex Homer、John Sharp、Larry Brader、Masashi Narumoto和Trent Swanson
开发: Julian Dominguez、Trent Swanson (Full Scale 180)、Alejandro Jezierski (Southworks)
测试: Larry Brader、Federico Boerr和Mariano Grande (Digit Factory)
性能测试: Carlos Farre、Naveen Pitipornvivat (Adecco)
文档: Alex Homer、John Sharp (Content Master Ltd)
图片艺术家: Chris Burns (Linda Werner & Associates Inc)、Kieran Phelan (Allovus Design Inc)
编辑: RoAnn Corbisier
生产: Nelly Delgado
技术审阅: Bill Wilder (Author, Cloud Architecture Patterns)、Michael Wood (Cerebrata)
贡献者: Hatay Tuna、Chris Clayton、Amit Srivastava、Jason Wescott、Clemens Vasters、Abhishek Lal、Vittorio Bertocci、Boris Scholl、Conor Cunningham、Stuart Ozer、Paolo Salvatori、Shirley Wang、Saurabh Pant、Ben Ridgway、Rahul Rai、Jeremiah Talkar、Simon Gurevich、Haishi Bai、Larry Franks、Grigori Melnik、Mani Subramanian、Rohit Sharma、Christopher Bennage、Andrew Oakley、Jane Sinyagina和Julian Dominguez、Fernando Simonazzi (Clarius Consulting)和Valery Mizonov (Full Scale 180)
微软开发者指南顾问委员会 参与审核成员名单:Carlos dos Santos、CDS Informatica Ltda; Catalin Gheorghiu、I Computer Solutions; Neil Mackenzie、Satory Global; Christopher Maneu、Deezer.com; Paulo Morgado; Bill Wagner、Bill Wagner Software LLC;和Roger Whitehead、ProSource.It
感谢为本书的顺利出版付出心血的每个参与者!
《现代系统构建:弹性、可扩展与安全的原则》 本书旨在为致力于构建下一代信息系统的开发者、架构师和技术领导者提供一套全面的指导。在瞬息万变的数字环境中,系统的健壮性、适应性和安全性不再是可选项,而是成功的基石。本书深入探讨了支撑现代系统设计和部署的核心原则,涵盖了从基础架构选择到高级运维策略的方方面面,帮助读者掌握构建能够应对复杂挑战、支持业务快速增长且值得信赖的系统的关键技能。 第一部分:现代系统设计之基石 这一部分将打下坚实的基础,让读者理解现代系统设计的基本理念和面临的挑战。 第一章:理解系统复杂性与演进需求 软件系统的定义与演变: 从单体应用到分布式系统,回顾软件架构的演变历程,分析驱动这些变化的根本原因,如业务需求的多样化、用户规模的指数级增长、技术更新换代的加速等。 复杂性管理: 探讨软件系统中固有的复杂性来源,包括逻辑复杂度、状态复杂度、并发复杂度、网络复杂度等。引入模块化、分层、抽象等概念,阐述如何通过良好的设计来管理和降低复杂性。 系统演进的必然性: 强调没有一成不变的系统,所有系统都需要随着时间和环境的变化而演进。讨论业务需求变化、技术革新、安全威胁升级等因素如何促使系统进行迭代和重构。 响应式设计: 引入“响应式”的概念,不仅指用户界面的响应,更指系统在面对外部变化(如负载波动、故障、新需求)时能够快速、平稳地调整自身行为的能力。 技术选型的考量: 在理解系统复杂性和演进需求的基础上,讨论如何进行初步的技术选型,考虑不同技术栈的优劣势,以及技术选择对系统整体架构的影响。 第二章:弹性设计:应对不确定性的艺术 弹性的定义与重要性: 明确弹性(Resilience)的含义,即系统在面临故障、错误或预期外负载时,能够持续提供服务的能力。强调弹性是构建高可用、高可靠系统的关键。 故障的类型与模式: 详细分析各种可能发生的故障,包括硬件故障(磁盘、网络、服务器)、软件故障(bug、死锁、资源耗尽)、网络分区、数据中心级故障等。理解不同故障模式对系统的影响。 容错技术: 介绍各种容错机制,如重试(Retries)、熔断(Circuit Breakers)、限流(Rate Limiting)、隔离(Isolation)、降级(Degradation)等。深入分析每种技术的原理、适用场景和实现细节。 幂等性(Idempotency): 强调幂等性在分布式系统中的重要性,即同一操作执行一次和执行多次产生相同结果。讲解如何设计和实现幂等操作,以应对网络延迟、重复请求等问题。 数据一致性与弹性: 探讨在分布式环境下,如何在保证弹性的同时,权衡不同级别的数据一致性要求(强一致性、最终一致性等),以及相关的分布式事务、复制策略等。 灾难恢复(Disaster Recovery): 规划和实施灾难恢复策略,包括备份与恢复、多活部署、异地容灾等,确保在发生重大灾难时能够迅速恢复业务。 第三章:可扩展性设计:伴随业务增长的扩张之路 可扩展性的维度: 区分垂直扩展(Scale Up)和水平扩展(Scale Out),并深入分析水平扩展的优势和挑战,以及在现代系统中为何水平扩展是主流。 负载均衡(Load Balancing): 介绍各种负载均衡算法(轮询、最少连接、IP Hash等)及其适用场景。讨论应用层、网络层和传输层的负载均衡。 状态管理与无状态服务: 阐述无状态服务的优势,即不存储客户端会话信息,从而更容易实现水平扩展。探讨如何在必要时对有状态服务进行扩展,例如使用分布式缓存、分布式数据库等。 数据分片与分区(Sharding/Partitioning): 深入讲解如何对数据进行水平分割,以分散数据库的读写压力。分析不同的分片策略(哈希分片、范围分片、目录分片)及其优缺点。 异步处理与消息队列: 介绍消息队列(Message Queues)在解耦系统组件、削峰填谷、异步处理方面的作用。分析不同消息队列技术的特点(如Kafka, RabbitMQ, Pulsar)。 缓存策略: 探讨不同层次的缓存(CDN、应用内缓存、数据库缓存、分布式缓存)的设计与优化,以减少后端压力,提升响应速度。 第二部分:关键技术与模式 本部分将聚焦于构建可扩展、弹性系统的具体技术和架构模式。 第四章:分布式系统中的通信模式 同步与异步通信: 分析不同通信模式(RPC, REST, 消息队列)的优缺点,以及它们对系统性能、可用性和复杂性的影响。 服务发现与注册: 讲解服务发现机制(如Consul, Eureka, ZooKeeper)如何让服务能够动态地找到彼此,从而支持动态伸缩和故障转移。 API网关: 介绍API网关的作用,包括请求路由、认证授权、限流、日志记录、协议转换等,作为系统入口的统一管理点。 事件驱动架构(Event-Driven Architecture): 深入探讨事件驱动架构的理念,通过事件的发布、订阅和处理来实现组件间的解耦和响应性。 微服务通信: 专门讨论微服务之间的通信模式,包括同步(如gRPC, REST)和异步(消息队列)通信的权衡。 第五章:数据管理与一致性 关系型数据库的扩展: 探讨关系型数据库(如MySQL, PostgreSQL)的扩展策略,包括读写分离、分库分表、代理层等。 NoSQL数据库的选型与实践: 介绍不同类型的NoSQL数据库(键值存储、文档数据库、列族数据库、图数据库),分析它们的适用场景和优劣势。 分布式数据库: 探讨分布式数据库(如TiDB, CockroachDB, Cassandra)的架构原理,以及它们如何提供跨节点的数据管理和一致性保证。 数据缓存与一致性: 再次强调缓存的重要性,并深入探讨缓存一致性问题,如读写穿透、缓存失效等,以及相应的解决方案(如Cache-aside, Write-through, Write-behind)。 分布式事务: 介绍分布式事务的概念,并深入分析TCC、Saga、2PC等不同分布式事务解决方案的原理、优缺点和适用场景。 第六章:安全性设计:构建可信赖的系统 安全威胁模型: 分析常见的安全威胁,如数据泄露、拒绝服务攻击、SQL注入、跨站脚本(XSS)、中间人攻击等。 身份认证与授权: 详细介绍身份认证(Authentication)和授权(Authorization)机制,包括密码学基础、OAuth 2.0, JWT等。 数据加密: 探讨静态数据加密(Data at Rest)和传输中数据加密(Data in Transit)的重要性,以及TLS/SSL协议的应用。 网络安全: 介绍防火墙、入侵检测/防御系统(IDS/IPS)、虚拟私有网络(VPN)、零信任安全模型等网络安全措施。 安全审计与监控: 强调日志记录、审计和安全事件监控在发现和响应安全事件中的关键作用。 DevSecOps: 将安全集成到软件开发生命周期的各个环节,实现自动化安全检查和持续安全改进。 第三部分:运维与持续交付 本部分将关注如何有效运维和持续交付现代系统。 第七章:监控、日志与告警 监控系统的关键指标: 识别和定义关键性能指标(KPIs)和关键健康指标(KHIs),涵盖了资源利用率、应用性能、业务指标等。 分布式追踪: 介绍分布式追踪系统(如Jaeger, Zipkin)如何帮助理解请求在分布式系统中的流动路径,定位性能瓶颈和故障。 日志聚合与分析: 讲解如何有效地收集、存储和分析海量日志数据,以便于故障排查、安全审计和性能优化。 告警策略与响应: 设计有效的告警规则,避免告警风暴,并建立清晰的告警响应流程。 可观测性(Observability): 深入探讨可观测性的概念,即通过指标(Metrics)、日志(Logs)和追踪(Traces)来理解系统内部状态。 第八章:自动化与持续交付 基础设施即代码(Infrastructure as Code - IaC): 介绍使用IaC工具(如Terraform, Ansible, CloudFormation)来自动化基础设施的创建、配置和管理。 持续集成(CI): 讲解CI流程,包括自动化构建、测试,以及如何快速反馈代码集成问题。 持续交付/部署(CD): 阐述CD流程,实现代码的自动化部署到生产环境。讨论蓝绿部署、金丝雀发布等部署策略。 容器化与编排: 介绍Docker等容器技术如何实现应用的环境隔离和快速部署,以及Kubernetes等容器编排平台如何管理和自动化容器化应用的部署、伸缩和运维。 配置管理: 讨论如何在分布式系统中有效地管理和分发应用配置。 第九章:云原生架构的实践 云原生理念: 介绍云原生的核心理念,包括微服务、容器、服务网格、声明式API等。 服务网格(Service Mesh): 讲解服务网格(如Istio, Linkerd)在简化微服务通信、增强可观察性、实现流量管理和安全方面的作用。 无服务器(Serverless)计算: 探讨Serverless架构的优势(如降低运维负担、按需付费)和适用场景。 云原生安全: 讨论在云原生环境中,如何实现安全性的持续集成和自动化管理。 云环境下的弹性与可扩展: 结合云平台的特性(如自动伸缩、托管服务),讲解如何设计和构建更具弹性和可扩展性的云原生应用。 总结与展望 本书的最后部分将对全书内容进行回顾,并对未来系统架构的发展趋势进行展望,强调持续学习和适应变化的重要性。本书的目标是让读者能够理解和应用这些原则和技术,从而构建出更加强大、可靠和高效的现代信息系统。

用户评价

评分

这本书的价值,远超其定价所代表的物质成本,它更像是一张通往资深架构师思维世界的“门票”。我发现,自从开始研读这本书后,自己在日常工作中面对新需求时的思维框架都发生了微妙的变化。以往可能会被需求牵着鼻子走,现在我能更早地跳出来,从业务的长期生命周期和技术栈的演进角度去审视问题。书中对于“可观测性(Observability)”的深度挖掘,特别是对日志、指标、链路追踪三者的整合设计,已经让我成功指导团队在新的项目中提前构建了完善的监控体系,有效避免了上线后“救火”的窘境。对于任何想从高级工程师晋升到架构师岗位,或者希望系统性巩固分布式系统设计功底的同行来说,这本书提供了一个结构化、高内聚的知识体系,它不仅教会你如何设计,更重要的是,它教会你如何去思考架构的未来。

评分

初次接触这本书时,我本以为它会像市面上很多同类书籍一样,堆砌着最新的技术名词和碎片化的最佳实践,让人读完后依旧抓不住重点。然而,作者的叙事逻辑和知识体系的构建能力,远超我的预期。他没有急于展示华丽的框架,而是从最基础的分布式系统理论、CAP原理的深刻剖析入手,如同搭积木一般,层层递进地构建起对“架构”的整体认知。尤其欣赏作者对于“权衡(Trade-off)”的强调,书中反复提醒读者,架构设计没有银弹,每一种模式的选择都伴随着特定的成本与收益,这种辩证的思维方式,极大地提升了我们批判性思考的能力。他引导我们思考的不是“应该用什么”,而是“在什么场景下,为什么选用这个”。这种由内而外的、从原理到实践的推导过程,使得书中的知识体系异常坚固,让人感觉这不是在学习技巧,而是在修炼一门设计哲学。

评分

从语言风格上看,作者的文字功底非常扎实,行文流畅,用词精准,读起来有一种被引领的感觉,而不是被动地接受信息灌输。他擅长使用类比和比喻来解释复杂概念,例如将“服务熔断”比作电路中的保险丝,将“负载均衡的健康检查”比作医院的急诊分诊台,这些生动的描绘,极大地降低了技术理解的门槛。更难得的是,作者的“语气”非常谦逊和客观,他从不使用“绝对正确”、“唯一标准”这类词汇,而是总是以一种探讨和分享的态度来呈现观点,即使是自己推崇的模式,也会坦诚指出其潜在的局限性。这种开放的心态,让读者在阅读过程中感受到一种被尊重和被信任的氛围,仿佛是与一位经验丰富的资深架构师进行了一场高水平的深夜对谈。

评分

这本书的实战案例部分,可以说是点睛之笔,极大地弥补了纯理论书籍的枯燥感。作者没有使用那些脱离实际的“玩具”案例,而是深入剖析了数个不同行业、不同规模的系统重构与新建的真实场景。例如,在描述微服务拆分策略时,他不仅列举了基于业务域的DDD方法,还详细对比了在金融交易系统和内容推荐系统中的具体落地差异,以及如何应对服务间通信的复杂性。最让我受益匪浅的是关于“数据一致性保障”那一章节,不同于简单的介绍ACID或BASE,书中引入了基于业务流程的“最终一致性补偿机制”设计,并用流程图清晰地展示了故障恢复的路径。这些细节的展示,体现了作者深厚的工程经验,让原本停留在PPT层面的设计,真正落地到了代码和运维的层面,是教科书上难以找到的宝贵财富。

评分

这本书的排版和印刷质量简直是教科书级别的典范,纸张的触感温润而不失韧性,拿在手里沉甸甸的,让人立刻感受到内容的厚重与价值。装帧设计上,封面那简约而富有科技感的几何图形设计,巧妙地呼应了“架构设计”的主题,色彩搭配沉稳大气,即使只是放在书架上,也散发着一股专业的气息。内页的字体清晰锐利,行间距和字距的把握恰到好处,即便是长时间阅读也不会感到眼睛疲劳。更值得称赞的是,书中大量的图表和示意图,线条干净利落,逻辑性极强,有些复杂的概念图,作者似乎花了大量心思去优化,使得原本抽象的理论知识,通过视觉化的方式一下子就变得直观易懂,这对于我们这些需要频繁对照技术文档的工程师来说,是极大的福音。翻阅时,那种油墨散发出的淡淡清香,也为枯燥的技术学习增添了一丝阅读的愉悦感,这绝对是一本值得收藏和反复研读的实体书。

评分

商品不错,值得购买。

评分

买的正好,及时雨,出乎意料的好,很值的

评分

不错不错不错不错不错不错不错不错不错不错

评分

此用户未填写评价内容

评分

书不错,买了慢慢看,学习学习

评分

买的正好,及时雨,出乎意料的好,很值的

评分

买的正好,及时雨,出乎意料的好,很值的

评分

书不错,买了慢慢看,学习学习

评分

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有