正版二手书,欢迎选购
¥ 14.24 2.4折 ¥ 59 九品
库存8件
作者李智慧
出版社电子工业出版社
ISBN9787121212000
出版时间2013-09
装帧平装
开本16开
定价59元
货号960797714890211335
上书时间2024-12-03
我为什么要写这本书
我想写一本关于网站架构方面的书源起于2011年年末至2012年年初发生的两件事。
2011年末,京东网图书促销,在打5折的基础上再满一百送一百,作为一个爱买书胜过爱读书的人,我对这种促销活动根本没有免疫力,于是兴致勃勃地在活动当天登录www.360buy.com,准备将收藏夹里的图书一网打尽。
往购物车里尽情地塞了一堆书后,点击“购买”按钮,但是浏览器迟迟没有响应,预感到京东的服务器可能因为并发访问量过高,超过了系统的最大负载能力,果然过了一会,浏览器页面显示“Service is too busy”。我不甘心,返回购物车页面继续点击“购买”按钮,浏览器继续显示“Service is too busy”。
于是我猜测:能够正常访问购物车,却不能成功购买,问题应该是出在订单系统,B2C网站生成一个订单需要经历扣减库存、扣减促销资源、更新用户账户等一系列操作,这些操作大多是数据库事务操作,没有办法通过缓存等手段来减轻数据库服务器负载压力,如果事前没有设计好数据库伸缩性架构,那么京东的技术团队将遇到一个大麻烦。
当天晚上,我登录新浪微博,看到京东的大老板刘强东发布了一条微博:“我已经紧急采购了10台服务器,增强网站后台,明天继续促销一天,一定让大家买到书”。即使在有成熟数据库伸缩性架构设计的前提下,进行一次数据库扩容也是件棘手的事,而京东只需要一个晚上就能搞定,让我对京东的技术实力刮目相看。
第二天一上班,我的第一件事就是登录点击“购买”按钮后悲剧地发现页面还是“Service is too busy”。当天晚上,刘强东又发布了一条微博:“请信息部的同事喝茶”。还配了一张照片:一张大桌子,只有一杯茶,旁边放了一把刀……
我想京东信息部的同事绝对不是有意要捉弄他们的老板和客户,很可能是他们错误地判断了系统的瓶颈及伸缩性架构的困难,对老板做出了过度承诺,而这背后折射出的是他们对网站架构的本质缺乏了解。
另一件事发生在2012年年初,当时的中国铁道部官方售票网站www.12306.cn在春运期间因为大量用户访问而崩溃,无法有效访问。12306作为一个运营不久的网站,缺乏大规模并发访问处理的经验,遇到一些问题其实不奇怪,不管花多少钱,经验教训都需要经历时间和挫折才能得到。奇怪的是,12306的架构师似乎对这种可能发生的大规模并发访问产生的问题完全没有一点概念,系统好像根本没有经过任何高并发场景下的性能评估和性能测试,就那么干脆利落地崩溃了,趴在那里长时间起不来。
这两件事情促使我想写一本关于网站架构的书,阐述网站技术架构最基本的驱动力,基础的架构设计原理,以及架构方案选择的价值观。希望软件工程师们在解决问题之前,能够认真思考自己面对的真正问题究竟是什么,有哪些技术方案可以选择,其基本原理是什么。所以这本书里没有高深的算法和聱牙诘屈的公式,也很少有程序代码。读者可以把本书当作网站架构设计的科普书,即使对网站架构没有什么了解,也能够比较轻松地阅读。
在本书的写作过程中(2012年下半年),没有再看到京东促销宕机的新闻,12306也逐渐稳定成熟。我们虽然无法猜测京东“信息部的同事”和12306网站的工程师们付出了多少努力,但能在相对比较短的时间里解决这些技术问题,也说明了网站架构其实并不难,真正能解决问题的技术一定是简单的。
本书致力于把这些简单的技术和道理呈现给读者。
如何阅读本书
我自己读书不求甚解,遇到看不懂的地方就跳过去,但是希望作者对难点和重点能换个角度和方式在后面章节再叙述,以帮助我重新思考和认识前面不能理解的重要知识。
机械制图的时候,通常使用三视图描述一个机械零件,从正视、侧视、俯视三个角度对一个零件绘图,从而全面描述一个零件的结构。软件架构设计中常用的4+1视图模型,也是一种多角度描述软件系统设计的手段。
本书中,重要的架构原理和技术方案都采用多角度描述的方法。
第1篇,从演化、模式、要素三个维度描述网站整体架构。
第2篇,从性能、可用性、伸缩性、扩展性、安全这五个要素方面详细描述网站架构核心原理,其中重要的负载均衡、异步处理、分布式缓存等技术方案又在不同章节从多角度进行描述。
第3篇,通过几个具体案例再一次从整体和局部描述网站架构方法。
第4篇,从架构师做事的角度回顾网站技术架构,读者在阅读前面技术章节感到枯燥的时候,也可以跳到本篇休闲放松下。
阅读本书过程中有任何问题和建议,请联系作者。新浪微博:大型网站技术架构。
致谢
2012年五一节前夕,当我拜访博文视点的编辑胡辛征,商谈出版一本关于大型网站技术架构的图书时,没有想到自己面临的挑战是如此巨大。
整个图书写作过程就像喝醉了酒:头痛如裂,有很多话想说,但又不知该从何说起。
我很庆幸,这个过程有你们陪伴、支持、鼓励和帮助,是你们给了我继续前行的勇气。
感谢易普际的培训顾问周腾飞,策划并鼓励我去写这本书。
感谢阿里巴巴的技术专家余俊和何坤,这本书的大纲和结构就是和你们在钱塘江畔散步时聊出来的,但很遗憾最后没能成功蛊惑你们和我一起创作本书。
感谢阿里巴巴高级开发工程师熊红亮、丁夏珍;IBM咨询经理种新华、架构师吴业勇;百度产品经理王晟;Intel运维工程师Liu Gongmin给予的建议和鼓励。
感谢博文视点的编辑刘皎、郑柳洁,以及许多我不知道名字的编辑为本书最终出版付出的努力。
感谢阿里巴巴资深架构师潘磊、王定乾、钱霄、王齐,指引我进入网站架构的知识殿堂。
本书很多内容源自阿里同学们的知识库,原谅我无法一一致谢。
感谢我的妻子方芬香,你给予我一个新的世界,让我如此热爱生活。
李智慧,曾在阿里巴巴担任技术专家,参与阿里巴巴基础技术平台开发和架构设计。目前就职英特尔亚太研发中心从事云计算与大数据方面的研发工作。
第1篇 概述
1 大型网站架构演化
1.1 大型网站软件系统的特点
1.2 大型网站架构演化发展历程
1.2.1 初始阶段的网站架构
1.2.2 应用服务和数据服务分离
1.2.3 使用缓存改善网站性能
1.2.4 使用应用服务器集群改善网站的并发处理能力
1.2.5 数据库读写分离
1.2.6 使用反向代理和CDN 加速网站响应
1.2.7 使用分布式文件系统和分布式数据库系统
1.2.8 使用NoSQL和搜索引擎
1.2.9 业务拆分
1.2.10 分布式服务
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 分布式
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 瞬时响应:网站的高性能架构
4.1 网站性能测试
4.1.1 不同视角下的网站性能
4.1.2 性能测试指标
4.1.3 性能测试方法
4.1.4 性能测试报告
4.1.5 性能优化策略
4.2 Web 前端性能优化
4.2.1 浏览器访问优化
4.2.2 CDN 加速
4.2.3 反向代理
4.3 应用服务器性能优化
4.3.1 分布式缓存
4.3.2 异步操作
4.3.3 使用集群
4.3.4 代码优化
4.4 存储性能优化
4.4.1 机械硬盘vs. 固态硬盘
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 不同功能进行物理分离实现伸缩
6.1.2 单一功能通过集群规模实现伸缩
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 分布式缓存集群的伸缩性设计
6.3.1 Memcached 分布式缓存集群的访问模型
6.3.2 Memcached 分布式缓存集群的伸缩性挑战
6.3.3 分布式缓存的一致性Hash 算法
6.4 数据存储服务器集群的伸缩性设计
6.4.1 关系数据库集群的伸缩性设计
6.4.2 NoSQL 数据库的伸缩性设计
6.5 小结
7 随需应变:网站的可扩展架构
7.1 构建可扩展的网站架构
7.2 利用分布式消息队列降低系统耦合性
7.2.1 事件驱动架构
7.2.2 分布式消息队列
7.3 利用分布式服务打造可复用的业务平台
7.3.1 Web Service 与企业级分布式服务
7.3.2 大型网站分布式服务的需求与特点
7.3.3 分布式服务框架设计
7.4 可扩展的数据结构
7.5 利用开放平台建设网站生态圈
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 网站安全漏洞扫描
8.2 信息加密技术及密钥安全管理
8.2.1 单向散列加密
8.2.2 对称加密
8.2.3 非对称加密
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 淘宝网的架构演化案例分析
9.1 淘宝网的业务发展历程
9.2 淘宝网技术架构演化
9.3 小结
10 维基百科的高性能架构设计分析
10.1 Wikipedia 网站整体架构
10.2 Wikipedia 性能优化策略
10.2.1 Wikipedia 前端性能优化
10.2.2 Wikipedia 服务端性能优化
10.2.3 Wikipedia 后端性能优化
11 海量分布式存储系统Doris 的高可用架构设计分析
11.1 分布式存储系统的高可用架构
11.2 不同故障情况下的高可用解决方案
11.2.1 分布式存储系统的故障分类
11.2.2 正常情况下系统访问结构
11.2.3 瞬时故障的高可用解决方案
11.2.4 临时故障的高可用解决方案
11.2.5 永久故障的高可用解决方案
12 网购秒杀系统架构设计案例分析
12.1 秒杀活动的技术挑战
12.2 秒杀系统的应对策略
12.3 秒杀系统架构设计
12.4 小结
13 大型网站典型故障案例分析
13.1 写日志也会引发故障
13.2 高并发访问数据库引发的故障
13.3 高并发情况下锁引发的故障
13.4 缓存引发的故障
13.5 应用启动不同步引发的故障
13.6 大文件读写独占磁盘引发的故障
13.7 滥用生产环境引发的故障
13.8 不规范的流程引发的故障
13.9 不好的编程习惯引发的故障
13.10 小结
第4篇 架构师
14 架构师领导艺术
14.1 关注人而不是产
14.2 发掘人的优秀
14.3 共享美好蓝图
14.4 共同参与架构
14.5 学会妥协
14.6 成就他人
15 网站架构师职场攻略
15.1 发现问题,寻找突破
15.2 提出问题,寻求支持
15.3 解决问题,达成绩效
16 漫话网站架构师
16.1 按作用划分架构师
16.2 按效果划分架构师
16.3 按职责角色划分架构师
16.4 按关注层次划分架构师
16.5 按口碑划分架构师 206
16.6 非主流方式划分架构师
附录A 大型网站架构技术一览
附录B Web开发技术发展历程
后记
《大型网站技术架构:核心原理与案例分析》通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web安全、系统发布、运维监控等在内的大型网站开发全景视图。
《大型网站技术架构:核心原理与案例分析》作者是拥有核心技术部门的一线工作经验,直接体验了大型网站构建与发展过程中的种种生与死,蜕与变,见证了一个网站架构从幼稚走向成熟稳定的历程。
没有晦涩难懂的术语,没有诘屈聱牙的文句,没有故弄玄虚的观点……
明明白白的语句,清清楚楚的文法,干净利落的建议——让读者直接体会网站架构的紧要处,不容马虎的关键点——这恰好是一个优秀的网站架构所必备的要素。
如果说“水不在深,有龙则灵”,那么对于想了解网站架构的读者而言,这本书恰好是“书不在多,有它则行!”
还犹豫什么呢?
— 没有更多了 —
以下为对购买帮助不大的评价