大型网站技术架构 核心原理与案例分析pdf

2018年7月8日16:33:09 发表评论 259
摘要

《大型网站技术架构:核心原理与案例分析》作者是拥有核心技术部门的一线工作经验,直接体验了大型网站构建与发?#26500;?#31243;中的种种生与死,蜕与变,见证了一个网站架构从幼稚走向成熟稳定的历程。
没有晦涩难懂的术语,没有诘屈聱牙的文句,没有故弄玄虚的观点……
明明白白的语句,清清楚楚的文法,干净利落的建议——让读者直接体会网站架构的紧要处,不容马虎的关键点——这恰好是一个优秀的网站架构所必备的要素。
如果说“水不在深,有龙则灵?#20445;?#37027;么对于想了解网站架构的读者而言,这本书恰好是“书不在多,有它则行!”
还犹豫什么呢?

大型网站技术架构 核心原理与案例分析 内容简介

《大型网站技术架构:核心原理与案例分析》通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web安全、系统发布、运维监控等在内的大型网站开发全景视图。

大型网站技术架构 核心原理与案例分析 目录

第1篇 概述

1 大型网站架构演化

1.1 大型网站软件系统的特点

1.2 大型网站架构演化发展历程

1.2.1 初始阶段的网站架构

1.2.2 应用服务和数据服务分离

1.2.3 使?#27809;?#23384;?#32435;?#32593;站性能

1.2.4 使用应用服务器集群?#32435;?#32593;站的并发处理能力

1.2.5 数据库读写分离

1.2.6 使用反向代理和CDN 加速网站响应

1.2.7 使用分?#38469;?#25991;件系统和分?#38469;?#25968;据库系统

1.2.8 使用NoSQL和搜索引擎

1.2.9 业务拆分

1.2.10 分?#38469;?#26381;务

1.3 大型网站架构演化的价值观

1.3.1 大型网站架构技术的核心价值是随网站所需灵活应对

1.3.2 驱动大型网站技术发展的主要力量是网站的业务发展

1.4 网站架构设计误区

1.4.1 一味追随大公司的解决方案

1.4.2 为了技术而技术

1.4.3 企图用技术解决所有问题

1.5 小结

2 大型网站架构模式

2.1 网站架构模式

2.1.1 分层

2.1.2 分割

2.1.3 分?#38469;?/p>

2.1.4 集群

2.1.5 缓存

2.1.6 异步

2.1.7 冗余

2.1.8 自动化

2.1.9 安全

2.2 架构模式在新浪微博的应用

2.3 小结

3 大型网站核心架构要素

3.1 性能

3.2 可用性

3.3 伸缩性

3.4 扩展性

3.5 安全性

3.6 小结

第2篇 架构

4 ?#24425;?#21709;应:网站的高性能架构

4.1 网站性能测试

4.1.1 不同视?#31373;?#30340;网站性能

4.1.2 性能测试指标

4.1.3 性能测试方法

4.1.4 性能测?#21592;?#21578;

4.1.5 性能优化策略

4.2 Web 前端性能优化

4.2.1 浏览器访问优化

4.2.2 CDN 加速

4.2.3 反向代理

4.3 应用服务器性能优化

4.3.1 分?#38469;交?#23384;

4.3.2 异?#35762;?#20316;

4.3.3 使用集群

4.3.4 代码优化

4.4 存储性能优化

4.4.1 机械?#25165;蘶s. 固态?#25165;?/p>

4.4.2 B+树vs.LSM 树

4.4.3 RAIDvs.HDFS

4.5 小结

5 万无一失:网站的高可用架构

5.1 网站可用性的度量与考核

5.1.1 网站可用性度量

5.1.2 网站可用性考核

5.2 高可用的网站架构

5.3 高可用的应用

5.3.1 通过负载均衡进行无状态服务的失效转移

5.3.2 应用服务器集群的Session 管理

5.4 高可用的服务

5.5 高可用的数据

5.5.1 CAP 原理

5.5.2 数据备份

5.5.3 失效转移

5.6 高可用网站的软件质量保证

5.6.1 网站发布

5.6.2 自动化测试

5.6.3 预发布验证

5.6.4 代码控制

5.6.5 自动化发布

5.6.6 灰度发布

5.7 网站运行监控

5.7.1 监控数据采集

5.7.2 监控管理

5.8 小结

6 永无止境:网站的伸缩性架构

6.1 网站架构的伸缩性设计

6.1.1 不同功能进行物理分离实?#31258;?#32553;

6.1.2 单一功能通过集群规模实?#31258;?#32553;

6.2 应用服务器集群的伸缩性设计

6.2.1 HTTP 重定向负载均衡

6.2.2 DNS 域名解析负载均衡

6.2.3 反向代理负载均衡

6.2.4 IP 负载均衡

6.2.5 数据链路层负载均衡

6.2.6 负载均衡算法

6.3 分?#38469;交?#23384;集群的伸缩性设计

6.3.1 Memcached 分?#38469;交?#23384;集群的访问模型

6.3.2 Memcached 分?#38469;交?#23384;集群的伸缩性挑战

6.3.3 分?#38469;交?#23384;的一致性Hash 算法

6.4 数据存储服务器集群的伸缩性设计

6.4.1 关系数据库集群的伸缩性设计

6.4.2 NoSQL 数据库的伸缩性设计

6.5 小结

7 随需应变:网站的可扩展架构

7.1 构建可扩展的网站架构

7.2 利用分?#38469;?#28040;息队列?#26723;?#31995;统耦合性

7.2.1 ?#24405;?#39537;动架构

7.2.2 分?#38469;?#28040;息队列

7.3 利用分?#38469;?#26381;务打造可?#20174;?#30340;业务?#25945;?/p>

7.3.1 Web Service 与企业级分?#38469;?#26381;务

7.3.2 大型网站分?#38469;?#26381;务的需求与特点

7.3.3 分?#38469;?#26381;务框架设计

7.4 可扩展的数据结构

7.5 利用开?#29260;教?#24314;设网站生态圈

7.6 小结

8 固若金汤:网站的安全架构

8.1 道高一尺魔高一丈的网站应用攻击与防御

8.1.1 XSS 攻击

8.1.2 注入攻击

8.1.3 CSRF 攻击

8.1.4 其他攻击和漏洞

8.1.5 Web 应用防火墙

8.1.6 网站安全漏?#29943;?#25551;

8.2 信息?#29992;?#25216;术及密钥安全管理

8.2.1 单向散列?#29992;?/p>

8.2.2 对称?#29992;?/p>

8.2.3 非对称?#29992;?/p>

8.2.4 密钥安全管理

8.3 信息过滤与反垃圾

8.3.1 文本匹配

8.3.2 分类算法

8.3.3 黑名单

8.4 电子商务风险控制

8.4.1 风险

8.4.2 风控

8.5 小结

第3篇 案例

9 ?#21592;?#32593;的架构演化案例分析

9.1 ?#21592;?#32593;的业务发展历程

9.2 ?#21592;?#32593;技术架构演化

9.3 小结

10 维基百科的高性能架构设计分析

10.1 Wikipedia 网站整体架构

10.2 Wikipedia 性能优化策略

10.2.1 Wikipedia 前端性能优化

10.2.2 Wikipedia 服务端性能优化

10.2.3 Wikipedia 后端性能优化

11 海量分?#38469;?#23384;储系统Doris 的高可用架构设计分析

11.1 分?#38469;?#23384;储系统的高可用架构

11.2 不同故障情况下的高可用解决方案

11.2.1 分?#38469;?#23384;储系统的故障分类

11.2.2 正常情况下系统访问结构

11.2.3 ?#24425;?#25925;障的高可用解决方案

11.2.4 临时故障的高可用解决方案

11.2.5 永久故障的高可用解决方案

12 网?#22909;?#26432;系统架构设计案例分析

12.1 秒杀活动的技术挑战

12.2 秒杀系统的应对策略

12.3 秒杀系统架构设计

12.4 小结

13 大型网站典型故障案例分析

13.1 写日志也会引发故障

13.2 高并发访问数据库引发的故障

13.3 高并发情况下锁引发的故障

13.4 缓存引发的故障

13.5 应用启动不同步引发的故障

13.6 大文件读写独占?#25490;?#24341;发的故障

13.7 滥用生产环境引发的故障

13.8 不规范的流程引发的故障

13.9 不好的编程习惯引发的故障

13.10 小结

第4篇 架构师

14 架构师领导艺术

14.1 关注人而不是产

14.2 发掘人的优秀

14.3 ?#34453;?#32654;好蓝图

14.4 ?#39184;?#21442;与架构

14.5 学会妥协

14.6 成就他人

15 网站架构师职场攻略

15.1 发?#27835;?#39064;,寻找?#40644;?/p>

15.2 提出问题,寻求支持

15.3 解决问题,达成绩效

16 漫话网站架构师

16.1 按作?#27809;?#20998;架构师

16.2 按效果划分架构师

16.3 按职责角色划分架构师

16.4 按关注层次划分架构师

16.5 按口碑划分架构师 206

16.6 非主流方?#20132;?#20998;架构师

附录A 大型网站架构技术一览

附录B Web开发技术发展历程

后记

大型网站技术架构 核心原理与案例分析 精彩文摘

1.4 网站架构设计误区

在大型网站架构发?#26500;?#31243;中有如?#24405;?#20010;容易出现的误区。

1.4.1 一味追随大公司的解决方案

由于大公司巨大成功的光环效应,再加上从大公司挖来的技术高手的影响,网站在讨论架构决策?#20445;?#26368;有说服力的一句话就成了“?#21592;?#23601;是这么搞的”或者“Facebook就是这么搞的”。

大公司的经验和成功模式固然重要,?#26723;?#23398;习借鉴,但如果因此而变得盲从,就失去了坚持自我的勇气,在架构演化的道路上迟早会?#26376;貳?/p>

1.4.2 为了技术而技术

网站技术是为业务而存在的,除此毫无意义。在技术选型和架构设计中,?#29273;?#32593;站业务发展的实际,一味?#38750;?#26102;髦的新技术,可能会将网站技术发展引入崎岖小道,架构之路越走越难。

1.4.3 企图用技术解决所有问题

最典型的例子就是2012年年初12306故障?#24405;?#21518;,软件开发技术界的?#20174;Α?/p>

各路专业?#22836;?#19987;业人?#24656;?#35828;纷纭地帮12306的技术架构出谋划策,甚至有人提议帮12306写一个开源的网站,解决其大规模并发访问的问题。

12306真正的问题其实不在于它的技术架构,而在于它的业务架构:12306根本就不应该在几亿中国人一票难求的情况下?#28304;?#21475;售票的模式在网上售?#20445;?#38646;点开始出售若干天后的车?#20445;?2306需要重构的不仅是它的技术架构,更重要的是它的业务架构:调整业务需求,换一种方式卖?#20445;?#32780;不要去搞促销秒杀这种噱头式的游戏。

后来证明12306确实是朝这个方向发展的:在售票方式上引入了排队机制、整点售票调整为分时段售票。其实如果能控?#35889;?#24182;发访问的量,很多棘手的技术问题也就不是什么问题了。

技术是?#32654;?#35299;决业务问题的,而业务的问题,?#37096;?#20197;通过业务的手?#31283;?#35299;决。

1.5 小结

时?#20004;?#26085;,大型网站的架构演化方案已经非常成熟,各种技术方案也逐渐产品化。许多小型网站已经慢慢不需要再经历大型网站经历过的架构演化之路就可?#28798;?#27493;发展壮大,因为现在越来越多的网站从建立之初就是搭建在大型网站提供的云计算服务基础之上,所需要的一切技术?#35797;矗?#35745;算、存储、网络都可?#22253;?#38656;购买,线性伸缩,不需要自己一点一点地?#21019;?#21508;种?#35797;矗?#32508;合使用各种技术方案逐步去完善自己的网站架构了。

所以能亲身经历一个网站?#26377;〉教?#30340;架构演化过程的网站架构师越来越少,虽然过去有这种经历的架构师也很少(?#26377;?#22411;网站发展成大型网站的机会本来?#22270;?#23569;),但是将来可能真就没有了。

图书网:大型网站技术架构 核心原理与案例分析pdf

?#20439;试聰略?#20215;格为2图书币,请先
会员充值限时优惠:充30图书币送10图书币,每个会员仅一次优惠(此活动截止本月底)。
  • 我的微信
  • 扫一扫加好友
  • weinxin
  • 微信公众号
  • 扫一扫关注
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: