书籍详情
互联网创业核心技术:构建可伸缩的Web应用
作者:(美)Artur Ejsmont
出版社:电子工业出版社
出版时间:2016-10-01
ISBN:9787121301124
定价:¥89.00
购买这本书可以去
内容简介
互联网创业热,技术人才不足的问题凸显出来,其中*稀缺的,是能够构建可伸缩系统的工程师,在机会来临时不掉链子。但是,大部分程序员在职业生涯中并没有太多机会有这样的实战经验,这方面的技术文档也比较稀缺、零散。本书弥补了这一空白,面向创业公司技术人员,系统、全面且有针对性地总结可伸缩方面的原则和实践,兼顾开发、运维和团队等主题,有很多接地气的建议,语言风格明快,因此原著获得了很好的口碑。更为难得的是,译者本身也是这一领域的专家,在业界有"教授"的美誉,有力保证了本书成为一部经得起考验的佳作。 :美团点评技术学院院长刘江 互联网创业从0开始,之后迈出的每一步都是困难的。从0到1的过程不是瞬间完成,而是从0.01到0.02,直到1的蜕变。公司在不断发展与迭代的过程中,各种各样的技术问题也随之"野蛮"生长。如何解决系统的稳定性、可伸缩性等技术难题?本书或许能给你想要的答案。李智慧老师作为极客邦科技/InfoQ中国的专家讲师,长期致力于技术社区的发展。我愿推荐此书,和技术人共同成长。 :极客邦科技/InfoQ中国创始人兼CEO霍泰稳 构建一个"能用的"应用系统与构建一个能够随着业务发展而扩展的系统完全是两回事。要想在用户量和业务量快速增长的环境下保持系统的扩展性,需要工程师熟悉互联网业务中"扩展"与"伸缩"的常用招数,并能够根据情况选择*合适的方案。本书系统地描述了互联网应用中的扩展性,在系统设计原则、前后端设计、存储设计方面进行了全面的描述,并详尽讨论了"异步"与"缓存"这两个扩展性法宝的各种使用场景。希望在本书的帮助下,工程师能够快速掌握解决伸缩性问题的钥匙,早日成为可信赖的技术达人。 :宜信宜人贷首席技术官段念 2008年认识李智慧,从那时起,智慧参与阿里巴巴互联网基础技术平台的建设,并成为关键产品的代码贡献者。2014年智慧送了我一本他写的《大型网站技术架构:核心原理与案例分析》。翻看后,感觉智慧经历了这几年在大型网站的实践后,多了一份坚持总结和分享的能力。这是很多当时参与基础技术平台建设的同事所不具备的特质。近期,智慧告诉我他和另一位优秀的架构师何坤,一起翻译了本书。我翻看之下,很佩服他俩在工作之余还能坚持翻译此书。书中内容涉及前端、服务、数据库、缓存、异步消息和搜索,非常全面。全世界的大型网站并不多,能参与其中建设的只是小部分工程师,希望他们解决问题的思路能给各位读者一些启发。 :平安好医生CTO 王齐和智慧在阿里共事多年,一起经历了阿里巴巴技术平台化战略的关键时期。互联网技术与传统软件技术相比,*大的不同可能就是如何处理大并发大数据的挑战,而主要应对措施就是可伸缩的架构技术,期待本书成为互联网创业公司工程师的手边书,通过本书深入理解可伸缩系统架构的原理与设计。 :同盾创始人蒋韬
作者简介
作者:(美)Artur Ejsmont(阿特.艾斯蒙特) 译者:李智慧李智慧(微博、LinkedIn),目前任职宅米网CTO,曾供职阿里巴巴与英特尔亚太研发中心,从事大型网站、分布式系统、大数据平台方面的研发工作。著有《大型网站技术架构 核心原理与案例分析》一书。 Artur Ejsmont 是一位充满激情的软件工程师及敏捷领导者,目前就职于雅虎悉尼。__eol__Artur 从事Web 应用方面的开发工作已经超过十年,同时也大量关注敏捷及创业公司管理,__eol__热爱精益创业模型。Artur开发过的网站每小时PV数超过一百万,为欧洲及澳洲两个大__eol__洲的用户提供服务。他还在大
目录
1 核心概念 1
什么是伸缩性 ................................................................................................ 2
从单一服务器到全球用户的Web 架构演化 ............................................... 4
单一服务器 ............................................................................................ 5
使用更强的服务器:垂直伸缩 ............................................................ 6
服务分离 .............................................................................................. 10
内容分发网络:静态内容的伸缩性 .................................................. 12
分散访问流量:水平伸缩 .................................................................. 13
服务全球用户的伸缩性架构 .............................................................. 16
数据中心基础设施架构概览 ...................................................................... 18
前端 ...................................................................................................... 19
Web 应用层 .......................................................................................... 20
Web 服务层 .......................................................................................... 20
附加组件 .............................................................................................. 21
数据持久层 .......................................................................................... 21
数据中心基础架构 .............................................................................. 22
应用架构概览 .............................................................................................. 23
前端 ...................................................................................................... 24
Web 服务 .............................................................................................. 25
支撑技术 .............................................................................................. 29
小结 .............................................................................................................. 30
2 软件设计原则 31
简单 .............................................................................................................. 31
隐藏复杂与构建抽象 .......................................................................... 32
避免过度设计 ...................................................................................... 33
尝试测试驱动开发 .............................................................................. 34
从软件设计的简化范例中学习 .......................................................... 35
低耦合 .......................................................................................................... 36
促进低耦合 .......................................................................................... 37
避免不必要的耦合 .............................................................................. 39
低耦合范式 .......................................................................................... 40
不要重复自己(DRY) .............................................................................. 41
复制粘贴代码 ...................................................................................... 42
基于约定编程 .............................................................................................. 43
画架构图 ...................................................................................................... 46
用例图 .................................................................................................. 49
类图 ...................................................................................................... 50
模块图 .................................................................................................. 51
单一职责 ...................................................................................................... 52
改善单一职责 ...................................................................................... 52
单一职责的例子 .................................................................................. 53
开闭原则 ...................................................................................................... 53
依赖注入 ...................................................................................................... 55
控制反转(IOC) ....................................................................................... 57
为伸缩而设计 .............................................................................................. 59
增加副本 .............................................................................................. 60
功能分割 .............................................................................................. 62
数据分片 .............................................................................................. 63
自愈设计 ...................................................................................................... 65
小结 .............................................................................................................. 67
3 构建前端层 69
状态管理 ...................................................................................................... 70
管理HTTP 会话 .................................................................................. 73
管理文件 .............................................................................................. 77
管理其他类型的状态 .......................................................................... 80
可伸缩的前端组件 ...................................................................................... 83
DNS ...................................................................................................... 84
负载均衡器 .......................................................................................... 85
Web 服务器 .......................................................................................... 92
缓存 ...................................................................................................... 93
自动伸缩 .............................................................................................. 94
部署案例 ...................................................................................................... 96
AWS 场景 ............................................................................................ 97
私有数据中心 ...................................................................................... 98
小结 ............................................................................................................ 101
4 Web 服务 102
Web 服务设计............................................................................................ 102
Web 服务作为一种备用表示层 ........................................................ 103
API 优先方式 .................................................................................... 105
务实的方式 ........................................................................................ 107
Web 服务类型............................................................................................ 108
以功能为中心的服务 ........................................................................ 109
以资源为中心的服务 ........................................................................ 111
伸缩REST Web 服务 ................................................................................ 115
保持服务无状态 ................................................................................ 115
缓存服务响应 .................................................................................... 121
功能分割 ............................................................................................ 124
小结 ............................................................................................................ 127
5 数据存储层 129
MySQL 伸缩性 .......................................................................................... 130
复制 .................................................................................................... 130
数据分区(分片) ............................................................................ 142
NoSQL 伸缩性 .......................................................................................... 157
最终一致性 ........................................................................................ 160
快速恢复增加可用性 ........................................................................ 164
Cassandra 拓扑结构 .......................................................................... 166
小结 ............................................................................................................ 170
6 缓存 171
缓存命中率 ................................................................................................ 171
基于HTTP 的缓存 .................................................................................... 173
HTTP 缓存头 ..................................................................................... 174
HTTP 缓存技术类型 ......................................................................... 179
伸缩HTTP 缓存 ................................................................................ 185
缓存应用对象 ............................................................................................ 188
对象缓存的一般类型 ........................................................................ 189
伸缩对象缓存 .................................................................................... 194
缓存的经验法则 ........................................................................................ 198
缓存整个调用栈 ................................................................................ 198
用户间缓存重用 ................................................................................ 199
从哪儿开始使用缓存? .................................................................... 201
缓存失效的困难 ................................................................................ 201
小结 ............................................................................................................ 203
7 异步处理 204
核心概念 .................................................................................................... 204
同步处理的例子 ................................................................................ 205
异步处理的例子 ................................................................................ 208
购物类比 ............................................................................................ 211
消息队列 .................................................................................................... 213
消息生产者 ........................................................................................ 214
消息代理 ............................................................................................ 215
消息消费者 ........................................................................................ 216
消息协议 ............................................................................................ 220
消息基础设施 .................................................................................... 221
消息队列的好处 ........................................................................................ 224
实现异步处理 .................................................................................... 225
更好的伸缩性 .................................................................................... 226
平衡流量峰值 .................................................................................... 227
失败隔离和自我修复 ........................................................................ 228
解耦 .................................................................................................... 229
消息队列相关的挑战 ................................................................................ 230
消息无序 ............................................................................................ 230
消息重新入队列 ................................................................................ 233
竞态条件可能性增大 ........................................................................ 233
复杂度风险 ........................................................................................ 234
消息队列有关的反模式 ............................................................................ 235
将消息队列当作TCP 套接字 ........................................................... 235
将消息队列当作数据库 .................................................................... 235
耦合消息生产者和消费者 ................................................................ 235
缺少坏消息处理 ................................................................................ 236
消息平台快速比较与选择 ........................................................................ 237
亚马逊简单队列服务 ........................................................................ 237
RabbitMQ ........................................................................................... 240
ActiveMQ ........................................................................................... 242
最后的比较说明 ................................................................................ 243
事件驱动架构介绍 .................................................................................... 245
请求/响应交互 ................................................................................... 246
直接队列交互 .................................................................................... 247
事件驱动交互 .................................................................................... 247
小结 ............................................................................................................ 250
8 数据搜索 252
索引介绍 .................................................................................................... 252
数据建模 .................................................................................................... 260
NoSQL 数据建模 .............................................................................. 260
宽列数据存储的例子 ........................................................................ 264
搜索引擎 .................................................................................................... 271
搜索引擎介绍 .................................................................................... 272
使用专用搜索引擎 ............................................................................ 274
小结 ............................................................................................................ 275
9 伸缩性的其他维度 277
自动化实现生产力可伸缩 ........................................................................ 278
测试 .................................................................................................... 278
构建与部署 ........................................................................................ 280
监控与报警 ........................................................................................ 285
日志聚合 ............................................................................................ 289
个人可伸缩 ................................................................................................ 291
加班不是一种伸缩性方案 ................................................................ 291
自我管理 ............................................................................................ 293
伸缩敏捷团队 ............................................................................................ 300
增加人手 ............................................................................................ 300
流程与创新 ........................................................................................ 301
团结的文化 ........................................................................................ 302
小结 ............................................................................................................ 303
A 推荐阅读 304
猜您喜欢