好书推荐 好书速递 排行榜 读书文摘

互联网创业核心技术:构建可伸缩的web应用

互联网创业核心技术:构建可伸缩的web应用
作者:【美】Artur Ejsmont
译者:李智慧 / 何坤
出版社:电子工业出版社
出版年:2016-12
ISBN:9787121301124
行业:因特网
浏览数:9

内容简介

可伸缩架构技术是所有互联网技术中最重要,也是最引人入胜的技术。《互联网创业核心技术:构建可伸缩的web应用》针对互联网创业需求快速迭代,业务快速发展,短时间内用户、数据、访问量激增的特点,提纲挈领地描述了伸缩性架构的基本原理与设计原则,详细阐述了Web应用前端层、服务层、数据层的可伸缩架构,并花大量篇幅讲述了缓存技术和异步处理技术的可伸缩设计及其在Web系统中的具体应用。

《互联网创业核心技术:构建可伸缩的web应用》面向互联网创业公司工程师,也适用于所有互联网行业的工程师,对非互联网行业的软件工程师也有借鉴作用。事实上,《互联网创业核心技术:构建可伸缩的web应用》适合所有对可伸缩架构有兴趣的软件技术人员阅读。

......(更多)

作者简介

Artur Ejsmont 是一位充满激情的软件工程师及敏捷领导者,目前就职于雅虎悉尼。Artur 从事 Web 应用方面的开发工作已经超过十年,同时也大量关注敏捷及创业公司管理,热爱精益创业模型。Artur 开发的网站每小时 PV 数超过一百万,为欧洲及澳洲两个大洲的用户提供服务。他还在大学开设课程,分享他的技术与知识。作为一名科技作家、博客写手、技术演讲者,Artur 对技术社区有许多积极的贡献。

译者

李智慧,曾供职阿里巴巴及英特尔亚太研发中心,从事分布式系统与大数据方面的开发。《大型网站技术架构:核心原理与案例分析》作者。目前正在互联网方面创业。

何坤,宅米首席架构师,前阿里巴巴平台架构师。曾参与阿里中文站架构建设,以及WebX 框架、云计算存储平台 Doris 等核心系统研发。曾就职丰联金融证券期货部任首席架构师。对大型互联网站架构有深刻理解,对中间件、分布式系统及新技术研发始终保持热情。目前关注自然语言处理、机器理解等新课题。

......(更多)

目录

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

......(更多)

读书文摘

......(更多)

猜你喜欢

点击查看