架构师书单

一、大型网站架构系列

第一本:《大型网站技术架构:核心原理与案例分析》--李智慧

第二本:《大型网站系统与Java中间件实践》

第三本:《大型分布式网站架构设计与实践》--陈康贤。

第四本:《Web信息架构——设计大型网站》

第五本:《高性能网站建设》,对web前端架构做了非常好的讲解。

第六本:《实用负载均衡技术:网站性能优化攻略》,本书较详细的介绍了负载均衡,缓存代理等知识,对系统了解负载均衡技术有帮助。

第七本:《高性能电子商务平台构建:架构、设计与开发》,本书可以作为功能架构参考,因为他讲的是国内一个开源商城的架构。

第八本《高性能网站构建实战》,建议运维人员可以参考。

二、分布式系统系列

第一本:《从Paxos到Zookeeper:分布式一致性原理与实践》

第二本:《ZeroC Ice权威指南》,作者是我们群内的S级资深架构师Leader-us老师所著。

第三本:《Kubernetes权威指南:从Docker到Kubernetes实践全接触》是介绍Docker和Kubernetes比较不错的一本书。作者也有我们的Leader-us老师。

第四本:《大规模分布式存储系统:原理解析与架构实战》,对了解分布式存储有一定的帮助。

三、BAT技术系列

第一本:《淘宝技术这十年》群内有电子版,个人看了至少三遍以上。生动形象的介绍了淘宝从小到大的技术发展历程。对思考技术发展有较好的帮助

第二本:《京东技术解密》,可以作为参考吧,本人买了一本,但还没详细看。总体来看,《淘宝技术这十年》质量和内容上更好一些。

第三本《华为研发》本人几年前看的是第一版,现在又第二版了。此书对华为技术的发展和管理变革有一定了解,从而指导自己对技术管理进行一些改进。

四、架构设计系列

第一本:《研磨设计模式》,这本书详细对GOF设计模式进行了讲解。

第二本:《面向对象葵花宝典》,对理解面向对象思想有一些帮助。对面向对象理解做了较到位的描述。

第三本:《.NET应用架构设计:原则、模式与实践》,不过这本是NET写的。对常用的架构模式做了介绍。比如N层设计,业务层设计,逻辑层设计,服务层

第四本:《Microsoft.NET企业级应用架构设计》

第五本:《架构探险:从零开始写Java Web框架》

 

《CTO说》

《分布式数据库架构及企业实践——基于Mycat中间件》-MyCat

《RabbitMQ实战:高效部署分布式消息队列》

 

《RabbitMQ实战:高效部署分布式消息队列》

基本信息

·        作者: (美)AlvaroVidela (阿尔瓦罗·维德拉),Jason J. W. Williams(詹森.J.W.威廉姆斯)   

·        译者: 汪佳南

·        出版社:电子工业出版社

·        ISBN9787121271649

·        上架时间:2015-10-21

·        出版日期:2015 年10月

·        开本:16

·        页码:310

·        版次:1-1

·        所属分类:

计算机 软件与程序设计 网络编程 综合

编辑推荐

绝大多数应用程序的核心都有一个虚拟交换机,用于在服务器、程序和服务之间快速传递消息。RabbitMQ是一个高效且易于部署的消息队列服务器,它可以轻而易举地处理各种情形下的消息通信,不论是网络初创公司还是大型企业系统。
本书能够教会你如何使用RabbitMQ消息通信服务器,构建和管理用不同语言编写的可伸缩应用。这很容易上手。你将学习消息队列的工作原理以及RabbitMQ是如何适用的。然后,你将通过许多案例来探索实践当中的可扩展性和互操作性问题。最后,你将学习如何将Rabbit打造成一部运作良好的机器,以应对24×7×365的无间断工作环境。
本书包以下内容
□ 学习基本消息通信设计模式
□ 使用模式来满足按需扩展
□ 整合PHP编写的前端和用任何语言编写的后端
□ 在30分钟内实现发布/订阅的告警服务
□ 配置RabbitMQ内建集群
□ 监控、管理、扩展并调试RabbitMQ
本书是为那些熟悉Python、PHP、Java、.NET或者任何其他现代编程语言的开发者编写的。无须任何RabbitMQ经验。

内容简介

    书籍
    计算机书籍
《RabbitMQ实战:高效部署分布式消息队列》对RabbitMQ做了全面、翔实的讲解,体现了两位专家的真知灼见。《RabbitMQ实战:高效部署分布式消息队列》首先介绍了有关MQ的历史,然后从基本的消息通信原理讲起,带领读者一路探索RabbitMQ的消息通信世界。这当中不仅包含了针对单台RabbitMQ服务器和RabbitMQ集群的讲解,还教导读者如何使用各种工具来进行监控。
《RabbitMQ实战:高效部署分布式消息队列》内容浅显易懂,文笔风趣幽默。《RabbitMQ实战:高效部署分布式消息队列》中包含了丰富的、可以运行的示例程序源代码,读者可以自行下载并运行,这种亲身实践有助于加深对相关主题的理解。对于初学者来说,这样的编排非常适用。
对于那些有一定RabbitMQ使用经验的读者来说,《RabbitMQ实战:高效部署分布式消息队列》不仅可以巩固消息通信基本原理,同时也可加深对RabbitMQ高级特性的理解,譬如如何编写RabbitMQ插件。相信处于RabbitMQ探索之旅不同阶段的读者都能从《RabbitMQ实战:高效部署分布式消息队列》获益。
《RabbitMQ实战:高效部署分布式消息队列》适合有一定工作经验的开发者或者架构师阅读,也可以作为RabbitMQ运维工作的参考手册。 

作译者

Alvaro Videla是一名专门从事基于MQ应用程序的开发者和架构师。
Jason J.W. Williams是消息通信服务供应商DigiTar公司的CTO,他领导着设计与开发工作。 

目录

第1章 天降奇兵1
1.1 住在别人的地下城堡 3
1.2 救世主AMQP 5
1.3 RabbitMQ简史 5
1.4 百里挑一 8
1.5 在UNIX系统上安装RabbitMQ 8
1.5.1 为什么环境很重要--生活在Erlang 的世界里 9
1.5.2 获取安装包 9
1.5.3 设置文件夹结构 9
1.5.4 首次运行Rabbit 10
1.6 总结 12
第2章 理解消息通信13
2.1 消费者和生产者(这可不是经济学课程哦) 14
2.2 从底部开始构造:队列 17
2.3 联合起来:交换器和绑定 22
2.4 多租户模式:虚拟主机和隔离 27
2.5 我的消息去哪儿了呢?持久化和你的策略 28
2.6 把所有内容结合起来:一条消息的一生 32
2.7 使用发送方确认模式来确认投递 37
2.8 总结 40

第3章 运行和管理Rabbit 42
3.1 服务器管理 43
3.1.1 启动节点 43
3.1.2 停止节点 45
3.1.3 关闭和重启应用程序:有何差别 46
3.1.4 Rabbit 配置文件 46
3.2 请求许可 48
3.2.1 管理用户 49
3.2.2 Rabbit 的权限系统 50
3.3 检查 54
3.3.1 查看数据统计 54
3.3.2 理解RabbitMQ 日志 59
3.4 修复Rabbit:疑难解答 63
由badrpc、nodedown 和其他Erlang 引起的问题 63
3.5 总结 68
第4章 解决Rabbit相关问题:编码与模式69
4.1 解耦风雨路:谁将我们推向消息通信 70
4.1.1 异步状态思维(分离请求和动作) 70
4.1.2 提供扩展性:没有负载均衡器的世界 73
4.1.3 零成本API :语言不应成为枷锁 73
4.2 发后即忘模型 74
4.2.1 发送告警 75
4.2.2 并行处理 84
4.3 别忘了:用RabbitMQ实现RPC并等待响应 92
4.3.1 私有队列和发送确认 93
4.3.2 使用reply_to 来实现简单的JSON RPC93
4.4 总结 98
第5章 集群并处理失败99
5.1 开足马力:RabbitMQ集群 100
5.2 集群架构 101
5.2.1 集群中的队列 101
5.2.2 分布交换器 103
5.2.3 是内存节点还是磁盘节点 104
5.3 在你的笔记本电脑上设置集群 106
5.4 将节点分布到更多的机器上 110
5.5 升级集群节点 114
5.6 镜像队列和保留消息 115
5.6.1 声明并使用镜像队列 115
5.6.2 镜像队列工作原理 118
5.7 总结 120
第6章 从故障中恢复121
6.1 为Rabbit做负载均衡 122
6.1.1 安装HAProxy 124
6.1.2 配置HAProxy 125
6.2 连接丢失和故障转移 127
6.3 总结 134
第7章 warren和Shovel:故障转移和复制 135
7.1 warren:另一种集群方式 136
7.2 设定负载均衡器--基于主/从的集群 138
7.3 远距离通信和复制 142
7.3.1 给Rabbit 装备Shovel :Shovel 插件介绍 142
7.3.2 安装Shovel 145
7.3.3 配置并运行Shovel 146
7.4 总结 152
第8章 从Web端管理RabbitMQ 154
8.1 超越rabbitmqctl:RabbitMQManagement插件 155
8.1.1 为何需要Management 插件 155
8.1.2 Management 插件功能 155
8.1.3 启用Management 插件 156
8.2 从Web控制台来管理RabbitMQ 158
8.2.1 监控Erlang VM 158
8.2.2 从JSON 文件导入配置 159
8.3 从Web控制台管理用户 160
8.3.1 创建用户 161
8.3.2 管理用户的权限 162
8.4 从Web控制台管理交换器和队列 163
8.4.1 列出队列信息 165
8.4.2 创建队列 166
8.5 回到命令行 168
8.5.1 为什么需要另一个CLI 168
8.5.2 CLI 管理:一种更简单的方式 170
8.5.3 安装rabbitmqadmin 脚本 170
8.5.4 清空队列、创建交换器等 171
8.6 总结 172
第9章 使用REST API控制Rabbit 173
9.1 能用RabbitMQ REST API做什么 175
9.2 对客户端授权访问 177
9.3 访问数据统计 178
9.4 自动化vhost和用户配置 181
9.5 总结 .186
第10章 监控187
10.1 监控RabbitMQ:密切关注你的warren188
10.1.1 为Nagios 编写健康检测 188
10.1.2 使用AMQP 模拟检测来确认RabbitMQ 是否运行 190
10.1.3 使用REST API 来检测 193
10.1.4 监控配置文件修改 196
10.1.5 监控集群状态 201
10.2 确保消费者正常工作 206
10.2.1 通过AMQP 监控队列等级 208
10.2.2 使用REST API 来监控队列级别 212
10.2.3 建立队列的消息计数基准经验法则 215
10.3 总结216
第11章 提升性能,保障安全217
11.1 对速度的需求 218
11.1.1 消息持久化 218
11.1.2 消息确认 219
11.1.3 路由算法和绑定规则 219
11.1.4 投递消息 221
11.2 内存使用率和进程限制 223
11.2.1 内存使用率 223
11.2.2 Erlang 进程计数 226
11.3 SSL连接 ..227
11.3.1 SSL 证书.228
11.3.2 设置证书颁发机构 ..229
11.3.3 生成根证书 233
11.3.4 生成服务器端证书 234
11.3.5 生成客户端证书 235
11.3.6 启用RabbitMQ 的SSL 监听器 236
11.3.7 测试你的RabbitMQ SSL 设置 237
11.4 总结 239
第12章 聪明的Rabbit:扩展RabbitMQ241
12.1 RabbitMQ插件 242
12.1.1 你可以用插件做什么 242
12.1.2 在哪里可以找到插件 244
12.1.3 安装插件 244
12.1.4 移除插件 245
12.2 制作你自己的插件 247
12.2.1 获取RabbitMQ Public Umbrella 248
12.2.2 设置文件夹结构 249
12.2.3 包含插件构建系统 250
12.2.4 创建Erlang 应用文件 250
12.3 创建自定义交换器模块 252
12.3.1 将交换器注册到RabbitMQ 254
12.3.2 实现交换器behaviour 257
12.3.3 编译自定义交换器 264
12.3.4 测试你的插件 267
12.4 总结 271
附录A 在Java和.NET上使用Rabbit 273
附录B 在线资源302
附录C 在Windows上安装RabbitMQ 307 

↑折

译者序

  笔者从事互联网行业已五年有余,经历过大大小小十几个项目,其中包括金融领域方面的交易系统、医疗护理信息系统,再到后来的淘宝第三方软件供应商。这些项目不仅为我带来了丰富的阅历,更让我认识到软件开发的根本就在于降低软件复杂性。因此,我们需要采用可复用的软件设计模式,选取合适的软件构件来搭建自己的系统。这当中就用到了消息队列。
  各位读者可能对消息队列并不陌生。消息队列提供一个异步通信协议,消息的发送者不用一直等待,直到消息被成功处理;而是立即返回。消息被暂存于队列当中,
  对消息感兴趣的消费者会订阅消息并处理它们。那么,在什么样的场景下需要使用消息队列呢?其中之一就是系统集成。这些系统可能是公司的遗留系统,抑或是第三方维护的系统。集成的方法有很多,其中之一是让这些系统往数据库的某几张表写入数据,然后让新的系统定时地去轮询并取出数据进行处理。这已经具备了消息队列通信的雏形:其中的数据库表就是消息队列,它定义了消息的标准结构,并暂存待处理的消息。对于小型系统和简单的需求来讲,这样的解决方案没什么问题,并且足够应付了。但是随着日后业务需求的扩张,接入的系统越来越多,对于消息通信的需求也变得越来越复杂:
  1. 你需要将同一条消息发送给多个感兴趣的系统,同时又需要让系统只接受符合特定模式的消息。
  2. 你开始觉得系统当中的同步处理方式严重影响了吞吐量,你想把用户订单处理、消息通知等都修改成异步处理的方式。
  3. 你开始关注系统的高可用性。同时你还想实时观测系统当中订单消息的处理速率,以便及时应对峰值压力。
  通过使用标准的消息队列系统就可以轻松处理以上问题。当然它们提供的功能远不止这些。市面上有很多开放源码的消息队列系统,包括JBoss Messaging、JORAM、Apache ActiveMQ、Sun Open Message Queue、Apache Qpid、RabbitMQ,等等。其中就有本书讨论的RabbitMQ。它实现了AMQP 协议,并且遵循Mozilla Public License 开源协议。它支持多种编程语言,可以方便地和Spring集成。最重要的一点是,使用消息队列并不是"杀鸡焉用牛刀"的问题,而是一种未雨绸缪,随着系统不断演进,你终将从消息队列中获益。
  翻译一本书绝非易事。在此,我要感谢给予我帮助的赵震一和陈祥奎夫妇,你们是我的挚友与伯乐。感谢电子工业出版社的编辑张春雨和李云静,是你们的细心指导保证了本书的翻译质量。最后感谢我的女友,你是我的精神支柱,在你的陪伴和支持下,我得以全心全意地完成工作。
  由于时间仓促,文中难免有不足之处,希望读者海涵,也希望各位能和我一样从中收获知识和快乐,谢谢大家。
  汪佳南
  2015 年9 月于杭州 

前言

  编写本书就像是在探索RabbitMQ 一样--遇到需要解决的问题,但是却不知道解决方案是什么。在2010 年5 月前,我们甚至都不认识对方。在过去的两年里,我俩都活跃在RabbitMQ 社区,但是我们并未真正相遇过。之后有一天在与AlexisRichardson(时任Rabbit 的CEO)的一次谈话中,我与Alvaro 互相认识了对方,这使得你现在手中所捧的这本书成为可能。我们之间的共同之处在于,我们都期望将自己通过艰难困苦才掌握的所有RabbitMQ 知识写下来。回到2010 年,这些知识(并且现今大部分时候仍然如此)散落在网络上那些一知半解的博客文章和简洁的技术指引中。换句话说,我俩都想要编写本书。真心希望本书在我们着手使用RabbitMQ的两年前就已经存在了。
  我俩并非传统的消息通信背景出身,这使得我们很快成为朋友,并在很大程度上形成了本书的基调;我们假定本书的读者是那些之前从未听说过队列或者绑定(binding)的人。事实上,当我俩探索RabbitMQ 时,我们甚至不知道消息通信是什么,或者说我们不知道这就是自己所寻找问题的解决方案。我(Jason)的处境是公司需要一种方法来获取从顾客那里收到的垃圾邮件报告,并在不同于消息主流的带外数据(out-of-band)中对它们进行处理。而Alvaro 的情况是,他们公司的社交网络成员通信系统在200GB 数据库负载下无法正常工作。就像很多其他诉诸消息通信的那些人一样,我俩首先尝试的是使用数据库表来解决以队列为中心的问题。像确保只有一个应用实例消费任意特定队列条目这样的问题,让我们在数据库驱动的方案上的尝试备受折磨,逼迫我们寻找更好的方法。毕竟,我们认识到自己不会是软件历史上第一个碰到这类问题的人。
  我们这两个问题的解决方案竟然惊人地相似:一位在Plaxo 的朋友告诉我看看"RabbitMQ 之类的东西"是否能解决我的以队列为中心的问题,同时在中国的一位Alvaro 的Erlang 同事则给了他相同的建议。相距半个地球,我俩以相同的方式发现了RabbitMQ,为的是尝试解决几乎同样的问题!事实上,你正阅读有关RabbitMQ的书,很有可能是因为相似的挑战以相同的方式指引着你来发现RabbitMQ。这也解释了为何RabbitMQ 如此流行:当尝试扩大我们构建的软件规模时,它能轻而易举地解决那些挥之不去的分布式数据的基本问题。
  我们希望本书能够帮助你通过使用RabbitMQ 来更快、更轻松地设计这些挑战的解决方案,从而使你可以将更多的时间用于编写改变世界的软件,同时花费更少的时间来了解如何加速消息通信代理。在这一路上,也许RabbitMQ 会给你带来一位了不起的合著者,你从没想过他会成为你终生的朋友1。本书是我们热爱编写软件的产物,同时也希望它能以你从未想象的方式来帮助你完成相同的事情。
  Alvaro Videla
  迪本多夫,瑞士
  Jason J. W. Williams
  爱达荷州博伊西市,美国
  致谢
  然本书封面上只出现了两个名字,但是如果没有其他人的帮助,也就不会有这本书的存在了。首先,在我们开始编写本书的时候,我们想要感谢RabbitMQ 的CEO Alexis Richardson。如果没有他的引荐,Manning 就不会给我们这个机会,我们也就不会一起创作这本书了。同时,我们也要感谢他为本书作序。同样地,我们也要向RabbitMQ 团队表达最真挚的感谢,感谢他们一直以来的帮助,以及对我们关于Rabbit细节之处提问的耐心解答。特别是,我们要感谢Matthew Sackman 和Matthias Radestock,如果没有他们两位的话,就不会有关于集群和RabbitMQ内部机制这几个章节了。
  尤其是RabbitMQ 团队的Jerry Kuch,我们对他的感激之情无以言表。Jerry 自愿花费了无数时间来为每一章草稿进行准确的审校,包括对已完成的图书进行"官方"技术审校。每当由于我们经验不足而需要说明和建议时,他总能在IM 上快速回复。作为RabbitMQ 团队的接口人,他非常耐心且从不抱怨。如果你发现自己正在探索未知的Rabbit操作,可能就需要感谢Jerry Kuch。他让本书更为出色;同时他也是一名优秀的工程师。
  我们再怎么感谢Manning 初级项目编辑MariaTownsley 也不为过。Maria 帮助我们按计划写作。她忍受着我们的工作安排,以及时好时坏的原稿。最重要的是,她是我们的拥护者,并且任何对我们来说重要的资源她都努力争取。如果你满意本书的写作风格,那就感谢Maria 吧,是她指引着我们做到这一点的。同时,我们也要感谢Cynthia Kane,是她让我们完成最后几章并付诸印刷。当我们的工作方式太老套的时候,Cynthia 以最终项目编辑的身份加入进来。她适应了我们的工作方式,并且将本书的工作当作自己从第一天起就加入进来那样看待。Cynthia 就像我们的三垒教练并护送我们回家。
  最后,我们要感谢忠实的读者,他们从Manning 的早期预览项目(MEAP)中购买了本书,同时也要感谢我们的审校们:Barry Alexander、P. David Pull、Bruce Snyder、Tony Garnock-Jones、James Williams、Patrick Lemiuex、Bruce Lowekamp、Carlton Gibson、Paul Grebenc、Richard Siddaway、Gordon Dickens、Gene Campbell、Karsten Str?b?k、Jeff Addison、David Dossot、Daniel Bretoi 和 Ben Rockwood。你们没有报酬。但是你们把本书当作自己的孩子一样,给我们提出了详细的反馈和深思熟虑的见解。正是由于你们的功劳,才让本书变得无比美好。谢谢你们!
  Alvaro
  我想要感谢我的太太Silvana,在本书的写作过程中她一直支持着我。我已经记不得由于编写本书的原因,我们错过了多少部电影、多久没有到外面逛逛了。我能说的只是"多谢理解"。另外,我还要感谢我的母亲一直以来对我的信任。毕竟,编写本书是全家人的功劳。我还要感谢我在中国The Netcircle 的朋友们,在那里我开始对Rabbit 深深地着迷了,并且还一天到晚不停地打扰他们。最后,我要感谢Jason。Manning 为我引荐了这位合著者,我们最后也成了好朋友。
  Jason
  我要感谢我的父母和我的妹妹在整个写作过程中给予我的支持和爱。他们信任我,并且敦促我前进。当我不想写作的时候,他们会把我推出门外到咖啡馆继续写作。他们一直相信我能够完成本书的编写(即便这看来遥不可及)。
  在和父母一起创建的初创公司里,我很荣幸能称呼父母为合伙人。作为我的合伙人,我亏欠了他们以及DigiTar 太多太多了。当写作需要插入到工作时间的时候,他们从未抱怨过。并且给予我很大的自由度来平衡写作和工作。如果没有我们的公司,我也不会有动力去探索Rabbit,也不会因写一些博客教程而受邀编写本书了。DigiTar 带给我许多祝福和机会,这本书就是其中之一。
  最后我要感谢Alvaro。我从不知道还存在你这么一位朋友,情同手足,就像来自另一位母亲的亲兄弟一样。谢谢你,你是我收到的最意外的祝福。
  关于本书

↓展开全部内容

序言

  欢迎阅读本书。如果你像我一样,你很有可能在想:"我是否应该从头开始阅读呢?"唉,市面上的技术书籍琳琅满目,但并不是所有的图书都值得花费时间关注。所以请让我邀你继续往下阅读,看看下面这份说明是否合你的胃口:
  你想要通过一种实用的方法来学习推技术、流数据,以及其他消息通信模式。
  你想要获得专家级别的RabbitMQ 技能,包括在设计方面和生产环境运行方面的最佳实践。
  换句话说,本书不仅仅是一本RabbitMQ 指南。它会为你讲解能覆盖多种使用场景的基本设计模式。它展现了为何越来越多的应用开始使用这些模式,以及哪些"可以做"、哪些"不能做"。
  这些模式是怎样的呢?如果你曾经有想法将系统绘成一幅信息流或者网络图,而非栈的形式,那么你可能正在使用,或者正准备使用消息通信。你可能一直在考虑数据投递、非阻塞操作或者推送通知。或者,你想使用发布/ 订阅模式、异步处理或是工作队列。所有这些模式构成了众所周知的消息通信(messaging)。
  消息通信是一种至关重要的能力:它使得软件应用可以相互连接并得以扩展。应用程序们既可以像一个巨大应用中的组件一样相互连接起来,也可以连接用户的设备和数据。消息通信从本质上来说是异步的,因为它通过分隔了数据的发送和接收来解耦应用。最奇妙的地方在于该连接模式可以在任何规模下以相同的方式工作。
  规模是关键点。互联网无处不在,它作为应用程序投递的基础,使得规模在应用程序设计中成为关键因素。我们已经无法停留在小规模的思考方式上。最近,术语"大数据"(bigdata)已经变得非常流行。不过相较于最近几年来说,所有事物都往大的方向发展了。
  举例来说,移动连接设备的数量很快就将超过地球上人口的数量。当我编写本书时,Facebook 正准备IPO。CTO Bret Taylor 说道:"如果Mark Zuckerberg 在宿舍编写Facebook 的时候这些技术就已经成熟的话,那么现在的Facebook 就已经是一个移动应用了。"
  花点时间想想。大多数应用曾经都是这样运作的:加载文档或者从数据库获取数据,做一些处理,并将结果写入磁盘。将来的应用程序会更像Facebook :总是在线,并且托管在云端,在任何地方都能访问。输入和处理是连续且自动的,并即时输出用户想要的过滤信息流。
  如果不采用一系列专门的设计模式的话,那么这些级别的自动化、可访问性和伸缩性都无从谈起。在本书中你就能学到这些模式。作为现代消息通信技术发起者之一,Derek Collison 将消息通信描述为"移动的数据",这一点令人印象深刻。很难想象有什么应用是不需要移动数据的。因此,消息通信无处不在。
  这本书可以让你立即上手。消息通信模式将以可运行代码的形式展现在你面前。作者也会帮助你在自己的系统上运行起来。在Jason J. W. Williams 和Alvaro Videla的帮助下,你就能零距离接触那些拥有多年运行大规模RabbitMQ 系统经验的专家了。本书是他们将经验分享给社区这一杰出工作的成果。
  在对RabbitMQ 有了一点感觉之后,不管你使用何种语言编写程序,都能很容易地在广大RabbitMQ 用户社区里寻求到帮助并找到更多示例。这使得RabbitMQ成为能满足你消息通信需求的最佳选择。
  希望你已经被我吊起了胃口,准备翻开下一页继续阅读。书中会有关于消息和RabbitMQ 的一切,作者将会为你揭开它们的神秘"面纱"。
  Alexis Richardson
  Rabbit Technologies 公司创始人和前任CEO
  VMware 云应用平台高级总监 

媒体评论

  在这份杰出的工作中,两位专家为我们分享了他们多年运行大规模RabbitMQ系统的经验。
  - Alexis Richardson, VMware前言的作者
  写得很棒,充满智慧,简单易懂。
  -Karsten Str?b?k,微软
  这是RabbitMQ大全,当中包含了各种有广度、有深度的案例。
  -Patrick Lemiuex,来自VoxelInternap
  本书将带你领略消息通信的美妙世界。
  -David Dossot, Mule in Action的合作者 

书摘

  译者序笔者从事互联网行业已五年有余,经历过大大小小十几个项目,其中包括金融领域方面的交易系统、医疗护理信息系统,再到后来的淘宝第三方软件供应商。这些项目不仅为我带来了丰富的阅历,更让我认识到软件开发的根本就在于降低软件复杂性。因此,我们需要采用可复用的软件设计模式,选取合适的软件构件来搭建自己的系统。这当中就用到了消息队列。各位读者可能对消息队列并不陌生。消息队列提供一个异步通信协议,消息的发送者不用一直等待,直到消息被成功处理;而是立即返回。消息被暂存于队列当中,对消息感兴趣的消费者会订阅消息并处理它们。那么,在什么样的场景下需要使用消息队列呢?其中之一就是系统集成。这些系统可能是公司的遗留系统,抑或是第三方维护的系统。集成的方法有很多,其中之一是让这些系统往数据库的某几张表写入数据,然后让新的系统定时地去轮询并取出数据进行处理。这已经具备了消息队列通信的雏形:其中的数据库表就是消息队列,它定义了消息的标准结构,并暂存待处理的消息。对于小型系统和简单的需求来讲,这样的解决方案没什么问题,并且足够应付了。但是随着日后业务需求的扩张,接入的系统越来越多,对于消息通信的需求也变得越来越复杂:1. 你需要将同一条消息发送给多个感兴趣的系统,同时又需要让系统只接受符合特定模式的消息。2. 你开始觉得系统当中的同步处理方式严重影响了吞吐量,你想把用户订单处理、消息通知等都修改成异步处理的方式。3. 你开始关注系统的高可用性。同时你还想实时观测系统当中订单消息的处理速率,以便及时应对峰值压力。通过使用标准的消息队列系统就可以轻松处理以上问题。当然它们提供的功能远不止这些。市面上有很多开放源码的消息队列系统,包括JBoss Messaging、JORAM、Apache ActiveMQ、Sun Open Message Queue、Apache Qpid、RabbitMQ,等等。其中就有本书讨论的RabbitMQ。它实现了AMQP 协议,并且遵循Mozilla Public License 开源协议。它支持多种编程语言,可以方便地和Spring集成。最重要的一点是,使用消息队列并不是“杀鸡焉用牛刀”的问题,而是一种未雨绸缪,随着系统不断演进,你终将从消息队列中获益。翻译一本书绝非易事。在此,我要感谢给予我帮助的赵震一和陈祥奎夫妇,你们是我的挚友与伯乐。感谢电子工业出版社的编辑张春雨和李云静,是你们的细心指导保证了本书的翻译质量。最后感谢我的女友,你是我的精神支柱,在你的陪伴和支持下,我得以全心全意地完成工作。由于时间仓促,文中难免有不足之处,希望读者海涵,也希望各位能和我一样从中收获知识和快乐,谢谢大家。汪佳南2015 年9 月于杭州序欢迎阅读本书。如果你像我一样,你很有可能在想:“我是否应该从头开始阅读呢?”唉,市面上的技术书籍琳琅满目,但并不是所有的图书都值得花费时间关注。所以请让我邀你继续往下阅读,看看下面这份说明是否合你的胃口:你想要通过一种实用的方法来学习推技术、流数据,以及其他消息通信模式。你想要获得专家级别的RabbitMQ 技能,包括在设计方面和生产环境运行方面的最佳实践。换句话说,本书不仅仅是一本RabbitMQ 指南。它会为你讲解能覆盖多种使用场景的基本设计模式。它展现了为何越来越多的应用开始使用这些模式,以及哪些“可以做”、哪些“不能做”。这些模式是怎样的呢?如果你曾经有想法将系统绘成一幅信息流或者网络图,而非栈的形式,那么你可能正在使用,或者正准备使用消息通信。你可能一直在考虑数据投递、非阻塞操作或者推送通知。或者,你想使用发布/ 订阅模式、异步处理或是工作队列。所有这些模式构成了众所周知的消息通信(messaging)。消息通信是一种至关重要的能力:它使得软件应用可以相互连接并得以扩展。应用程序们既可以像一个巨大应用中的组件一样相互连接起来,也可以连接用户的设备和数据。消息通信从本质上来说是异步的,因为它通过分隔了数据的发送和接收来解耦应用。最奇妙的地方在于该连接模式可以在任何规模下以相同的方式工作。规模是关键点。互联网无处不在,它作为应用程序投递的基础,使得规模在应用程序设计中成为关键因素。我们已经无法停留在小规模的思考方式上。最近,术语“大数据”(big data)已经变得非常流行。不过相较于最近几年来说,所有事物都往大的方向发展了。举例来说,移动连接设备的数量很快就将超过地球上人口的数量。当我编写本书时,Facebook 正准备IPO。CTOBret Taylor 说道:“如果Mark Zuckerberg 在宿舍编写Facebook 的时候这些技术就已经成熟的话,那么现在的Facebook 就已经是一个移动应用了。”花点时间想想。大多数应用曾经都是这样运作的:加载文档或者从数据库获取数据,做一些处理,并将结果写入磁盘。将来的应用程序会更像Facebook :总是在线,并且托管在云端,在任何地方都能访问。输入和处理是连续且自动的,并即时输出用户想要的过滤信息流。如果不采用一系列专门的设计模式的话,那么这些级别的自动化、可访问性和伸缩性都无从谈起。在本书中你就能学到这些模式。作为现代消息通信技术发起者之一,Derek Collison 将消息通信描述为“移动的数据”,这一点令人印象深刻。很难想象有什么应用是不需要移动数据的。因此,消息通信无处不在。这本书可以让你立即上手。消息通信模式将以可运行代码的形式展现在你面前。作者也会帮助你在自己的系统上运行起来。在Jason J. W. Williams 和Alvaro Videla的帮助下,你就能零距离接触那些拥有多年运行大规模RabbitMQ 系统经验的专家了。本书是他们将经验分享给社区这一杰出工作的成果。在对RabbitMQ有了一点感觉之后,不管你使用何种语言编写程序,都能很容易地在广大RabbitMQ 用户社区里寻求到帮助并找到更多示例。这使得RabbitMQ成为能满足你消息通信需求的最佳选择。希望你已经被我吊起了胃口,准备翻开下一页继续阅读。书中会有关于消息和RabbitMQ 的一切,作者将会为你揭开它们的神秘“面纱”。AlexisRichardsonRabbit Technologies 公司创始人和前任CEOVMware 云应用平台高级总监

 

《分布式数据库架构及企业实践——基于Mycat中间件》-MyCat

基本信息

·        作者: 周继锋等   

·        出版社:电子工业出版社

·        ISBN9787121302879

·        上架时间:2016-11-23

·        出版日期:2016 年11月

·        开本:16

·        页码:312

·        版次:1-1

·        所属分类:

计算机 数据库 数据库理论 分布式数据库

编辑推荐

讲解分布式数据库的书并不多,讲解其架构及企业实践的就更少了。
本书基于国内知名的开源分布式数据库中间件Mycat讲解了如何实现分布式数据库,很有实践及借鉴意义。
欢迎加入本书交流群:463996643(QQ)

内容简介

    书籍
    计算机书籍
《分布式数据库架构及企业实践--基于Mycat中间件》由资深Mycat 专家及一线架构师、DBA 编写而成。全书总计 8 章,首先简单介绍了分布式系统和分布式数据库的需求,然后讲解了分布式数据库的实现原理,并对市场上存在的各种分布式数据库中间件进行了对比,再围绕着如何利用 Mycat 实现分布式数据库而展开。《分布式数据库架构及企业实践--基于Mycat中间件》对 Mycat 从入门到进阶、从高级技术实践到架构剖析、从网络通信协议解析到系统工作原理的方方面面进行了详细讲解,并剖析了 Mycat的 SQL 路由、跨库联合查询、分布式事务及原生 MySQL、PostgreSQL 协议等核心技术。通过本书不仅可以了解 Mycat 的基本概念,掌握 Mycat 配置等技术,还能感受到 Mycat 的架构设计之美,了解 Mycat 2.0的未来规划。
无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理,还是对于资深 IT 人士来说,《分布式数据库架构及企业实践--基于Mycat中间件》都极具参考价值。 

作译者

周继锋
拥有十多年大型项目架构设计及实战经验,曾主导过众多分布式系统、微服务及大数据项目。在高并发、高可用、高可扩展性、高可维护性等领域拥有丰富的经验,对Hadoop、Spark源码进行过深度分析并具有丰富的实战经验。曾在ERP、医学、互联网行业担任资深工程师、资深架构师、技术总监等职务,为炼数成金高级讲师及国内知名的开源分布式数据库中间件Mycat的负责人。
冯钻优
多年来致力于分布式系统架构、分布式数据库、大数据技术的研究,在高并发、高可用的分布式系统设计和大数据处理方面有着丰富的经验。曾担任架构师、开发经理、技术经理等职位,主导过大型分布式系统、大数据分析项目的开发及实施落地,属于理论兼实践型架构师,现于某大型央企担任高级架构师、高级经理,为国内知名的开源分布式数据库中间件Mycat的高级顾问。
陈胜尊
拥有多年编程经验,专注于电信运营商大数据项目的设计及开发,擅长Hadoop生态圈的大数据分析技术、分布式架构设计、高并发架构设计、MySQL优化,曾主导众多大数据项目的架构设计。为国内知名的开源分布式数据库中间件Mycat的活跃开发者。
左越宗
拥有多年数据库管理经验,维护过超过500台以上的数据库实例,精通NoSQL集群维护与优化、异构数据迁移、关系型数据库集群设计、分布式架构设计、SQL优化及数据库软件性能优化等,曾在互联网金融、在线教育、游戏行业担任高级MySQL DBA、数据库集群工程师、数据库专家等职位。为尚观科技高级讲师及国内知名的开源分布式数据库中间件Mycat的高级顾问。 

目录

第 1 章数据库中间件与分布式数据库的实现 1
1.1 什么是分布式系统 1
1.2 为什么需要分布式数据库 2
1.3 分布式数据库的实现原理 3
1.4 Mycat 数据库中间件简介 5
1.4.1 Mycat 的历史与未来规划 5
1.4.2 Mycat 与其他中间件的区别 8
1.4.3 Mycat 的优势 10
1.4.4 Mycat 的适用场合 11
第 2 章 Mycat 入门 13
2.1 环境搭建 13
2.1.1 Windows 环境搭建 13
2.1.2 Linux 环境搭建 15
2.2 Mycat 核心概念详解 16
2.2.1 逻辑库(schema) 16
2.2.2 逻辑表(table) 16
2.2.3 分片节点(dataNode) 17
2.2.4 节点主机(dataHost) 17
2.3 Mycat 原理介绍 18
2.4 参与 Mycat 源码开发 19

2.4.1 Mycat 源码环境搭建 19
2.4.2 Mycat
源码调试 19
第 3 章 Mycat 进阶 22
3.1 Mycat 配置详解 22
3.1.1 Mycat 支持的两种配置方式 22
3.1.2 server.xml 配置文件 23
3.1.3 schema.xml 配置文件 28
3.1.4 sequence 配置文件 37
3.1.5 zk-create.yaml 配置文件 41
3.1.6 其他配置文件 44
3.2 Mycat 分片规则详解 46
3.2.1 分片表与非分片表 46
3.2.2 ER 关系分片表 46
3.2.3 分片规则 rule.xml 文件详解 46
3.2.4 取模分片 47
3.2.5 枚举分片 48
3.2.6 范围分片 49
3.2.7 范围求模算法 49
3.2.8 固定分片 hash 算法 50
3.2.9 取模范围算法 52
3.2.10 字符串 hash 求模范围算法 53
3.2.11 应用指定的算法 54
3.2.12 字符串 hash 解析算法 54
3.2.13 一致性 hash 算法 55
3.2.14 按日期(天)分片算法 56
3.2.15 按单月小时算法 57
3.2.16 自然月分片算法 58
3.2.17 日期范围 hash 算法 58
3.3 Mycat 管理命令详解 59
3.3.1 Reload 命令 61
3.3.2 Show 命令 62
第 4 章 Mycat 高级技术实战 68
4.1 用 Mycat 搭建读写分离 68
4.1.1 MySQL 读写分离 69
4.1.2 MySQL Galera Cluster 读写分离 73
4.1.3 SQL Server 读写分离 83
4.2 Mycat 故障切换 86
4.2.1 Mycat 主从切换 86
4.2.2 MySQL Galera 节点切换 99
4.3 Mycat+Percona+HAProxy+Keepalived 113
4.3.1 Mycat 113
4.3.2 Percona 集群 124
4.3.3 HAProxy 131
4.3.4 Keepalived 138
4.4 MHA+Keepalived 集群搭建 140
4.4.1 配置 MySQL 半同步方式 142
4.4.2 安装配置 MHA 150
4.4.3 测试重构 153
4.4.4 扩展 Keepalived 155
4.5 用 ZooKeeper 搭建 Mycat 高可用集群 158
4.5.1 ZooKeeper 概述 158
4.5.2 ZooKeeper 的运用场景 161
4.5.3 ZooKeeper 在 Mycat 中的使用163
4.6 Mycat 高可用配置 165
4.7 Mycat 注解技术 170
4.7.1 balance 注解实战 170
4.7.2 master/slave 注解实战 172
4.7.3 SQL 注解实战 173
4.7.4 schema 注解实战 176
4.7.5 dataNode 注解实战 176
4.7.6 catlet 注解实战 177
第 5 章 Mycat 企业运维 179
5.1 Mycat 性能监控--Mycat-web 详解179
5.1.1 Mycat-web 简介 179
5.1.2 Mycat-web 的配置和使用 180
5.1.3 Mycat 性能监控指标 181
5.2 Mycat 性能优化 183
5.3 MySQL 优化技术 186
5.3.1 数据库建表设计规范 186
5.3.2 SQL 语句与索引 195
5.3.3 配置文件 206
5.3.4 InnoDB 选择文件系统 212
5.3.5 系统架构 213
第 6 章 Mycat 架构剖析 215
6.1 Mycat 总体架构介绍 215
6.2 Mycat 网络 I/O 架构与实现 218
6.2.1 Mycat I/O 架构概述 218
6.2.2 前端通信框架 221
6.3 Mycat 线程架构与实现 224
6.3.1 多线程基础 224
6.3.2 Mycat 线程架构 226
6.4 Mycat 内存管理及缓存架构与实现 228
6.4.1 Mycat 内存管理 229
6.4.2 Mycat 缓存架构与实现 231
6.5 Mycat 连接池架构与实现 232
6.5.1 Mycat 连接池 232
6.5.2 Mycat 连接池架构及代码实现 234
6.6 Mycat 主从切换架构与实现 235
6.6.1 Mycat 主从切换概述 236
6.6.2 Mycat 主从切换的实现 238
第 7 章 Mycat 核心技术分析 241
7.1 Mycat 分布式事务的实现 241
7.1.1 XA 规范 241
7.1.2 二阶段提交 242
7.1.3 三阶段提交 243
7.1.4 Mycat 中分布式事务的实现 244
7.2 Mycat SQL 路由的实现 249
7.2.1 路由的作用 249
7.2.2 SQL 解析器 250
7.2.3 路由计算 252
7.3 Mycat 跨库 Join 的实现 260
7.3.1 全局表 261
7.3.2 ER 分片 262
7.3.3 catlet 263
7.3.4 ShareJoin 264
7.4 Mycat 数据汇聚和排序的实现 270
7.4.1 数据排序 270
7.4.2 数据汇聚 273
第 8 章 Mycat多数据库支持原理与实现 275
8.1 MySQL 协议在 Mycat 中的实现 275
8.1.1 MySQL 协议概述 275
8.1.2 Mycat 的 MySQL 协议实现 283
8.2 PostgreSQL 协议在 Mycat 中的实现287
8.2.1 PostgreSQL 介绍 287
8.2.2 PostgreSQL 协议 288
8.2.3 PostgreSQL 实现 293
8.3 Mycat 对 JDBC 支持的实现 298
8.3.1 Oracle 配置 299
8.3.2 SQL Server 配置 300
8.3.3 MongoDB 配置 301
8.3.4 源码分析 306 

↑折

前言

  随着移动互联网的兴起和大数据的蓬勃发展,系统的数据量正呈几何倍数增长,系统的压力也越来越大,这时最容易出现的问题就是服务器繁忙,我们可以通过增加服务器及改造系统来缓解压力,然后采用负载均衡、动静分离、缓存系统来提高系统的吞吐量。然而,当数据量的增长达到一定程度的时候,增加应用服务器并不能明显地提高系统的效率,因为所有压力都会传导到数据库层面,而大多数系统都是用一个数据库来存储和管理系统数据的。这时,Mycat应运而生。
  谈到Mycat就不得不谈谈Cobar,Cobar是阿里巴巴开源的数据库中间件,由于其存在使用限制及一些比较严重的问题,Leader-us在其基础上于2013年年底实现了Mycat 1.0版本,Mycat一经发布便引起了很多人的关注。之后Mycat社区对Cobar的代码进行了彻底重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合、Join等基本特性,同时兼容了绝大多数数据库,使之成为通用的数据库中间件。Mycat在1.4版本以后完全脱离了Cobar内核,同时采用了Mycat集群管理、自动扩容及智能优化,成为了高性能的数据库中间件。Mycat从诞生至今已有三年多了,一直在坚持做最好的开源数据库中间件产品。
  本书总计8章,涵盖了Mycat入门、进阶、高级技术实战、企业运维、架构剖析、核心技术分析、多数据库支持原理与实现等内容,内容详尽、图文并茂,几乎囊括了Mycat所涉及的方方面面,无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理,还是对于资深IT人士来说,本书都极具参考价值。
  第1章:介绍了分布式系统和分布式数据库系统的原理,介绍Mycat的起源和发展状况,并对各种数据库中间件做了简要介绍和对比。
  第2章:讲解了Mycat的入门知识,介绍了Mycat的安装环境、核心概念和分库分表的原理,以及Mycat源码开发调试的过程。
  第3章:讲解了Mycat的进阶知识,主要介绍Mycat的各种配置和分片算法。
  第4章:讲解了Mycat和MySQL实战案例,由拥有丰富的Mycat线上实战经验的专家和DBA共同编写而成,有很高的参考价值。
  第5章:简要介绍了用于Mycat性能监控的工具-Mycat-web,详细讲解了Mycat和MySQL的优化技术,是DBA的亲身总结和经验之谈。
  第6章:重点阐述了Mycat的架构,包括网络、线程、连接池、内存管理及缓存实现等,是了解Mycat框架的基础。
  第7章:介绍了Mycat的核心技术,包括分布式事务的实现、跨库Join的三种实现方式等,介绍了多节点数据汇聚和排序的原理,并详细阐述了在Mycat1.6版本中实现的一致性分布式事务的功能。
  第8章:介绍了MySQL和PostgreSQL的通信协议及Mycat对这些通信协议的实现,然后介绍了Mycat对JDBC及多种数据库的支持,例如Oracle、SQL Server、MongoDB等。
  本书的编写和校对历经一年,参与编写的作者都是Mycat开源项目中参与度比较高、提交过不少代码或有丰富的实战经验的资深人士。非常感谢参与本书编写、指导或校对的专家:Leader-us、南哥(曹宗南)、从零开始(宋伟)、小张哥(张超)、yuanfang(杨鹏飞)、顽石神(张治春)、冰麒麟(杨峰)、望舒(胡雅辉)、明明Ben(朱阿明)、零(章爱国)、little-pan(潘自朋)、CrazyPig(陈建欣)、毛茸茸的逻辑(王成瑞)、海王星(林志强)、石头狮子(林晁)、HanSenJ(姬文刚)、武(王灯武)、战狼(刘胡波)、KK(刘军)、董海雄(易班网)、arx(李秋伟)、正能量(王金剑)、吉光(李伟)。
  由于作者的写作水平有限,书中难免会有不妥或者疏漏之处,欢迎读者批评指正。
  冰风影
  Mycat社区负责人
  2016年11月6日于广州番禺 

媒体评论

  Mycat是一款强大的数据库中间件,是当下热门的移动互联网和云计算项目的必备基础中间件之一,不仅可以用于读写分离、分表分库及容灾备份,还可以用于多租户应用开发及云平台基础设施建设,让架构本身具备很强的适应性和灵活性。本书作者均拥有多年软件研发经验,是国内知名开源分布式数据库中间件Mycat的核心成员,其中冰风影是Dataguru的高级特约讲师。本书兼具实用性和独特性,非常值得入手一读。
  黄志洪ITPUB社区炼数成金社区创始人
  MySQL在分布式领域的短板造就了数据库中间件的繁荣,而在数据库中间件产品中,Mycat以其独特的设计理念风靡于数据库行业,成为开源数据库中间件的理想选择,成为DBA从业人员急需掌握的技能。相信Mycat会成为你的好伙伴!
  张见蓬尚观科技执行董事
  Mycat是一款非常优秀的数据库中间件,华泰证券在互联网架构转型的过程中与Mycat社区合作紧密,采用分布式数据库解决了以往的难题。非常感谢Mycat这样的优秀国产开源软件,祝愿Mycat越做越好!
  樊建华泰证券平台架构总监
  对于飞速发展的企业IT系统来说,数据库的开源和分布式一直是有挑战性的课题,而大部分企业IT团队的基础软件研发资源和时间相对有限,Mycat是开源分布式数据库架构中经济而有效的可选推荐方案之一。
  周辉顺丰科技数据中心副总监
  在当今发展迅猛的DT时代,如何真正收集、存储、管理和利用海量交易数据,成了企业及企业信息化提供商共同面对的难题,我在本书中找到了有效可行的方法,本书同样可以成为你攻克难题的利器!
  陈柏宇上海恰为思信息科技有限公司创始人 

书摘

  推荐序1
  随着大数据时代的到来,海量数据存储、并行计算、异构数据互联等一系列新技术在市场上不断地涌现。相信数据库行业的很多从业者都对传统关系型数据库的单点故障及容量问题头疼不已,而"分库分表"也早已成为解决这类问题的基础,此时,Mycat应运而生。 Mycat是一款面向企业级应用的开源数据库中间件产品,它目前支持数据库集群、分布式事务与ACID,被普遍视为基于MySQL技术的集群分布式数据库解决方案,在一些互联网、金融、运营商客户中用来替代昂贵的Oracle。
  Mycat不仅可以轻松对接MySQL、SQL Server等传统关系型数据库,也融合了内存缓存、NoSQL、HDFS等新兴大数据技术,是一款非常优秀的数据库中间件。
  在如今的大数据时代,分布式架构已经成为企业级数据应用的标配,传统的关系型数据库产品已经面临一个真正的拐点:一方面,关系型数据库自身难以实现分布式,这大大限制了其数据存储能力及整体的性能表现;另一方面,商业化的传统数据库产品的成本和性价比在分布式架构崛起的状况下毫无优势可言。因此,无论是从底层全新实现分布式计算存储的NoSQL、Hadoop,还是使用Mycat这样的分库分表工具,对关系型数据库大刀阔斧地进行"改装"都是大势所趋。
  作为一名专注于数据库领域多年的从业者,我认为Mycat从中间件工具的角度成功地弥补了MySQL的诸多局限。
  o分布式存储:通过Mycat,MySQL可以实现集群化与分布式管理,使数据库容量与处理能力大大改善。
  o性能加速:通过分布式集群及Mycat Booster对MySQL数据库在集群环境下的加速,Mycat大大提升了MySQL集群的性能。
  o异构数据互联互通:除了MySQL,Mycat同时支持如SequoiaDB、MongoDB这样的NoSQL数据库及HDFS分布式文件系统,实现了对非结构化数据、半结构化数据及结构化数据的存储及互联。
  o多样化的数据库工具:Mycat为用户提供了丰富的管理工具,可以帮助用户更好地管理数据库系统。
  本书非常适合作为Mycat的入门及进阶参考读物,它非常全面地阐述了分库分表的基本原理、实现机制及实践经验。本书的作者有着丰富的行业经验及技术底蕴,能够把业界非常前沿的知识用深入浅出的语言传授给各位读者。
  最后,作为SequoiaDB的联合创始人,我十分钦佩Mycat团队的技术及勇气。虽然基础软件的开发难度很大,但是我们都敢于去挑战一个个技术难点,并填补国内基础软件产品的巨大空白。因此,我在这里衷心地祝愿Mycat前程似锦!
  巨杉数据库联合创始人王涛 

 

《CTO说》

基本信息

·        作者: CTO训练营   

·        出版社:人民邮电出版社

·        ISBN9787115452801

·        上架时间:2017-4-13

·        出版日期:2017 年3月

·        开本:16

·        版次:1-1

·        所属分类:

计算机 电子商务与计算机文化 综合

编辑推荐

CTO是企业内负责技术的zui高负责人,因此,对企业来说,尤其是IT 企业和互联网企业,CTO 扮演着至关重要的角色。
CTO 训练营是面向中高端技术管理者的一个学习与社交的平台。本书是从CTO 训练营课程分享中精心挑选、整理提炼出的智慧结晶。
本书包含了30 多位CTO 导师的独到观点和深邃思想,涉及从CTO 格局、创业平台的CTO、CTO 的管理之道、CTO 看技术架构、CTO 与CXO 的关系、CTO 向CEO 的转型6 个方面主题,基本涵盖了一名技术人成长为CTO 需要关注的所有热门话题。
通过本书,您将能够分享以下企业家和CTO 的洞察和思考:
谭晓生 360 副总裁
于斌平 国美在线CTO
韩 军 欧电云创始人
杨永强 乐视网CTO
熊长青 九枝兰创始人
李钢江 跟谁学CTO
左文建 360 企业安全- 大数据分析业务总裁
李申申 知乎CTO
傅 强 九枝兰合伙人
段 念 花虾金融CEO
池建强 极客邦科技总裁
本书适合广大程序员、技术经理、技术部门负责人,或者有志成为CTO 的人阅读学习,对于IT 企业的CTO、CEO 等高端管理者,也有很好的参考价值。

内容简介

    书籍
    计算机书籍
CTO
训练营是面向IT技术人员的一个中高端技术管理者学习与社交的平台。本书是从CTO训练营课程分享中精心挑选、整理提炼出的智慧结晶。
本书包含30多位CTO导师的独到观点和深邃思想,他们是乐视网CTO杨永强、360副总裁谭晓生、跟谁学CTO李钢江、花虾金融CEO段念、极客邦科技总裁池建强等。全书从CTO格局、创业平台的CTO、CTO的管理之道、CTO看技术架构、CTO与CXO的关系、CTO向CEO的转型6个方面进行归纳和划分,涵盖了一名技术人成长为CTO需要关注的所有热门话题。
本书适合任何程序员、技术经理、技术部门负责人,或者有志成为CTO的人阅读学习,对于IT企业的CTO、CEO等高端管理者,也有很好的参考价值。 

作译者

CTO 训练营是面向中高端技术管理者学习与
社交的平台,汇集业界知名技术高管、投资人
资源,以“打造技术经理的MBA”为核心,
帮助中国颇具潜力的技术管理者,成长为未来
技术领域的领袖及榜样。 

目录

第一篇 CTO的大格局 / 1
CTO道与术的修炼:带队伍、定战略、拿结果。
360副总裁谭晓生:The Tough Job——CTO / 2
乐视网CTO杨永强:站在未来思考未来 / 11
国美在线CTO于斌平:CTO的七种武器 / 23
欧电云创始人韩军:完美CTO的能力模型 / 31
途牛旅游前CTO汤峥嵘:从工程师到管理者的历程分享 / 40
第二篇 创业平台CTO的面面观 / 47
你以为你需要的是一个程序员,其实你需要的是一个特种部队。
七乐康技术副总裁曲毅:创业公司的事与人 / 48
360企业安全——大数据分析业务总裁左文建:创业公司团队组建 / 58
原唱吧高级技术总监黄全能:如何保持一支小而精的初创团队 / 65
豌豆公主技术合伙人陈超:创业型公司CTO初体验 / 72
雪球CTO王栋:技术团队的升级之路 / 78
第三篇 CTO的管理之道 / 85
CTO管理的那些事儿:招聘面试、绩效考核、文化打造、团队激励。
跟谁学CTO李钢江:A+技术人才招聘观 / 86
知乎CTO李申申:知乎技术团队文化 / 96
国美在线CTO于斌平:技术团队如何做绩效管理 / 106
九枝兰合伙人傅强:避开研发管理中的那些坑 / 118

↓展开全部内容

媒体评论

  在这个技术当道的时代,如何把握技术和商业航船,技术领袖们有着怎样的眼界和见解,他们和普通技术人员又有哪些异同,《CTO 说》这本书多少道出了其中的玄机和奥秘。对于想成为CTO 的人,或者受CTO 领导的人,甚至领导CTO 的人,我推荐读读此书,开卷有益。—— 51CTO 创始人 熊平 
  微软加速器鼓励创新,也希望看到新时代的CTO 能够具有创新精神。很高兴看到《CTO 说》这本能够让技术管理者改变思维的图书出版。本书能够帮助技术管理者从单一的技术思维中跳脱出来,真正成为这个时代所需要的全方位的CTO。—— 微软加速器 北京CTO 王雷 
  技术管理者常常会陷入技术单一维度思考中,而《CTO 说》从技术、管理、业务、行业、战略等不同维度来诠释技术管理者应该具备的一些能力,帮你理清思路,转变思考方式,从而发现问题的本质。——饿了么CTO 张雪峰 
  创新时代中,对CTO 的能力要求不再仅局限于技术,而更应该建立在对商业模式和业务模式的理解之上。投资人、CEO 对CTO 的看法,能够给更多的技术从业者在视野和高度上带来启发,令他们开阔思维方式。我推荐CTO及CTO 的合作伙伴读一读《CTO说》,这会让你重新定位“CTO”。—— 华映资本中国投资合伙人 章高男 
  

一、大型网站架构系列

 

第一本:《大型网站技术架构:核心原理与案例分析》--李智慧

基本信息

·        作者: 李智慧   

·        出版社:电子工业出版社

·        ISBN9787121212000

·        上架时间:2013-9-9

·        出版日期:2013 年9月

·        开本:16

·        页码:240

·        版次:1-1

·        所属分类:

计算机 计算机网络 Web Server 综合

编辑推荐

本书作者是www.alibaba.com网站构建的亲历者,拥有核心技术部门的一线工作经验,直接体验了大型网站构建与发展过程中的种种生与死,蜕与变,见证了一个网站架构从幼稚走向成熟稳定的历程。
没有晦涩难懂的术语,没有诘屈聱牙的文句,没有故弄玄虚的观点……
明明白白的语句,清清楚楚的文法,干净利落的建议——让读者直接体会网站架构的紧要处,不容马虎的关键点——这恰好是一个优秀的网站架构所必备的要素。
如果说“水不在深,有龙则灵”,那么对于想了解网站架构的读者而言,这本书恰好是“书不在多,有它则行!”
还犹豫什么呢?
任何建议与想法,请戳 http://weibo.com/u/2611548434 (@大型网站技术架构)

内容简介

    书籍
    计算机书籍
《大型网站技术架构:核心原理与案例分析》通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web 安全、系统发布、运维监控等在内的大型网站开发全景视图。
《大型网站技术架构:核心原理与案例分析》不仅适用于指导网站工程师、架构师进行网站技术架构设计,也可用于指导产品经理、项目经理、测试运维人员等了解网站技术架构的基础概念;还可供包括企业系统开发人员在内的各类软件开发从业人员借鉴,了解大型网站的解决方案和开发理念。

作译者

李智慧,曾在阿里巴巴担任技术专家,参与阿里巴巴基础技术平台开发和www.alibaba.com架构设计。 
目前就职英特尔亚太研发中心从事云计算与大数据方面的研发工作。 

目录

《大型网站技术架构:核心原理与案例分析》 
第1篇 概述 
1 大型网站架构演化 2 
1.1 大型网站软件系统的特点 3 
1.2 大型网站架构演化发展历程 4 
1.2.1 初始阶段的网站架构 4 
1.2.2 应用服务和数据服务分离 4 
1.2.3 使用缓存改善网站性能 5 
1.2.4 使用应用服务器集群改善网站的并发处理能力 6 
1.2.5 数据库读写分离 7 
1.2.6 使用反向代理和CDN加速网站响应 8 
1.2.7 使用分布式文件系统和分布式数据库系统 9 
1.2.8 使用NoSQL和搜索引擎 10 
1.2.9 业务拆分 11 
1.2.10 分布式服务 11 
1.3 大型网站架构演化的价值观 13 
1.3.1 大型网站架构技术的核心价值是随网站所需灵活应对 13 
1.3.2 驱动大型网站技术发展的主要力量是网站的业务发展 13 
1.4 网站架构设计误区 14 
1.4.1 一味追随大公司的解决方案 14 

1.4.2 为了技术而技术 14 
1.4.3 企图用技术解决所有问题 14 
1.5 小结 15 
2 大型网站架构模式 16 
2.1 网站架构模式 16 
2.1.1 分层 17 
2.1.2 分割 18 
2.1.3 分布式 18 
2.1.4 集群 19 
2.1.5 缓存 20 
2.1.6 异步 20 
2.1.7 冗余 21 
2.1.8 自动化 22 
2.1.9 安全 23 
2.2 架构模式在新浪微博的应用 23 
2.3 小结 25 
3 大型网站核心架构要素 26 
3.1 性能 27 
3.2 可用性 28 
3.3 伸缩性 29 
3.4 扩展性 30 
3.5 安全性 30 
3.6 小结 31 
第2篇 架构 
4 瞬时响应:网站的高性能架构 34 
4.1 网站性能测试 35 
4.1.1 不同视角下的网站性能 35 
4.1.2 性能测试指标 36 
4.1.3 性能测试方法 39 
4.1.4 性能测试报告 41 
4.1.5 性能优化策略 41 
4.2 Web前端性能优化 42 
4.2.1 浏览器访问优化 42 
4.2.2 CDN加速 43 
4.2.3 反向代理 44 
4.3 应用服务器性能优化 45 
4.3.1 分布式缓存 45 
4.3.2 异步操作 52 
4.3.3 使用集群 53 
4.3.4 代码优化 54 
4.4 存储性能优化 58 
4.4.1 机械硬盘vs. 固态硬盘 58 
4.4.2 B+树vs. LSM树 59 
4.4.3 RAID vs. HDFS 61 
4.5 小结 64 
5 万无一失:网站的高可用架构 66 
5.1 网站可用性的度量与考核 67 
5.1.1 网站可用性度量 67 
5.1.2 网站可用性考核 67 
5.2 高可用的网站架构 69 
5.3 高可用的应用 71 
5.3.1 通过负载均衡进行无状态服务的失效转移 72 
5.3.2 应用服务器集群的Session管理 73 
5.4 高可用的服务 76 
5.5 高可用的数据 78 
5.5.1 CAP原理 79 
5.5.2 数据备份 82 
5.5.3 失效转移 84 
5.6 高可用网站的软件质量保证 85 
5.6.1 网站发布 85 
5.6.2 自动化测试 86 
5.6.3 预发布验证 87 
5.6.4 代码控制 88 
5.6.5 自动化发布 90 
5.6.6 灰度发布 91 
5.7 网站运行监控 91 
5.7.1 监控数据采集 92 
5.7.2 监控管理 93 
5.8 小结 94 
6 永无止境:网站的伸缩性架构 95 
6.1 网站架构的伸缩性设计 97 
6.1.1 不同功能进行物理分离实现伸缩 97 
6.1.2 单一功能通过集群规模实现伸缩 98 
6.2 应用服务器集群的伸缩性设计 99 
6.2.1 HTTP重定向负载均衡 100 
6.2.2 DNS域名解析负载均衡 101 
6.2.3 反向代理负载均衡 102 
6.2.4 IP负载均衡 103 
6.2.5 数据链路层负载均衡 104 
6.2.6 负载均衡算法 105 
6.3 分布式缓存集群的伸缩性设计 106 
6.3.1 Memcached分布式缓存集群的访问模型 107 
6.3.2 Memcached分布式缓存集群的伸缩性挑战 107 
6.3.3 分布式缓存的一致性Hash算法 109 
6.4 数据存储服务器集群的伸缩性设计 112 
6.4.1 关系数据库集群的伸缩性设计 113 
6.4.2 NoSQL数据库的伸缩性设计 117 
6.5 小结 119 
7 随需应变:网站的可扩展架构 121 
7.1 构建可扩展的网站架构 122 
7.2 利用分布式消息队列降低系统耦合性 123 
7.2.1 事件驱动架构 123 
7.2.2 分布式消息队列 124 
7.3 利用分布式服务打造可复用的业务平台 126 
7.3.1 Web Service与企业级分布式服务 128 
7.3.2 大型网站分布式服务的需求与特点 129 
7.3.3 分布式服务框架设计 130 
7.4 可扩展的数据结构 131 
7.5 利用开放平台建设网站生态圈 132 
7.6 小结 134 
8 固若金汤:网站的安全架构 135 
8.1 道高一尺魔高一丈的网站应用攻击与防御 136 
8.1.1 XSS攻击 136 
8.1.2 注入攻击 138 
8.1.3 CSRF攻击 139 
8.1.4 其他攻击和漏洞 140 
8.1.5 Web应用防火墙 141 
8.1.6 网站安全漏洞扫描 142 
8.2 信息加密技术及密钥安全管理 142 
8.2.1 单向散列加密 143 
8.2.2 对称加密 144 
8.2.3 非对称加密 144 
8.2.4 密钥安全管理 145 
8.3 信息过滤与反垃圾 146 
8.3.1 文本匹配 147 
8.3.2 分类算法 148 
8.3.3 黑名单 149 
8.4 电子商务风险控制 150 
8.4.1 风险 151 
8.4.2 风控 151 
8.5 小结 153 
第3篇 案例 
9 淘宝网的架构演化案例分析 156 
9.1 淘宝网的业务发展历程 157 
9.2 淘宝网技术架构演化 158 
9.3 小结 162 
10 维基百科的高性能架构设计分析 163 
10.1 Wikipedia网站整体架构 163 
10.2 Wikipedia性能优化策略 165 
10.2.1 Wikipedia前端性能优化 165 
10.2.2 Wikipedia服务端性能优化 166 
10.2.3 Wikipedia后端性能优化 167 
11 海量分布式存储系统Doris的高可用架构设计分析 169 
11.1 分布式存储系统的高可用架构 170 
11.2 不同故障情况下的高可用解决方案 171 
11.2.1 分布式存储系统的故障分类 172 
11.2.2 正常情况下系统访问结构 172 
11.2.3 瞬时故障的高可用解决方案 173 
11.2.4 临时故障的高可用解决方案 174 
11.2.5 永久故障的高可用解决方案 175 
12 网购秒杀系统架构设计案例分析 176 
12.1 秒杀活动的技术挑战 177 
12.2 秒杀系统的应对策略 177 
12.3 秒杀系统架构设计 178 
12.4 小结 182 
13 大型网站典型故障案例分析 183 
13.1 写日志也会引发故障 184 
13.2 高并发访问数据库引发的故障 184 
13.3 高并发情况下锁引发的故障 185 
13.4 缓存引发的故障 185 
13.5 应用启动不同步引发的故障 186 
13.6 大文件读写独占磁盘引发的故障 186 
13.7 滥用生产环境引发的故障 187 
13.8 不规范的流程引发的故障 187 
13.9 不好的编程习惯引发的故障 188 
13.10 小结 188 
第4篇 架构师 
14 架构师领导艺术 190 
14.1 关注人而不是产品 191 
14.2 发掘人的优秀 191 
14.3 共享美好蓝图 192 
14.4 共同参与架构 193 
14.5 学会妥协 194 
14.6 成就他人 194 
15 网站架构师职场攻略 196 
15.1 发现问题,寻找突破 197 
15.2 提出问题,寻求支持 199 
15.3 解决问题,达成绩效 201 
16 漫话网站架构师 203 
16.1 按作用划分架构师 203 
16.2 按效果划分架构师 204 
16.3 按职责角色划分架构师 205 
16.4 按关注层次划分架构师 205 
16.5 按口碑划分架构师 206 
16.6 非主流方式划分架构师 207 
附录A 大型网站架构技术一览 208 
附录B Web开发技术发展历程 215 
后记 218 

↑折

序言

  推荐序一 
  传统的企业应用系统主要面对的技术挑战是处理复杂凌乱、千变万化的所谓业务逻辑,而大型网站主要面对的技术挑战是处理超大量的用户访问和海量的数据处理;前者的挑战来自功能性需求,后者的挑战来自非功能性需求;功能性需求也许还有“人月神话”聊以自慰,通过增加人手解决问题,而非功能需求大多是实实在在的技术难题,无论有多少工程师,做不到就是做不到。IT系统应用于企业管理已有超过半个世纪的历史,人们在这方面积累了大量的知识和经验(架构模式,领域分析,项目管理),而真正意义上大型网站从出现至今不过短短十多年的时间,很多技术挑战还在摸索阶段。市面上关于传统企业应用开发的书籍汗牛充栋,而真正能够深入全面地阐述大型网站技术架构的图书寥寥无几。所以很多人就很困惑:为什么很多看起来不是很复杂的网站,比如 Facebook、淘宝,都需要大量顶尖高手来开发呢? 
  值得庆幸的是,作者为我们带来了这本《大型网站技术架构:核心原理与案例分析》,比较全面地阐述了大型网站的主要技术挑战和解决方案。宏观层面上,将网站架构的演化发展、架构模式、核心要素一一道来;微观层面上,将网站架构常用的分布式缓存、负载均衡、消息队列、分布式服务、甚至网站如何发布运维都逐一进行了阐述。大型网站的技术之道尽在于此。 
  作者在阿里巴巴工作期间,一方面参与基础技术平台产品开发,一方面参与网站架构设计,这些经历使作者能够比较全面地从理论和实践两个视角去看待和描述网站架构。书中的技术内容基本都从为什么(Why)要这么做和如何去做(How)两个层面进行表述。读者可知其然并知其所以然。 
  阅读本书也许不能使你就此掌握大型网站架构设计的屠龙之术,但至少使你对网站架构的方法和思维方式能有全面了解。 
  开卷有益,应该指的就是这样的书。 
  支付宝研究员 潘磊 
  推荐序二 
  这些年互联网技术蓬勃发展,各种成熟的组件、工具、框架越来越丰富,各种理论逐渐发展成熟,各大公司公开的理论和实践资料也越来越多,在各个领域都有比较成熟的解决方案,但是研究领先互联网公司的架构,无论是Google、Facebook、Amazon还是淘宝、支付宝、腾讯、百度,都各有其独特的地方。 
  各个环节都有成熟的产品或者方案,为什么这么多互联网公司的架构还有如此明显的差异呢?是不是照着Google、Facebook、淘宝的架构做,就能做好一个“大型的互联网应用”呢? 
  正如本书中所言:“好的设计绝对不是模仿、不是生搬硬套某个模式,而是在对问题深刻理解之上的创造与创新,即使是‘微创新’,也是让人耳目一新的似曾相识。山寨与创新的最大区别不在于是否抄袭、是否模仿,而在于对问题和需求是否真正理解与把握。” 
  这些大型的互联网应用是设计出来的?还是演化出来的?在设计的过程中需要考虑哪些因素?演化过程中都会面临哪些问题,哪些挑战? 
  本书从性能、可用性、伸缩性、扩展性、安全性几个网站核心架构要素切入,全面地介绍了这些核心要素面临的问题域、理论基础及应对方案;对这几个方面进行系统地分析,结合目前成熟的解决方案,以及作者自己的工作经验,理论联系实际,踏实细致地提出合理的解决方案,非常值得我们学习和借鉴。 
  作者还通过对淘宝、Wikipedia、分布式存储系统、秒杀系统等案例的分析,仔细探讨了典型互联网架构的演进过程,剖析了分布式系统设计和实现中的挑战和解决方案,并研究了极端情况下,秒杀给网站带来的难以预计的瞬间高并发冲击的应对策略和架构设计。还通过一些实实在在发生过的故障案例分析,从另一个侧面来说明,我们在做技术架构时,需要考量的一些关键点,这些分享都是不可多得的血泪经验。 
  本书观点明确,涉及的问题域有针对性和全面性,对问题的分析过程清晰,提出的解决方案切实可行,充分结合了目前成功的互联网公司的架构经验,结合了作者丰富的工作经验,是一本值得行业内人士学习和关注的好书。 
  作者李智慧在互联网行业具有丰富的经验,在阿里巴巴工作的几年中担任架构师,参与过多个重要的项目和产品的架构设计,遇到和处理了很多复杂的问题,在这方面积累了大量的经验。本书是作者多年的架构师经历,以及时刻的思考和积累的结晶,一词一句都是经验之谈,都是智慧的闪亮。 
  感谢作者耗费精力给我们带来如此精炼而又内容丰富的一本好书。 
  支付宝资深架构师 王定乾 
  序 
  我为什么要写这本书 

↓展开全部内容

媒体评论

  这是我看过的最接地气的一本介绍互联网架构的书籍,深入阐述了大型网站所面临的各种架构问题及解决方案,内容通俗易懂,而且对架构师的领导艺术进行了介绍,很值得从事互联网的技术人员学习和参考。 
  ——IBM咨询经理 种新华 
  此书读来亲切,能用不到300页的篇幅将网站架构的过去及未来说得如此通俗易懂,与作者多年的亲身实践分不开,并由此想到一个问题:当此书人手一本的时候,阿里、腾讯、京东……的面试官们怎么办呢? 
  ——Oracle资深工程师 付银海 
  智慧同学,人如其名,在阿里巴巴,人称“教授”,可见其博学多才。《大型网站技术架构:核心原理与案例分析》一书更是其多年积淀厚积薄发之作,涵盖构建大型互联网应用所需的关键技术,兼具实用性和前瞻性,无论是高并发、高性能还是海量数据处理、Web前端架构,都有针对性的解决之道。尤其难得的是此书还对架构师的内涵及技术管理有比较深刻地阐述,实在是同类书籍中难得一见的。作为互联网应用的开发者、架构师和创业者的你,一定不要错过本书,本书足以解决你的技术之忧。 
  ——拓维信息平台研发总监 陈斌 
  教授(本书作者在阿里巴巴的昵称)曾在知名的大型互联网公司第一线浴血多年,经验不可谓不丰富,然而更难得的是他不仅博闻强记,更用行云流水的幽默文风,将现代大型互联网的内部要害一一庖解。也许各家细节略有不同,但大部分的大型互联网站基本都可以用这样的视角去解读。相信本书不仅对程序员,甚至对很多架构师也有参考价值,尤其值得关注的是教授在书中颇多技术之外的考量思索,我愿意称之为互联网基因。 
  ——堆糖网技术合伙人 曹文炯 
  有幸拜读了这本《大型网站技术架构:核心原理与案例分析》,本书从多个层面说明了如何构建一个高可用、高性能、高可扩展性的网站系统,并结合了阿里巴巴及其他互联网企业先进的架构实践经验进行案例分析,讲述非常全面且具指导意义。本书从网站的架构设计、快速开发、高效部署、业务监控、服务治理、运维管理等多个角度描述了架构设计的相关重点,涉及的核心技术包括前端优化、CDN、反向代理、缓存、消息队列、分布式存储、分布式服务、NoSQL存储、搜索、监控、安全等一系列保证大型网站安全可靠运行的关键技术点。本书还提供了网站如何从小型网站伴随用户成长,逐步扩展到大型网站的架构演进思路,是互联网架构师们不可多得的一本技术参考书。 
  ——中兴通讯总工程师 钱煜明 
  设计和规划一个网站的总体架构涉及方方面面的东西,备选的方案也很多,如何在五花八门,纷繁复杂的技术中构建最适合用户的网站架构,变成了一件极具争议和挑战性的工作。一个好的架构可以以最低的成本,在满足用户需求的同时,满足整个网站的架构灵活性;同样,一个糟糕的架构可能会让你的客户在花费了大量金钱后,得到一堆笨重、复杂且不切实际的东西,或是由于系统过于复杂,故障不断,或是由于架构不够灵活,阻碍业务的发展等等。 
  回顾网站架构的发展历程,我们可以发现任何大型网站架构的发展都非一蹴而就的,同自然界生物物竞天择的自然进化规律一样,大型网站的架构发展和演变也基本遵循着类似的规律。我们可能无法想象几年后网站架构的样子,因为在互联网行业快速变化的当下,你甚至很难准确地预测未来一年网站的产品演变方向,甚至网站流量规模。于是,产品设计师和工程师们提得最多的是迭代和演变,这在一个网站系统架构设计过程中显得尤为重要,因为我们永远无法像传统行业一样,去精确地估算,并按预先精确设计好的图纸去完成我们的产品。那是不是网站的架构设计和规划就毫无规律及章法可循了呢?答案显然不是,在互联网快速发展的今天,随着搜索引擎、电子商务、社交类等互联网产品逐步应用到每个人的身边,大型网站的架构及很多关键技术的发展,在逐步走向成熟。在构建一个大型网站过程中可能面临一些问题,人们正在尝试逐渐总结并积累出一些具有通用性的、经过验证的且成熟的局部解决方案,这也是本书将呈现给大家的内容。本书中,作者以自己多年大型互联网网站的架构经验,尝试总结当下这些互联网行业中相对成熟且经过大量案例检验的技术和方案。 
  相信通过阅读本书,您可以一窥大型网站架构的全貌。 
  ——阿里巴巴技术专家 余俊 
  循序渐进,娓娓道来,语言生动,举重若轻。 
  ——阿里云高级专家 李文兆 
  

书摘

  推荐序一
  传统的企业应用系统主要面对的技术挑战是处理复杂凌乱、千变万化的所谓业务逻辑,而大型网站主要面对的技术挑战是处理超大量的用户访问和海量的数据处理;前者的挑战来自功能性需求,后者的挑战来自非功能性需求;功能性需求也许还有“人月神话”聊以自慰,通过增加人手解决问题,而非功能需求大多是实实在在的技术难题,无论有多少工程师,做不到就是做不到。IT系统应用于企业管理已有超过半个世纪的历史,人们在这方面积累了大量的知识和经验(架构模式,领域分析,项目管理),而真正意义上大型网站从出现至今不过短短十多年的时间,很多技术挑战还在摸索阶段。市面上关于传统企业应用开发的书籍汗牛充栋,而真正能够深入全面地阐述大型网站技术架构的图书寥寥无几。所以很多人就很困惑:为什么很多看起来不是很复杂的网站,比如 Facebook、淘宝,都需要大量顶尖高手来开发呢?
  值得庆幸的是,作者为我们带来了这本《大型网站技术架构:核心原理与案例分析》,比较全面地阐述了大型网站的主要技术挑战和解决方案。宏观层面上,将网站架构的演化发展、架构模式、核心要素一一道来;微观层面上,将网站架构常用的分布式缓存、负载均衡、消息队列、分布式服务、甚至网站如何发布运维都逐一进行了阐述。大型网站的技术之道尽在于此。
  作者在阿里巴巴工作期间,一方面参与基础技术平台产品开发,一方面参与网站架构设计,这些经历使作者能够比较全面地从理论和实践两个视角去看待和描述网站架构。书中的技术内容基本都从为什么(Why)要这么做和如何去做(How)两个层面进行表述。读者可知其然并知其所以然。
  阅读本书也许不能使你就此掌握大型网站架构设计的屠龙之术,但至少使你对网站架构的方法和思维方式能有全面了解。
  开卷有益,应该指的就是这样的书。
  支付宝研究员 潘磊
  推荐序二
  这些年互联网技术蓬勃发展,各种成熟的组件、工具、框架越来越丰富,各种理论逐渐发展成熟,各大公司公开的理论和实践资料也越来越多,在各个领域都有比较成熟的解决方案,但是研究领先互联网公司的架构,无论是Google、Facebook、Amazon还是淘宝、支付宝、腾讯、百度,都各有其独特的地方。
  各个环节都有成熟的产品或者方案,为什么这么多互联网公司的架构还有如此明显的差异呢?是不是照着Google、Facebook、淘宝的架构做,就能做好一个“大型的互联网应用”呢?
  正如本书中所言:“好的设计绝对不是模仿、不是生搬硬套某个模式,而是在对问题深刻理解之上的创造与创新,即使是‘微创新’,也是让人耳目一新的似曾相识。山寨与创新的最大区别不在于是否抄袭、是否模仿,而在于对问题和需求是否真正理解与把握。”
  这些大型的互联网应用是设计出来的?还是演化出来的?在设计的过程中需要考虑哪些因素?演化过程中都会面临哪些问题,哪些挑战?
  本书从性能、可用性、伸缩性、扩展性、安全性几个网站核心架构要素切入,全面地介绍了这些核心要素面临的问题域、理论基础及应对方案;对这几个方面进行系统地分析,结合目前成熟的解决方案,以及作者自己的工作经验,理论联系实际,踏实细致地提出合理的解决方案,非常值得我们学习和借鉴。
  作者还通过对淘宝、Wikipedia、分布式存储系统、秒杀系统等案例的分析,仔细探讨了典型互联网架构的演进过程,剖析了分布式系统设计和实现中的挑战和解决方案,并研究了极端情况下,秒杀给网站带来的难以预计的瞬间高并发冲击的应对策略和架构设计。还通过一些实实在在发生过的故障案例分析,从另一个侧面来说明,我们在做技术架构时,需要考量的一些关键点,这些分享都是不可多得的血泪经验。
  本书观点明确,涉及的问题域有针对性和全面性,对问题的分析过程清晰,提出的解决方案切实可行,充分结合了目前成功的互联网公司的架构经验,结合了作者丰富的工作经验,是一本值得行业内人士学习和关注的好书。
  作者李智慧在互联网行业具有丰富的经验,在阿里巴巴工作的几年中担任架构师,参与过多个重要的项目和产品的架构设计,遇到和处理了很多复杂的问题,在这方面积累了大量的经验。本书是作者多年的架构师经历,以及时刻的思考和积累的结晶,一词一句都是经验之谈,都是智慧的闪亮。
  感谢作者耗费精力给我们带来如此精炼而又内容丰富的一本好书。
  支付宝资深架构师 王定乾
   

【插图】 1

 

第二本:《大型网站系统与Java中间件实践》

 

·        作者: 曾宪杰   

·        出版社:电子工业出版社

·        ISBN9787121227615

·        上架时间:2014-4-21

·        出版日期:2014 年4月

·        开本:16

·        页码:322

·        版次:1-1

·        所属分类:

计算机 > 计算机网络 > Web Server > 综合

编辑推荐

到底是本什么书,拥有这样一份作序推荐人列表:阿里集团章文嵩博士、新浪TimYang、去哪网吴永强、丁香园冯大辉、蘑菇街岳旭强、途牛汤峥嵘、豆瓣洪强宁、淘宝陈皓/林昊……
这本书出自淘宝技术部总监之手,他也是淘宝近10年来历次技术飞跃的参与者、贡献者和带领者,其中的经验直接来自淘宝服务框架、消息中间件及数据访问层。
《淘宝技术这十年》勾勒出淘宝Java技术变迁波澜壮阔的轮廓,本书则给出最详尽、深入、系统的解读与演示,实用到足以让任一层级的学习者如获至宝。
看过的人无不暗中叫它“那些年我们一起走过的坑”,领略超大型网站陈年积淀的宝贵经验、领先思路和具体手法,后来者就有机会弯道超车!

内容简介

    书籍
    计算机书籍
《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建 Java 中间件的相关知识;之后的几章都是根据笔者的经验来介绍支撑大型网站架构的Java 中间件系统的设计和实践。希望读者通过《大型网站系统与Java中间件实践》可以了解大型网站架构变迁过程中的较为通用的问题和解法,并了解构建支撑大型网站的 Java 中间件的实践经验。
对于有一定网站开发、设计经验,并想了解大型网站架构和支撑这种架构的系统的开发、测试等的相关工程人员,《大型网站系统与Java中间件实践》有很大的参考意义;对于没有网站开发设计经验的人员,通过《大型网站系统与Java中间件实践》也能宏观了解大型网站的架构及相关问题的解决思路和方案。 

作译者

曾宪杰,现任美丽联合集团技术副总裁,花名顶天。前淘宝技术部负责人,淘宝花名华黎,2002年毕业于浙江大学计算机系。2007年加入淘宝网平台架构团队,负责构建淘宝自主的消息中间件系统,同期主导了淘宝数据层的创建,这两个产品也是淘宝中间件中较为重要的两个。2010年下半年起开始负责整个淘宝中间件团队,帮助团队成为业内知名的Java技术团队。2012年开始从中间件走向应用系统的研发工作,2013年初负责新组建的淘宝技术部。熟悉C++和Java,在多线程、并发、网络通信及支撑大型网站的中间件领域有较多经验,对新技术有浓厚的兴趣。致力于带领团队在无线、数据、业务平台和组件化开发方面取得突破。 

目录

《型网站系统与Java中间件实践》 
第1章 分布式系统介绍 1 
1.1 初识分布式系统 1 
1.1.1 分布式系统的定义 1 
1.1.2 分布式系统的意义 3 
1.2 分布式系统的基础知识 5 
1.2.1 组成计算机的5要素 5 
1.2.2 线程与进程的执行模式 6 
1.2.3 网络通信基础知识 13 
1.2.4 如何把应用从单机扩展到分布式 18 
1.2.5 分布式系统的难点 31 
第2章 大型网站及其架构演进过程 35 
2.1 什么是大型网站 35 
2.2 大型网站的架构演进 37 
2.2.1 用JAVA技术和单机来构建的网站 37 
2.2.2 从一个单机的交易网站说起 38 
2.2.3 单机负载告警,数据库与应用分离 40 
2.2.4 应用服务器负载告警,如何让应用服务器走向集群 41 
2.2.5 数据读压力变大,读写分离吧 50 
2.2.6 弥补关系型数据库的不足,引入分布式存储系统 56 

2.2.7 读写分离后,数据库又遇到瓶颈 58 
2.2.8
数据库问题解决后,应用面对的新挑战 60 
2.2.9 初识消息中间件 63 
2.2.10 总结 64 
第3章 构建JAVA中间件 67 
3.1 JAVA中间件的定义 67 
3.2 构建JAVA中间件的基础知识 68 
3.2.1 跨平台的JAVA运行环境——JVM69 
3.2.2 垃圾回收与内存堆布局 70 
3.2.3 JAVA并发编程的类、接口和方法 72 
3.2.4 动态代理 89 
3.2.5 反射 91 
3.2.6 网络通信实现选择 93 
3.3 分布式系统中的JAVA中间件 94 
第4章 服务框架 97 
4.1 网站功能持续丰富后的困境与应对 97 
4.2 服务框架的设计与实现 100 
4.2.1 应用从集中式走向分布式所遇到的问题 100 
4.2.2 透过示例看服务框架原型 101 
4.2.3 服务调用端的设计与实现 107 
4.2.4 服务提供端的设计与实现 132 
4.2.5 服务升级 137 
4.3 实战中的优化 138 
4.4 为服务化护航的服务治理 142 
4.5 服务框架与ESB的对比 146 
4.6 总结 147 
第5章 数据访问层 149 
5.1 数据库从单机到分布式的挑战和应对 149 
5.1.1 从应用使用单机数据库开始 149 
5.1.2 数据库垂直/水平拆分的困难 150 
5.1.3 单机变为多机后,事务如何处理 152 
5.1.4 多机的SEQUENCE问题与处理165 
5.1.5 应对多机的数据查询 168 
5.2 数据访问层的设计与实现 174 
5.2.1 如何对外提供数据访问层的功能 174 
5.2.2 按照数据层流程的顺序看数据层设计 177 
5.2.3 独立部署的数据访问层实现方式 192 
5.2.4 读写分离的挑战和应对 194 
5.3 总结 200 
第6章 消息中间件 203 
6.1 消息中间件的价值 203 
6.1.1 消息中间件的定义 203 
6.1.2 透过示例看消息中间件对应用的解耦 204 
6.2 互联网时代的消息中间件 208 
6.2.1 如何解决消息发送一致性 209 
6.2.2 如何解决消息中间件与使用者的强依赖问题 218 
6.2.3 消息模型对消息接收的影响 222 
6.2.4 消息订阅者订阅消息的方式 229 
6.2.5 保证消息可靠性的做法 230 
6.2.6 订阅者视角的消息重复的产生和应对 245 
6.2.7 消息投递的其他属性支持 249 
6.2.8 保证顺序的消息队列的设计 252 
6.2.9 PUSH和PULL方式的对比 257 
第7章 软负载中心与集中配置管理 259 
7.1 初识软负载中心 259 
7.2 软负载中心的结构 261 
7.3 内容聚合功能的设计 263 
7.4 解决服务上下线的感知 267 
7.5 软负载中心的数据分发的特点和设计 269 
7.5.1 数据分发与消息订阅的区别 269 
7.5.2 提升数据分发性能需要注意的问题 271 
7.6 针对服务化的特性支持 272 
7.6.1 软负载数据分组 272 
7.6.2 提供自动感知以外的上下线开关 273 
7.6.3 维护管理路由规则 273 
7.7 从单机到集群 274 
7.7.1 数据统一管理方案 275 
7.7.2 数据对等管理方案 276 
7.8 集中配置管理中心 280 
7.8.1 客户端实现和容灾策略 282 
7.8.2 服务端实现和容灾策略 284 
7.8.3 数据库策略 285 
第8章 构建大型网站的其他要素 287 
8.1 加速静态内容访问速度的CDN 287 
8.2 大型网站的存储支持 291 
8.2.1 分布式文件系统 292 
8.2.2 NOSQL 294 
8.2.3 缓存系统 298 
8.3 搜索系统 301 
8.3.1 爬虫问题 302 
8.3.2 倒排索引 302 
8.3.3 查询预处理 304 
8.3.4 相关度计算 304 
8.4 数据计算支撑 304 
8.5 发布系统 307 
8.6 应用监控系统 310 
8.7 依赖管理系统 312 
8.8 多机房问题分析 315 
8.9 系统容量规划 317 
8.10 内部私有云 319 
后记 321 

↑折

前言

  由于2007年一个很偶然的机会,我加入了淘宝平台架构组,职位是C++工程师。然后我就在只完成了C语言的一个小功能后,开始了Java中间件的研究生涯。从2007年下半年到2013年年初,近6年时间我都在和支撑整个网站应用的Java中间件打交道——从设计实现消息中间件到参与数据访问层设计,再到负责整个Java中间件团队,我也从一个不太懂Java的C++工程师成长为对Java中间件有一定了解和积累的工程负责人。在这个过程中,我也有幸参与了淘宝从集中式的Java应用到分布式Java应用的架构变迁。 
  本书从分布式系统说起,然后介绍大型网站的变迁中遇到的挑战和应对策略,接着讲解Java中间件的内容,重点介绍了笔者在实践中自主开发的支撑大型网站应用的几个Java中间件产品,包括对它们的思考及其设计和实现原理。最后介绍了支撑大型网站的其他基础要素,包括CDN、搜索、存储、计算平台,以及运维相关的系统等内容。 
  通过阅读本书,笔者希望读者能够尽量完整地了解大型网站的挑战和应对办法,并且能够了解淘宝在大型网站变迁过程中产生的这几个中间件的具体产品及其背后的思考和设计,并能够对除中间件之外的支撑大型网站的其他系统有一定的了解。希望初学者能够更多地关注全貌,也希望有相关经验的人士可以从本书中得到一些启发,汲取一些经验。 
  2013年5月,我的岗位有了调整,在接下来的时间中我将带领淘宝技术部承担淘宝业务应用的开发工作。这本书也是对自己淘宝中间件6年工作生涯的一份纪念。 
  最后要说的是,能够完成本书有很多的人要感谢,首先要感谢淘宝给我这么好的平台和机会,没有这个机会就不会有本书。然后也非常感谢太太王海凤对我的支持,4年前和林昊合著《OSGi原理与最佳实践》一书的时候,我们刚谈恋爱,我把很多本应陪你的时间用在了写作上;4年后,我又把本应陪你和儿子的时间用在了写作上,没有你的支持和理解,我不可能完成这次写作。最后也要感谢我的父母、岳父母、姑姑和小表妹,有你们照顾宸宸,我才能专心地写作本书。 
  曾宪杰 
  2013年11月于杭州 
  

序言

  推荐序一 
  从事互联网系统开发的人员大多希望成为资深的架构师或领域专家。但大部分人员由于自身工作环境及条件的限制,缺少大型系统实践经验,或者对核心的案例缺乏真实的了解,因此很难有机会理解分布式设计中的关键问题及应对方案。如何才能找到有效的方法并早日成为资深系统架构师呢? 
  《大型网站系统与Java中间件实践》一书介绍了大型网站分布式领域的各种问题,并且以互联网语言Java语言为主。这对于希望提升架构能力的技术人员来说,一方面有助于他们了解理论层面体系,掌握大型系统的全貌;另一方面,由于作者具有淘宝平台的丰富的架构及中间件开发经验,因而书中的要点都是大型网站在实际运行中的精华经验,不管你是使用一个已有的分布式开源解决方案,还是自行开发分布式组件,了解这些关键点都会帮助你快速深入地驾驭分布式领域的核心架构。 
  书中内容尽是实战经验,虽不布道,但所述内容却不乏硝烟——因为是作者在分布式系统的构建、拆分、服务化、部署、实战过程中所经历的教训、积累的经验。书中还有很多性能优化分析、多种方案选择时的tradeoff及实战中的方案。方案选择无所谓最佳,只有最适合,这本书不仅给出了方案选择的方法,更给出了方案选择的原因。本书除了适合希望提升架构能力的技术人员阅读,对于正在从事大数据、高并发、中间件使用或研发的一线开发人员也很有价值。 
  ——杨卫华(@TimYang) 
  新浪网技术总监 
  推荐序二 
  看了华黎寄给我的样章有很深的感触,时间仿佛又回到两年多前,当时“去哪儿”网的业务飞速发展,系统遇到了各种各样的问题。 
  首先是系统无节制地变得臃肿庞大,大量的web service的调用将我们的系统变成了一个蜘蛛网,新进入的工程师需要很长时间的熟悉才能对原有系统做出修改。 
  其次系统随着业务量的不断增大变得不堪重负,开始还能通过增加硬件来扩容,后来增加硬件能够带来的效果已无济于事。 
  还有,质量越来越难以保证,测试的时间变得越来越长,无法跟上和满足业务发展和变化的需要,团队的压力也越来越大,各个团队都需要增加人员,但是生产力的提升并不明显。 
  回顾那段时间,故障频发,效率低下,团队人困马乏,成就感变得越来越低。于是我们参考了国内外经历过这个阶段的公司的做法,引入了服务化框架,将系统拆小,重视了系统层次,控制了系统之间的调用关系,也采用了可靠消息系统来应对业务系统之间的强耦合问题。经过两年的努力,现在终于看到了胜利的曙光。 
  总结下来系统发展的困难也是演进推动力,主要来自于三个方面:一是系统的负载规模,二是系统的复杂度,三是由前两个方面带来的开发团队的规模扩张。而中间件技术是解决上述三个问题的重要方法。 
  如果在两年甚至三年前华黎的这本书就已经出版,那么去哪儿网的系统发展就能少走很多弯路。过去两年中,我们为了概念和做法进行了无数次的讨论、争执、尝试、修正。因为我们当时获得经验的途径主要是通过阅读国内外各大网站的同行在各种技术会议上的演讲、PPT,或者与他们交流过程中得到各种启示,这对于一个快速成长中的系统来讲太不成体系了,无法对日常的工作进行指导。而华黎写的这本书融合了他过去在淘宝的经验,书中的做法、理念经过了淘宝系统的爆炸性增长的检验,详实地阐述了Java中间件技术在大型网站,尤其是大型交易类网站的建设和应用经验。
  书若其人,这本书很实在,用现在流行的话语来讲,就是干货多。我认识华黎有三年了,三年内见过几面,每次见面我都有很多收获。这次他把他的经验和领悟集结成书,相信对很多正在投身于互联网系统开发,特别是高负载、高复杂度的系统开发的工程师们会有很大帮助。也衷心祝福华黎在未来的日子里,儿子健康成长,家庭幸福,工作顺利。 
  ——吴永强(@吴永强去哪) 
  去哪网 CTO 
  

媒体评论

  通过这本书可以学习到大量构建大型网站系统的核心技术,以及支撑大型网站的Java中间件的必备知识。作者在超大型电子商务网站的多年实战经验使得本书的内容极具价值。如果你所在的技术团队正在因面对大型网站而一筹莫展,或 许你可以从这本书中得到启发。另外,如果想成为Java技术架构师,那么你也不应错过此书。 
  ——冯大辉 (@Fenng) 丁香园CTO 
  华黎是我的前同事兼好友,听说他要出版一本书,我就猜到是关于大型网站和中间件的,因为这是他的老本行。在互联网技术领域,理论永远过剩,而真正从零构建整个体系的机会少之又少,华黎是淘宝网规模高速增长、中间件体系快速发展的亲历者、核心工程师,实践后的理论才更精确、更务实,这是我推荐这本书的理由。 
  ——岳旭强(@岳旭强) 蘑菇街CTO 
  与宪杰认识多年,也一起在淘宝共事过不短的时间,我深知他在大型互联网系统和Java中间件领域不仅有很强的理论基础,而且有丰富的实战经验。终于看到他把多年的积淀汇集成书,由衷地为他感到高兴。拿到书稿后,我迫不及待地从头至尾拜读了一遍。这应该是国内第一本从基础知识到构建应用,从理论到实践,把Java中间件非常系统和完整地阐述清楚的书。此外,书中列举的大量实践经验与很多通用设计思路不同,甚至是相反的。这是因为当面对高并发、高访问和海量数据时,在学校中学到的知识或普通书本中看到的方法行不通。这些看似古怪或丑陋的方法,是大型互联网企业用无数血泪换来的宝贵经验。特此推荐给对构建大型互联网系统感兴趣的读者。 
  ——汤峥嵘(@汤峥嵘-还在路上) 途牛CTO 
  要用Java构建一个大流量且有着复杂处理流程的网站,中间件技术是必须要用的技术,没有中间件就无法做到水平扩展,无法做到计算或数据集群的构建,也就无法构建一个大型网站。本书通过解决实际问题一步一步地带着你细数了用 Java 构建一个大型网站的各种技术细节和注意事项,讲解深入浅出。从系统架构到实际代码,从基础理论到实际操作,看得出来作者在中间件技术方面的丰富经验。这是一本系统得可以让你少走很多弯路的实战型技术书。 
  ——陈皓( @左耳朵耗子) 阿里巴巴集团资深技术专家 
  拿到书稿,一读之下不禁击节赞叹!这本书对大型网站发展过程中会遇到的各种架构问题和解决方案的讨论和总结,正是我在过去多年的工作中经常碰到和思考的。真是心有戚戚焉!本书详细阐述了解决大型网站架构问题时通常都会采用的方案:服务框架、数据访问层、消息中间件、配置管理等,对为什么要做、如何做、如何权衡得失等进行了非常细致的介绍,是一本不可多得的好书。虽然本书的内容是基于Java的实现,但在架构层面,对使用任何语言的架构师和开发者都具有重要的参考价值。 
  ——洪强宁(@hongqn) 豆瓣网首席架构师 
  本书作者是淘宝Java应用架构从集中式到分布式的实际参与者,并带领构建淘宝中间件两年多的时间。本书详细说明了大型Java网站必备的三利器——服务框架、消息中间件和数据访问层——的具体设计和实现方法,其中很多是淘宝在架构演进过程中摸爬滚打的实战经验和血泪教训。书中的内容一方面有助于开阔视野,另一方面大量宝贵的实战经验可以给需要做类似产品的读者带来不小的帮助。 
  ——林昊 阿里巴巴集团资深技术专家 
  

书摘

  推荐序一
  从事互联网系统开发的人员大多希望成为资深的架构师或领域专家。但大部分人员由于自身工作环境及条件的限制,缺少大型系统实践经验,或者对核心的案例缺乏真实的了解,因此很难有机会理解分布式设计中的关键问题及应对方案。如何才能找到有效的方法并早日成为资深系统架构师呢?
  《大型网站系统与Java中间件实践》一书介绍了大型网站分布式领域的各种问题,并且以互联网语言Java语言为主。这对于希望提升架构能力的技术人员来说,一方面有助于他们了解理论层面体系,掌握大型系统的全貌;另一方面,由于作者具有某宝平台的丰富的架构及中间件开发经验,因而书中的要点都是大型网站在实际运行中的精华经验,不管你是使用一个已有的分布式开源解决方案,还是自行开发分布式组件,了解这些关键点都会帮助你快速深入地驾驭分布式领域的核心架构。
  书中内容尽是实战经验,虽不布道,但所述内容却不乏硝烟——因为是作者在分布式系统的构建、拆分、服务化、部署、实战过程中所经历的教训、积累的经验。书中还有很多性能优化分析、多种方案选择时的tradeoff及实战中的方案。方案选择无所谓最佳,只有最适合,这本书不仅给出了方案选择的方法,更给出了方案选择的原因。本书除了适合希望提升架构能力的技术人员阅读,对于正在从事大数据、高并发、中间件使用或研发的一线开发人员也很有价值。 
  ——杨卫华(@TimYang)
  新浪网技术总监
  推荐序二
  看了华黎寄给我的样章有很深的感触,时间仿佛又回到两年多前,当时“去哪儿”网的业务飞速发展,系统遇到了各种各样的问题。
  首先是系统无节制地变得臃肿庞大,大量的web service的调用将我们的系统变成了一个蜘蛛网,新进入的工程师需要很长时间的熟悉才能对原有系统做出修改。
  其次系统随着业务量的不断增大变得不堪重负,开始还能通过增加硬件来扩容,后来增加硬件能够带来的效果已无济于事。
  还有,质量越来越难以保证,测试的时间变得越来越长,无法跟上和满足业务发展和变化的需要,团队的压力也越来越大,各个团队都需要增加人员,但是生产力的提升并不明显。
  回顾那段时间,故障频发,效率低下,团队人困马乏,成就感变得越来越低。于是我们参考了国内外经历过这个阶段的公司的做法,引入了服务化框架,将系统拆小,重视了系统层次,控制了系统之间的调用关系,也采用了可靠消息系统来应对业务系统之间的强耦合问题。经过两年的努力,现在终于看到了胜利的曙光。
  总结下来系统发展的困难也是演进推动力,主要来自于三个方面:一是系统的负载规模,二是系统的复杂度,三是由前两个方面带来的开发团队的规模扩张。而中间件技术是解决上述三个问题的重要方法。
  如果在两年甚至三年前华黎的这本书就已经出版,那么去哪儿网的系统发展就能少走很多弯路。过去两年中,我们为了概念和做法进行了无数次的讨论、争执、尝试、修正。因为我们当时获得经验的途径主要是通过阅读国内外各大网站的同行在各种技术会议上的演讲、PPT,或者与他们交流过程中得到各种启示,这对于一个快速成长中的系统来讲太不成体系了,无法对日常的工作进行指导。而华黎写的这本书融合了他过去在某宝的经验,书中的做法、理念经过了某宝系统的爆炸性增长的检验,详实地阐述了Java中间件技术在大型网站,尤其是大型交易类网站的建设和应用经验。
  书若其人,这本书很实在,用现在流行的话语来讲,就是干货多。我认识华黎有三年了,三年内见过几面,每次见面我都有很多收获。这次他把他的经验和领悟集结成书,相信对很多正在投身于互联网系统开发,特别是高负载、高复杂度的系统开发的工程师们会有很大帮助。也衷心祝福华黎在未来的日子里,儿子健康成长,家庭幸福,工作顺利。
  ——吴永强(@吴永强去哪)
  去哪网 CTO 
   

第三本:《大型分布式网站架构设计与实践》--陈康贤。

基本信息

·        作者: 陈康贤   

·        出版社:电子工业出版社

·        ISBN9787121238857

·        上架时间:2014-8-26

·        出版日期:2014 年9月

·        开本:16

·        页码:460

·        版次:1-1

·        所属分类:

计算机 计算机网络 Web Server 综合

编辑推荐

作者结合自己在阿里巴巴及淘宝网的实际工作经历展开论述。本书既可供初学者学习,帮助读者了解大型分布式网站的架构,以及解决问题的思路和方法,也可供业界同行参考,给日常工作带来启发。

内容简介

    书籍
    计算机书籍
本书主要介绍了大型分布式网站架构所涉及的一些技术细节,包括SOA架构的实现、互联网安全架构、构建分布式网站所依赖的基础设施、系统稳定性保障和海量数据分析等内容;深入地讲述了大型分布式网站架构设计的核心原理,并通过一些架构设计的典型案例,帮助读者了解大型分布式网站设计的一些常见场景及遇到的问题。 

作译者

淘宝网工程师,大学毕业后一直在阿里巴巴集团从事软件研发工作,擅长java web程序设计,长期在淘宝分布式环境下耳濡目染,目前关注于Java高性能程序设计及性能优化,iteye博客地址:http://chenkangxian.iteye.com 

目录

第1章 面向服务的体系架构(SOA) 1 
本章主要介绍和解决以下问题,这些也是全书的基础: 
HTTP协议的工作方式与HTTP网络协议栈的结构。 
如何实现基于HTTP协议和TCP协议的RPC调用,它们之间有何差别,分别适应何种场景。 
如何实现服务的动态注册和路由,以及软负载均衡的实现。 
1.1 基于TCP协议的RPC 3 
1.1.1 RPC名词解释 3 
1.1.2 对象的序列化 4 
1.1.3 基于TCP协议实现RPC 6 
1.2 基于HTTP协议的RPC 9 
1.2.1 HTTP协议栈 9 
1.2.2 HTTP请求与响应 15 
1.2.3 通过HttpClient发送HTTP请求 16 
1.2.4 使用HTTP协议的优势 17 
1.2.5 JSON和XML 18 
1.2.6 RESTful和RPC 20 
1.2.7 基于HTTP协议的RPC的实现 22 
1.3 服务的路由和负载均衡 30 
1.3.1 服务化的演变 30 
1.3.2 负载均衡算法 33 

1.3.3 动态配置规则 39 
1.3.4 ZooKeeper介绍与环境搭建 40 
1.3.5 ZooKeeper API使用简介 43 
1.3.6 zkClient的使用 47 
1.3.7 路由和负载均衡的实现 50 
1.4 HTTP服务网关 54 
第2章 分布式系统基础设施 58 
本章主要介绍和解决如下问题: 
分布式缓存memcache的使用及分布式策略,包括Hash算法的选择。 
常见的分布式系统存储解决方案,包括MySQL的分布式扩展、HBase的API及使用场景、Redis的使用等。 
如何使用分布式消息系统ActiveMQ来降低系统之间的耦合度,以及进行应用间的通信。 
垂直化的搜索引擎在分布式系统中的使用,包括搜索引擎的基本原理、Lucene详细的使用介绍,以及基于Lucene的开源搜索引擎工具Solr的使用。 
2.1 分布式缓存 60 
2.1.1 memcache简介及安装 60 
2.1.2 memcache API与分布式 64 
2.1.3 分布式session 69 
2.2 持久化存储 71 
2.2.1 MySQL扩展 72 
2.2.2 HBase 80 
2.2.3 Redis 91 
2.3 消息系统 95 
2.3.1 ActiveMQ & JMS 96 
2.4 垂直化搜索引擎 104 
2.4.1 Lucene简介 105 
2.4.2 Lucene的使用 108 
2.4.3 Solr 119 
2.5 其他基础设施 125 
第3章 互联网安全架构 126 
本章主要介绍和解决如下问题: 
常见的Web攻击手段和防御方法,如XSS、CRSF、SQL注入等。 
常见的一些安全算法,如数字摘要、对称加密、非对称加密、数字签名、数字证书等。 

如何采用摘要认证方式防止信息篡改、通过数字签名验证通信双方的合法性,以及通过HTTPS协议保障通信过程中数据不被第三方监听和截获。 
在开放平台体系下,OAuth协议如何保障ISV对数据的访问是经过授权的合法行为。 
3.1 常见的Web攻击手段 128 
3.1.1 XSS攻击 128 
3.1.2 CRSF攻击 130 
3.1.3 SQL注入攻击 133 
3.1.4 文件上传漏洞 139 
3.1.5 DDoS攻击 146 
3.1.6 其他攻击手段 149 
3.2 常用的安全算法 149 
3.2.1 数字摘要 149 
3.2.2 对称加密算法 155 
3.2.3 非对称加密算法 158 
3.2.4 数字签名 162 
3.2.5 数字证书 166 
3.3 摘要认证 185 
3.3.1 为什么需要认证 185 
3.3.2 摘要认证的原理 187 
3.3.3 摘要认证的实现 188 
3.4 签名认证 192 
3.4.1 签名认证的原理 192 
3.4.2 签名认证的实现 193 
3.5 HTTPS协议 200 
3.5.1 HTTPS协议原理 200 
3.5.2 SSL/TLS 201 
3.5.3 部署HTTPS Web 208 
3.6 OAuth协议 215 
3.6.1 OAuth的介绍 215 
3.6.2 OAuth授权过程 216 
第4章 系统稳定性 218 
本章主要介绍和解决如下问题: 
常用的在线日志分析命令的使用和日志分析脚本的编写,如cat、grep、wc、less等命令的使用,以及awk、shell脚本的编写。 
如何进行集群的监控,包括监控指标的定义、心跳检测、容量评估等。 
如何保障高并发系统的稳定运行,如采用流量控制、依赖管理、服务分级、开关等策略,以及介绍如何设计高并发系统。 
如何优化应用的性能,包括前端优化、Java程序优化、数据库查询优化等。 
如何进行Java应用故障的在线排查,包括一系列排查工具的使用,以及一些实际案例的介绍等。 
4.1 在线日志分析 220 
4.1.1 日志分析常用命令 220 
4.1.2 日志分析脚本 230 
4.2 集群监控 239 
4.2.1 监控指标 239 
4.2.2 心跳检测 247 
4.2.3 容量评估及应用水位 252 
4.3 流量控制 255 
4.3.1 流量控制实施 255 
4.3.2 服务稳定性 260 
4.3.3 高并发系统设计 265 
4.4 性能优化 277 
4.4.1 如何寻找性能瓶颈 277 
4.4.2 性能测试工具 285 
4.4.3 性能优化措施 292 
4.5 Java应用故障的排查 314 
4.5.1 常用的工具 314 
4.5.2 典型案例分析 331 
第5章 数据分析 337 
本章主要介绍和解决如下问题: 
分布式系统中日志收集系统的架构。 
如何通过Storm进行实时的流式数据分析。 
如何通过Hadoop进行离线数据分析,通过Hive建立数据仓库。 
如何将关系型数据库中存储的数据导入HDFS,以及从HDFS中将数据导入关系型数据库。 
如何将分析好的数据通过图形展示给用户。 
5.1 日志收集 339 
5.1.1 inotify机制 339 
5.1.2 ActiveMQ-CPP 343 
5.1.3 架构和存储 359 
5.1.4 Chukwa 362 
5.2 离线数据分析 369 
5.2.1 Hadoop项目简介 370 
5.2.2 Hadoop环境搭建 374 
5.2.3 MapReduce编写 384 
5.2.4 Hive使用 389 
5.3 流式数据分析 403 
5.3.1 Storm的介绍 404 
5.3.2 安装部署Storm 407 
5.3.3 Storm的使用 418 
5.4 数据同步 422 
5.4.1 离线数据同步 423 
5.4.2 实时数据同步 429 
5.5 数据报表 431 
5.5.1 数据报表能提供什么 431 
5.5.2 报表工具Highcharts 432 
参考文献 445 

↑折

前言

  序 
  大型分布式网站技术全貌 
  2008年,淘宝网随着访问量/数据量的巨增,以及开发人员的增长,原有的架构体系已经无法支撑,于是在那一年淘宝网将系统改造为了一个大型分布式的网站。作者目前就职于阿里集团,清晰地看到了目前淘宝这个大型分布式网站的架构体系,这个架构体系其实是非常多方面的技术的融合,要掌握好最重要的首先是看清全貌,但这也是最难的。本书向大家展示了一个大型分布式网站需要的技术的全貌。 
  翻看各大型网站的架构演变过程,会发现其中有一个显著的共同点是在某个阶段网站的架构体系改造为服务化的体系,也就是常说的SOA,SOA系统之间以服务的方式来进行交互,这样就保证了交互的标准性,对于一个庞大的多人开发的网站而言这至关重要,所以在实现SOA时重要的第一点是实现基本的服务方式的请求/响应,除了这点外,对于访问量巨大的网站而言,主要都是采用可水平伸缩的集群方式来支撑巨大的访问量,这会涉及在服务交互时需要做负载均衡的处理,较为简单的一种方式是采用硬件负载均衡设备,这种方式一方面会增加不少成本,另一方面会导致单点的巨大风险,因此目前各大网站多数采用软件负载的方式来实现服务的交互,如何去实现SOA是大型分布式网站的必备基础技能。 
  基于服务化主要是为了解决网站多元化、开发人员增加及访问量增加带来的水平伸缩问题,但数据量增长会带来更多复杂的问题,大型网站都是严重依赖缓存来提升性能的,数据量增长带来的效应就是单机会无法缓存所有的数据,需要引入分布式的缓存;数据量增长对于持久型的存储而言就更为复杂,通常会需要采用分库分表、引入NoSQL等方式来解决,对于带来的模糊查询等需求就更加复杂了,而现在的大型网站多数都有很多用户产生的数据,这也就导致了随着访问量的增长,多数情况下用户产生的数据量也会暴涨,因此数据量增长带来的这些问题也是必须学会如何去解决的。
  近几年以来网站的安全形势越来越严峻,这里有一个关键的原因是多数开发在安全方面了解的知识比较少,导致开发的系统在安全上会非常欠缺考虑,但其实对于一个网站而言,安全是基本,尤其是电子商务类网站,一旦出现安全问题,很容易丧失难得建立起来的信任,因此在开发一个大型网站的时候安全的意识非常重要。 
  网站的稳定性是衡量一个网站的重要指标,对于一个大型网站而言,网站一两个小时不可用会引起严重的公众事件,如何去保障一个庞大的网站的稳定性,涉及不少技术知识。要保障网站的稳定性,首先最重要的是监控,要清楚地知道网站目前的运行状况、有问题的点的状况等,没有监控的网站就像是一辆没有油表的车;监控主要是帮助发现问题,在出现问题后最重要的不是去找到bug并修复,而是如何有效快速地恢复,例如最典型的有效手段是优雅降级(也就是JamesHamilton那篇著名的《On Designing and Deploying Internet-ScaleServices》中的Gracefully Degrade);在快速恢复了后,则需要定位出造成问题的根本原因,这需要很多经验、扎实的基本功和对各类排查工具的掌握。 
  对于一个大型网站而言,最宝贵的部分通常是积累下来的数据,怎样用上这些数据来提升帮助业务,除了对商业玩法的掌握外,技术上的难度也非常高,大数据技术也是近几年的热门话题,离线计算、实时流式计算等,都是现在的火热话题,涉及的技术点也非常多,对于一个大型网站的技术掌控者而言,这也是需要了解的知识点。 
  对于一个大型网站的架构师而言,最重要的是掌控一个网站的技术发展过程,很好地去控制每个阶段需要做什么,并确保每个阶段需要的技术布局是完善的,避免有空白点,相信本书涵盖的方方面面的知识点会给读者提供有效的帮助。 
  林昊(http://hellojava.info) 
  阿里巴巴集团资深技术专家 
  写于阿里巴巴西溪园区 
  2014年8月 
  前言 
  在大型网站架构的演变过程中,集中式的架构设计出于对系统的可扩展性、可维护性以及成本等多方面因素的考虑,逐渐被放弃,转而采用分布式的架构设计。分布式架构的核心思想是采用大量廉价的PC Server,构建一个低成本、高可用、高可扩展、高吞吐的集群系统,以支撑海量的用户访问和数据存储,理论上具备无限的扩展能力。分布式系统的设计,是一门复杂的学问,它涉及到通信协议、远程调用,服务治理,系统安全、存储、搜索、监控、稳定性保障、性能优化、数据分析、数据挖掘等各个领域,对任何一个领域的深入挖掘,都能够编写一本篇幅不亚于本书的专门书籍。本书结合作者在阿里巴巴及淘宝网的实际工作经历,重点介绍大型分布式系统的架构设计,同时,为避免过度专注于理论而使得内容显得空洞,作者穿插介绍了很多实践的案例,尽量让每一个关键的技术点都落到实处,相信能够帮助读者更好地理解本书的内容。 
  内容大纲 
  全书共5章,章与章之间几乎是相互独立的,没有必然的前后依赖关系,因此,读者可以从任何一个感兴趣的专题开始阅读,但是,每一章的各个小节之间的内容是相互关联的,因此,最好按照原文的先后顺序阅读。 
  第1章主要介绍企业内部SOA(Service Oriented Architecture,即面向服务的体系结构)架构的实现,包括HTTP协议的工作原理,基于TCP协议和基于HTTP协议的RPC实现,如何实现服务的路由和负载均衡,HTTP服务网关的架构。 
  第2章主要介绍如何保障互联网通信的安全性,包括一些常见攻击手段的介绍;常见的安全算法,如数字摘要、对称加密、非对称加密、数字签名、数字证书的原理和使用;常用通信认证方式,包括摘要认证、签名认证,以及基于HTTPS协议的安全通信;另外还介绍了通过OAuth协议的授权过程。 
  第3章介绍一些分布式系统所依赖的基础设施,包括分布式缓存,持久化存储。持久化存储又涵盖了传统的关系型数据库MySQL,以及近年来开始流行NOSQL数据库如HBase、Redis,消息系统及垂直化搜索引擎等。 

↓展开全部内容

媒体评论

  2008年,淘宝网随着访问量/数据量的巨增,以及开发人员的增长,原有的架构体系已经无法支撑,于是在那一年淘宝网将系统改造为了一个大型分布式的网站。作者目前就职于阿里集团,清晰地看到了目前淘宝这个大型分布式网站的架构体系,这个架构体系其实是非常多方面的技术的融合,要掌握好最重要的首先是看清全貌,但这也是最难的。本书向大家展示了一个大型分布式网站需要的技术的全貌。
   ——阿里巴巴集团资深技术专家林昊(毕玄)
   笔者通过大量的实践来分析分布式网站设计过程中常见的难题并逐步给予解答,通过本书可以对分布式网站设计进行一个系统性学习,值得一阅!
   ——聚划算技术部高级技术专家刘国华(索尼)
   当下有规模的网站,都采用分布式的架构实现。那么网站如何做到分布式,以及有哪些基础的分布式系统,都是我们的架构师和开发人员想去了解的,而相关的安全问题,以及稳定性、性能、应用的线上问题定位分析等方面的问题也很重要,本书能够比较全面地给读者带来这些相关知识的一个全貌,能够让从业人员对于这些知识有一个比较全面的了解。而康贤也是一个一直奋战在一线的技术人员,亲身经历的总结会显得更加实战和珍贵。
   ——淘宝技术部总监曾宪杰(华黎) 

书摘

  版权页:
  插图:
  2.1.3 分布式session
  传统的应用服务器,如tomcat、jboss等,其自身所实现的session管理大部分都是基于单机的。对于大型分布式网站来说,支撑其业务的远远不止一台服务器,而是一个分布式集群,请求在不同服务器之间跳转。那么,如何保持服务器之间的session同步呢?传统网站一般通过将一部分数据存储在cookie中,来规避分布式环境下session的操作。这样做的弊端很多,一方面cookie的安全性一直广为诟病,另一方面cookie存储数据的大小是有限制的。随着移动互联网的发展,很多情况下还得兼顾移动端的session需求,使得采用cookie来进行session同步的方式的弊端更为凸显。分布式session正是在这种情况下应运而生的。
  对于系统可靠性要求较高的用户,可以将session持久化到DB中,这样可以保证宕机时会话不易丢失,但缺点也是显而易见的,系统的整体吞吐将受到很大的影响。另一种解决方案便是将session统一存储在缓存集群上,如memcache,这样可以保证较高的读、写性能,这一点对于并发量大的系统来说非常重要;并且从安全性考虑,session毕竟是有有效期的,使用缓存存储,也便于利用缓存的失效机制。使用缓存的缺点是,一旦缓存重启,里面保存的会话也就丢失了,需要用户重新建立会话。
  如图2—4所示,前端用户请求经过随机分发之后,可能会命中后端任意的WebServer,并且WebServer也可能会因为各种不确定的原因宕机。在这种情况下,session是很难在集群间同步的,而通过将session以sessionid作为key,保存到后端的缓存集群中,使得不管请求如何分配,即便是WebServer宕机,也不会影响其他WebServer通过sessionid从CacheServer中获得session,这样既实现了集群间的session同步,又提高了WebServer的容错性。
  这里以Tomcat作为WebServer来举例,通过一个简单的工具memcached—session—manager,实现基于memcache的分布式session。
  memcached—session—manager是一个开源的高可用的Tomcatsession共享解决方案,它支持Sticky模式和Non—Sticky模式。Sticky模式表示每次请求都会被映射到同一台后端WebServer,直到该WebServer宕机,这样session可先存放在服务器本地,等到请求处理完成再同步到后端memcache服务器;而当WebServer宕机时,请求被映射到其他WebServer,这时候,其他WebServer可以从后端memcache中恢复session。对于Non—Sticky模式来说,请求每次映射的后端WebServer是不确定的,当请求到来时,从memcache中加载session;当请求处理完成时,将session再写回到memcache。

 

 

第四本:《Web信息架构——设计大型网站》

基本信息

·        原书名:Information Architecture for the World Wide Web:DesigningLarge-scale Web sites (3rd Edition)

·        原出版社: O'Reilly Media

·        作者: (美)PeterMorville    Louis Rosenfeld   

·        译者: 陈建勋

·        出版社:电子工业出版社

·        ISBN9787121215339

·        上架时间:2013-11-7

·        出版日期:2013 年10月

·        开本:16

·        页码:508

·        版次:3-1

·        所属分类:

计算机 计算机网络 Web Server WebServer

编辑推荐

在由Wiki、Folksonomy及Mashup所构成的后Ajax化的Web 2.0世界中,精心设计的信息架构显得格外重要。你该如何向众人展现大量的信息,从而使他们能迅速找到所需的信息呢?这本经典之作将教导信息架构师、设计师及网站开发人员建立大型网站,使网站能够被管理,充满魅力,并且易于用户浏览。
新版《Web信息架构:设计大型网站》针对新技术做了全面更新——搭配新颖范例、全新场景及最佳实践信息——但是,其焦点依然放在基础原理上。
本书主题包罗万象:
信息架构概论(适用于入门者和有实践经验的专家)。
信息架构基本组件。说明这些系统之间的内在联系,针对标签法、Folksonomy、大众分类及指南式导航进行内容更新。
工具、技术及方法。带你从研究走向策略,从设计走向实施。本书讨论蓝图、框架图,以及设计阶段中图表的角色。
一系列短文。提供实践技巧和哲理性的建议,可供从事信息架构的工作者参考。
在商业环境中实践与推广信息架构,包括新近的一些如何处理企业架构的课程。
案例研究。有关两个大型而全然不同的信息架构演化案例,借此说明最佳实践。
这本极受欢迎的图书所强调的重点在于目标和手段,而非战术或技术。它不仅提供信息架构知识,而且给出一个专业框架,让你学习新手段的同时忘掉老旧的做法。

内容简介

    书籍
    计算机书籍
《Web信息架构——设计大型网站(第3版)》内容涵盖了信息架构基本原理和实践应用的方方面面。全书共7个部分,包括信息架构概述、信息架构的基本原理、信息架构的开发流程和方法论、信息架构实践、信息架构与组织、两个案例研究,以及参考资料清单。
《Web信息架构——设计大型网站(第3版)》兼具较高的理论价值和实用价值,曾被Web设计领域多本书籍重点推荐,是信息架构领域公认的经典书籍,不论新手还是专家都能各取所需。本书可供Web设计与开发者、Web架构师、网站管理者及信息管理相关人员参考。 

作译者

Lou Rosenfeld是独立的信息架构顾问,可算是这个领域的创始人之一,协助Accenture、Caterpillar、CDC、Ford、Microsoft,以及NCAA这些客户开发信息架构策略和提供内部人员专业训练。Lou于1990年与人合伙成立业内领先的公司Argus Associates,并在1993~2001年之间担任总裁。他在ASIS & T一系列成功的信息架构高峰会中扮演关键角色,而且与人合作成立该领域的专业协会:信息架构学会及Uxnet(User Experience Network)。 
Lou最近的成就包括成立Rosenfeld Media;这是一家出版社,专门出版用户体验书籍。每年他也会在6个城市开设研讨班,教授企业信息架构。 
Lou拥有密西根大学图书馆学硕士学位,目前也在该校教授研究生课程。Lou和他的妻子Mary Jean Babic、女儿Iris,以及猫Schwa住在密西根州安阿伯市。他的博客地址是www.louisrosenfeld.com。 
Peter Morville([email protected])是Semantic Studios的总裁和创立者;Semantic Studuios是一家信息架构和策略顾问公司。从1994年起,他在信息架构设计实践中就扮演重要角色。身为Argus Associates(1994~2001年)公司的首席执行长,Peter建立了世界上最值得尊敬的信息架构公司,向AT & T、Barron、Ernst& Young、HP、IBM、L.L.Bean、Microsoft、Procter& Gamble、Vanguard,以及WeatherChannel提供服务。Peter是国际级演说家,提供基本方针和研讨班来探讨用户体验、知识管理和可寻性之类的主题。他的作品出现在很多出版物上,包括《商业周刊》、《财富》、MSNBC,以及《华尔街日报》上。 
Peter获得了密西根大学图书馆学硕士学位,目前在该校教授热门的研究生课程。 

目录

《Web信息架构——设计大型网站(第3版)》 
序 I 
前言 III 
第1部分:信息架构简介 1 
第1章:信息架构的意义 3 
定义 4 
石板、卷轴、书籍,以及图书馆 6 
对别人解释IA 8 
什么不是信息架构? 9 
为什么信息架构如此重要? 11 
实践 12 
第2章:实践信息架构 16 
我们需要信息架构师吗? 17 
谁有资格从事信息架构的工作? 18 
信息架构专家 23 
在真实世界实践信息架构 24 
向前看 28 
第3章:用户需求及其行为 30 
“过于简单”的信息模型 31 
信息需求 33 

信息搜寻行为 35 
学习信息需求和信息搜寻行为 38 
第2部分:信息架构基本原理 39 
第4章:信息架构详解 41 
展现信息架构 41 
信息架构组件 49 
第5章:组织系统 53 
信息组织的挑战 54 
组织网站和企业网络 58 
组织体系 59 
组织结构 69 
大众分类 77 
建立凝聚性的组织系统 80 
第6章:标签系统 82 
为何要关心标签命名之事 83 
各式各样的标签 86 
设计标签 98 
第7章:导航系统 115 
导航系统的种类 116 
重要的灰色地带 117 
浏览器的导航特点 117 
建立情境 118 
改善灵活性 120 
嵌入式导航系统 122 
辅助性导航系统 131 
高级导航方法 139 
第8章:搜索系统 145 
网站需要搜索功能吗? 145 
搜索系统详解 149 
搜索不是一种IT玩意 150 
选择要搜索什么 151 
搜索算法 158 
查询辅助工具 161 
展示结果 163 
设计搜索界面 178 
上哪儿学更多 191 
第9章:叙词表、受控词表,以及元数据 193 
元数据 194 
受控词表 194 
技术行话 204 
叙词表实例 205 
叙词表的种类 209 
叙词表标准 213 
语义关系 215 
优选术语 217 
复合式等级体系 219 
分面分类法 221 
第3部分:流程和方法论 229 
第10章:研究 231 
流程概观 232 
研究框架 233 
情境 234 
内容 239 
用户 246 
参与者的定义和招募 251 
用户研究会议 254 
研究的保卫战 261 
第11章:策略 264 
什么是信息架构策略? 265 
策略受到质疑 266 
从研究到策略 268 
开发策略 269 
工作产品与成果 273 
策略报告 279 
项目计划 288 
演示 288 
第12章:设计和文件说明 291 
制作信息架构图的原则 292 
视觉沟通 294 
蓝图 296 
框架图 307 
内容映射和清单 313 
建立内容模型 317 
受控词表 324 
设计的共同合作 326 
整合:信息架构风格指南 329 
第4部分:信息架构实践 333 
第13章:教育 335 
教育过渡期 336 
一个充满选择的年代 336 
我需要学位吗? 337 
领域现状 338 
第14章:伦理 340 
伦理考虑 341 
塑造未来 344 
第15章:成立信息架构小组 345 
建设中的破坏性举动 346 
快速层和慢速层 347 
项目vs.计划 348 
购买或租赁 349 
我们真的需要聘请专业人员吗? 350 
梦幻小组 352 
第16章:工具和软件 354 
变动的时代 354 
分类乱象 355 
需要询问的事 361 
第5部分:信息架构与组织 363 
第17章:信息架构商机 365 
你一定要做营销 365 
世界上的两种人 366 
谈谈数字 367 
和保守派交手 371 
其他的推销技巧 373 
信息架构价值清单 376 
最后一点 377 
第18章:商业策略 378 
策略之源 379 
定义商业策略 380 
策略的适应性 382 
揭露商业策略内的分歧 384 
最佳方法 385 
很多好方法 385 
了解我们的大象 387 
竞争优势 389 
开始的结束 390 
第19章:企业信息架构 392 
当信息架构碰上企业时 392 
EIA的目标是什么? 395 
设计企业信息架构 397 
EIA策略和操作 411 
办事和付钱 416 
把握时机:阶段性展开 421 
向前走的框架 426 
第6部分:案例研究 427 
第20章:MSWeb:企业网络 429 
用户的挑战 430 
信息架构师的挑战 431 
任何分类法我们都喜欢 432 
对用户的益处 454 
下一步 458 
MSWeb的成就 459 
第21章:evolt.org:在线社区 460 
evolt.org简介 461 
构建在线社区 461 
参与经济论 462 
信息架构如何融入 471 
无信息架构 474 
附录A:重要资源 475 
索引 487 

↑折

前言

  心智没那么快忘掉先前学会的事物。 
  ——塞尼卡 
  从1994 起,我们着手打理网站,享受着参与新学科诞生的愉悦。早期的时候,我们是开拓者,是传播福音的修道士,劝说网站设计人员学习图书馆学,努力把传统原理运用到新媒体上。为了提升专业技能,我们借鉴了一些相关领域的知识,诸如人机交互,把用户研究和可用性工程整合至流程内。此外,为了宣传这些理念,我们在一些研讨会上演讲,撰写“网站架构师”专栏。在1998 年,我们出版了信息架构第一本“北极熊”图书。 
  接下来几年,信息架构逐渐成熟,成为一种职业,并成立了国际实践团体,这一切实在令人兴奋。我们从工作中和其他人那里学到很多东西,而那正是我们面临的挑战。随着知识逐渐增长,我们的专业就越来越成熟。无论是个人或群体,我们发现已很难回到从前。 
  然而,我们必须忘掉老旧的技术和方法,因为运动场上的技术无情地转换,不但答案在变,连问题也在变。在由Wiki、Folksonomy 及Mashup 所构成的后Ajax 化的Web 2.0 世界中,如何为共创之事打造结构?如何为网站应用程序的丰富接口编写文档?如何为多种平台和移动设备做设计?什么已经改变,而什么仍维持不变? 
  撰写第3 版时,正是这些问题让我们彻夜难眠。这些问题没有简单的答案。我们已竭尽所能平衡新旧。我们提到新兴技术,同时又把焦点放在基础原理上。此外,还试着强调目标和手段优先于特定战术或技术。如此一来,我们希望提供的不仅是信息架构的知识,而且是一个框架,随着时间流逝,让你在学习新技术和方法的同时忘掉老旧的做法。 
  第3 版新内容 
  What's New in the Third Edition 
  我们维持了原书的整体架构,但是,每章之中都引入了新的概念、范例,以及说明图例。我们从信息架构社区获得实质协助,他们对我们在2006 年发起的一系列问卷调查做出响应。有关组织和导航系统的章节已做了扩充,新增标签法、Folksonomy、大众分类,以及指南式导航。有关设计和说明文件的章节则引入新的小节,探讨设计阶段中图表的角色、蓝图和框架图背后的时机、原因及做法。有关教育、工具及软件的章节,则根据问卷调查结果重新修正。有关企业信息架构的章节被大量改写,以配合过去几年所学到的经验与教训。最后,我们更新了附录,加入了当前许多有用的信息架构资源。 
   
  本书的组织 
  Organization of This Book 
  这本书分为6 部分,共计21 章,从基础到高级主题,划分如下。 
  第1 部分:信息架构简介。向该领域的新手和实践专家介绍信息架构概况,由下列几章组成。 
  第1 章:信息架构的意义 
  本章定义信息架构并进行类比,讨论信息架构的相关领域,说明信息架构为什么重要。 
  第2 章:实践信息架构 
  本章讨论专业信息架构师所需具备的特征和技能,并说明信息架构应该用在何时何地。 
  第3 章:用户需求及其行为 
  本章为信息架构设计设定舞台,可以帮我们了解人们如何与信息交互。 

↓展开全部内容

媒体评论

  任何内容的展示,都离不开信息架构。这本书是信息架构的开山之作,对概念讲得透彻,对方法也有深刻的见解。特别是对数据的深入,能够帮助进阶的产品经理开阔技术视野,理解数据、词表、搜索、导航。同时,对产品设计的方法论也有深入的分析,从角色建模到需求分析,从蓝图到axure 原型,这些基本功与信息架构的衔接自然流畅。总之,这是一本好书,值得1~3 年相关产品经验的朋友细读。 
  ——韩军星 必联产品线经理 
  信息架构师Web 设计的基础,是对用户、内容与情景的分析与架构,是设计师思想和产品灵魂的体现!本书非常系统地介绍了信息架构的原理、体系、方法论,是设计师的必读之作! 
  ——傅小贞 斯凯网络UXC 负责人,《移动设计》作者 
  这是一本“严谨”又“热情”的书——“严谨”体现在作者很扎实地介绍了信息架构的基本概念、方法、案例等;而“热情”绝对是本书的bonus,信息架构作为一个新兴的、跨学科的、价值待证明的领域,作者用自己丰富的经验,用絮叨又幽默的语气,向我们述说着这个行当面临着哪些挑战,比如组织里的哪些层级的哪些人会提出怎样的挑战和疑问,作为一名靠谱的信息架构师,应该以什么样的态度去面对和回答这些问题。 
  ——@kidult00 
  该书从设计全网站的视角讲开,对于信息组件布局、导航的设计、搜索功能、搜索关键词意、标签统一等各个方面给予了交互设计师很多宝贵的建议。如果,你正在一家大型网站做相关的工作可以阅读下,对于理清思路有帮助。 
  ——@DavidWxj 
  当你在规划一个大公司的网站时,当你正在为如何开始而头痛时,这本书对你很有帮助。当你做过不少大型的网站后,你会发现这本把你项目初期做的很多工作系统化和理论化了,虽然你不知道这些东西也做出了好的网站。 
  ——FerlySky(豆瓣) 
  书的副标题是:设计大型网站。其实这本书不仅仅对于大型网站的内容架构设计有指导意义,对国内一些几百页、甚至于几十页的网站也同样适用。综看那些关系混乱的小网站,很随意的页面组合,让信息的寻找变得混乱。理清楚、做好信息架构是对一个网站SEO也好,产品设计也好,用户体验也好都有益的一件事情。 
  ——Bor(豆瓣) 
  相比于我读过的其他产品经理入门书来说,这本书是最像一门课程的教材的一本。在UCD设计方法中,信息架构居于结构层,处在网站设计流程的正中间,有着承上启下的作用。当一个网站确定了内容的范围之后,如何把将要提供给用户的信息高效地组织起来,以及如何把这些信息以最简洁直接的方式呈现给用户,就是本书主要讨论的问题。本书内容循序渐进,既介绍了信息架构领域的基本概念、基本原则,也更进一步介绍了信息架构设计的原理、技巧,更以丰富的实例让知识性的内容变得生动起来;对我这样的新手来说,书中提供的多个角度——用户需求、营销效果、公司政治等——也帮助我尽可能地避免了盲人摸象式的阅读效果。 
  一句话总结:经典就是经典。 
  ——@刀光影 
  对于新入行的交互设计师、产品经理来说,是一本值得推荐的书。对于老手来说,相信也会发现一些营养。作者具有理论基础和一线经验,书中的一些内容可以直接指导工作。对我个人来说比较有价值的部分是分面分类法和信息搜寻行为模型的介绍。一本书的价值往往不只在于它直接包含多少信息,更在于它包含搜寻更多信息的线索。 
  ——V(豆瓣) 
  书都是要结合着实践看得,尤其是好书,值得推敲的书,更不能仅仅停留在浏览和阅读的状态。这本书还是不错的,内容写的很实在,分析的很系统,举的都是最新的例子,对于实践很有指导意义,也很适合翻过头来重新阅读,一边工作一边阅读,是本不空洞的书。 
  ——木子江鸟(豆瓣) 
  

书摘

  让北极熊带你去更远的地方 
  很荣幸应邀为《Web 信息架构:设计大型网站》一书作序,该书可以说是信息架构领域的经典之作,因为封面使用北极熊图片,也被业界称为北极熊图书。我将讲述个人与北极熊图书有关的几个小故事,籍此向作者、译者、审校者、编辑和出版机构致敬!第一次看到北极熊图书是在2008 年。那时候,我我参与了中文网志年会(Cnbloggercon.org)的会议筹备,负责会议的标志和胸牌等事务用品的设计。因为这个机缘认识同在福州的程序员Yining。某次探讨会议筹备事项时,我我登门拜访了Yining,于是在他的办公室里见到了英文原版的北极熊图书。 
  在这之前,我从制作个人网站开始,以业余玩票的形式参与几个不同类型网站的规划和创建。在边学边做的过程中,我对如何组织和整理信息,并将它们发布到网站逐渐着迷起来。随后听说原来这种工作叫做信息架构。当看到这本书时,我很是惊讶。想不到早在1998年已经有这么细致详尽地探讨信息架构的专著问世。Louis Rosenfeld 和Peter Morville 的背景是图书馆学,他们在1994 年创建Argus Associates 咨询公司,为客户提供信息架构方面的咨询。当时,信息架构还属于新兴实践,人们边做边学,从图书馆学中借来许多知识用在Web 界面上。Louis Rosenfeld 和Peter Morville 根据自己的亲身实践,博采众长,在1998年出版了《Web 信息架构》一书,第一次系统地整理了这方面的知识体系。正是这次去Yining 办公室的经历,让我对奥莱理出版公司(O’Reilly)、PeterMorville 和Louis Rosenfeld 产生了深刻的印象。 
  2008 年初,我在三万英尺的高空看PeterMorville 的《随意搜寻》(Ambient Findability)。这本书实际上出版于2005 年,该书致力于探讨信息爆炸时代,信息/数据如何让自身具有“可搜寻性”,让人们更便利地接触到所想要的信息/数据。该书涉猎庞杂,试图将人们指引向一条通向理想境界的道路:想要找到事物,要反过来先让事物要具有可寻性。这样,人们才可能任何时候、任何地点,便利快捷地找到任何人和任何事物。从Peter Morville 的blog 上也了解到他在2008 年正在写作新书《搜索模式》(Search pattern)。Peter Morville 离开Argus Associates 之后,创建了Semantic 工作室,专注于信息架构、用户体验和可寻性咨询(findabilityconsultancy),将自己的知识体系沿着时代的步伐推进到一个新的层次。 
  第一次看到Peter Morville 的《Web 信息架构》的三年之后,我们目睹Peter Morville 走到了信息架构的另外一面。通常,我们会积极思考如何有什么方法去提高搜索和获取信息的方法,却很少去思考,如何让信息本身更好地让人们搜索和获取。Peter Morville 继续将可寻性(Findability)的话题推进,从用户体验的角度来研究搜索,试图去总结林林种种的搜索情境。通过他发布出来的演讲幻灯片,我们可以看到,未来的《搜索模式》这本书,将会设计到使用搜索引擎搜索整个Web,在各种类型的网站内部搜索信息,搜索界面的自动语义推荐,搜索结果的结构化、社会化以及优先级,搜索模式的未来预测等话题。有趣的是,Peter Morville 将北极熊放在演讲“搜索模式”(Search pattern)时使用的幻灯片上。或许在他心目中,北极熊已经不仅仅是《Web 信息架构》的封面图片,更代表着他对信息架构专业领域孜孜不倦的知识探索与知识分享。那一次飞行是我第一次去纽约旅行。我带着两个问题去的纽约——一方面思考最近参与创建的网站的信息架构,另一方面思考自己未来的职业方向。纽约的地铁交通系统和Peter Morville 在《随意搜寻》里所写的问路(Wayfinding)话题非常契合。在整个旅行期间,我仿佛是从信息架构的视角阅读纽约。历史悠久的地铁交通系统,井然有序的Downtown 路标系统(由著名的五角设计公司设计),华尔街在现实物理世界和虚拟信息世界的反差,如何利用纽约图书馆寻找建筑研究资料的讲座……这些林林总总的经历俨然是最好的关于信息架构的生活读物。熟悉了地铁系统,在纽约就不会迷路。如果我们的职业生涯中也有一只北极熊,想必我们也不会迷路。 
  2008 年7 月的一个周日下午,我和一位新朋友S 君在Gtalk 里聊天。S 君说:“我要做信息架构!我一直就喜欢!” 
  S 君对信息架构非常痴迷。他毕业工作一年,曾在广告公司做过客户服务,还在IT 公司做过项目管理、流程架构和软件系统整改等工作。他现在一门心思准备转行去做信息架构,如果有关于信息架构的职位,宁愿不领薪水三个月,也要去争取这个机会。他非常着急地想进入信息架构这个领域。于是,他想了一个办法,准备花一些时间研究目前广告人很喜欢的一个新网站。他觉得这个新网站内容很有趣,但是架构很差,一般人进去都不会玩。他准备用四周的时间来做这件事情。第一周自己做一个新的网站架构思路,第二周用流程图等软件制作出架构思路报告,第三周调查朋友对这个报告的反馈,第四周根据反馈修改报告。他准备拿着自己做的架构优化方案去应聘一个与信息架构有关的职位。这个网站是海内网。他准备去应聘的地方是4A 广告公司的互动创意部门。我感觉到S 君对两件事情需要更深入地了解。其一,到底信息架构本身是什么;其二,到底什么样的岗位需要信息架构。我给他两点建议。其一,或许大陆近期不会有公司招聘专职的信息架构师,但是了解信息架构的其他人才却会大受欢迎,例如:产品经理或者用户界面设计师;其二,他当前的首要任务是花四周时间找一个自己最能胜任的新岗位,而后一边工作,一边学习信息架构的知识。2001 年,我和S 君一样着迷于网站创建,那时候无从着手,于是就花三千元请一个网络公司制作自己的第一个个人网站,在当客户的同时,通过和网络公司沟通学习如何创建网站。而后,我加入了一个网站创建团队,业余爱好转变为日常工作,工作实践和知识探索融为一体。 
  相比起来,S 君其实很幸运。 
  因为《Web 信息架构》的中文简体版现在已经出版,S 君有机会直接看这本书,了解系统地了信息架构的方方面面,从理论概念到操作实务,从职业角色到学习教育,Louis Rosenfeld 和Peter Morville 毫无保留地分享他们的实践经验和知识探索心得。许多大陆的Web 开发人员和信息架构相关工作者将该书英文原版列为必读之选。现在该书中文简体版的问世,将为更多的Web 从业者提供了一个兼具效率和系统的方法,了解、熟悉、精通信息架构这一新兴学科和产业实践。 
  这不仅仅是一本普通的IT 类图书,沿着作者的足迹,从中更可以窥视整个新学科涌现、发展、转折和升华的记录。两位作者实践和探索并重的独特经历,为本书奠定了坚实的理论基础和具指导性的实务守则,他们锐利的目光,也洞察出整个学科未来的演化趋势,以及相应的职业趋势发展方向。对于大陆读者来说,不论是就职于提供专业性服务的咨询公司,或者是在网站内部团队工作,以及在企业信息管理部门工作,本书不仅提供一个关于信息架构的宽广视角,而且提供实用细致的工具。不论里里外外,专家杂家,这本书都是关于信息架构的不二之选。当然,这本书只是开始,当你读完之后,北极熊会带你去更远的地方。 
  Oliver Ding 目前服务于一家美国网络新创公司,从事社会化网络应用开发的信息架构规划、用户体验设计和产品开发管理。他热爱自由文化和创作共用,致力于探索社会化媒体在非盈利领域和社会创新方面的应用。他的个人工作室Swordi Media Lab 目前进行内容集展(Content Curation)、混合媒体(Hybrid Media)、开放品牌等多项议题的探索和实践。他目前也担任中、美两地多个公益项目和创业公司的顾问。 
  丁健(Oliver Ding, 信息架构师、品牌咨询顾问和设计师) 
  信息架构是网站品质的根源 
  还记得三年前有位做外贸的网友在我的博客中留言,抱怨中国的网站设计问题:由于我是从事国家贸易的,对很多国家网站都有接触,真的,中国人设计网站的水平非常落后,很多问题就和楼主描述一样。为什么外国人,连印度、巴基斯坦、中东、南美这些相对小的国家和地方,他们网站设计可以那么出色,特别是印度,他们的网站、广告、媒体方面比中国做得好。差距至少有15~20年,就像印度经济和中国的差距一样大。 
  这位网友认为这也许与中国人相对受限制的思维,甚至和我们的早期封闭教育有关。除作为从业者的亲身经历外,这大概是我从第三方听到最深刻的反馈。如这位网友所言,中国做互联网比欧美要晚好几年,从互联网上各种网站的创意、规划、设计等等方面都能看出来。但差距到底在哪里?从我个人经验来看,很大程度是缘于从业者对“信息架构”认知的缺乏,也就是推荐本书的原因。 
  阐述“信息架构”的理论,甚至关于本书的书评已经很多(我分别在五年前和三年前写过本书相关书评,也因此与本书中文审校范炜先生有过不少沟通)。从学界学术论文到业界民间博文,从图书馆学文献管理到互联网知识技能,从高校博士生导师到互联网公司产品经理,从美国信息科学技术学会到中国科技情报协会,从广告公司到互联网公司……我们可以从各种途径、各种渠道、各种层次接触到“信息架构”这个名词。从国家电子政务规划到公司组织架构,从城市公关交通系统到互联网网站内容索引,从超市货品摆放到互联网搜索引擎,从图书排版到网页设计,从建筑师到设计师……我们在各行各业也都能看到信息架构在其中发挥的作用。信息架构的理论实践,可大可小可深可浅。对概念降低门槛的同时,还是希望读者理性地保持敬畏之心,好比我不认为刚毕业的大学生适合去做“产品经理”,因为“信息架构”是一门任何产品经理需要积累和实践的必修课。 
  前年差不多这个时候,经朋友介绍去了趟凡客,看能否帮忙解决些问题。2010年凡客T恤卖得还不错,打算在2011年推出两三千件T恤去卖,但因为绝大多数买家都只对“首页”内容感兴趣,凡客问有没有办法更好地引导用户,我说信息架构的“内容组织优化”能解决。简单地说,就是把商店收拾收拾,一方面要在门口和窗橱放上足够吸引用户的商品,激起用户兴趣并进店选择;另一方面要在把店里商品的摆放顺序足够条理、清晰化,激起用户兴趣,这样他们更容易选择更多商品。而设计系统来满足这些逻辑机制,正是典型的、很纯粹的网站信息架构问题。 
  之后,我有机会参与了几个大型项目,不断尝试自己搭建网站的同时,再加上在项目中打交道的工程师居多,逐渐影响了我的系统工程优先的思考方式。此为“架构”层面极为重要的思想意识,一定需要有预见性。商业和现实问题是另一层面,我们考虑问题要先就事论事,混为一谈则都是车轱辘废话。经验所在,关键在于节奏把控和时间点判断(互联网产品“死于方向,毁于节奏”的说法我认可)。 
  作为身处业界实践,以及长期奋战于中国互联网的一份子,我希望能够分享给大家一条经验:既要深入地学习和研究理论,又要灵活地跳出并反思理论。在实际工作中做项目,最能深刻感受的还是“平衡”。如果要做出更理想的产品平台,需要对“信息架构”内在的知识体系反复揣摩;但如果要做出更现实的产品平台,则需要对“信息架构”外在的架构思想融会贯通。所以我想提醒读者,埋头研究“信息架构”理论的闲暇之余,不妨抬起头来多留意互联网的脚步,也许会有更多意想不到的收获。 
  当然,对于本书简体中文版的大陆读者来说,本书还有一些地方稍显不足,比如过于理论化,以及深奥、缺乏更本地化的经典案例剖析,缺少对目前最有前景的移动互联网差异的阐述,等等。瑕不掩瑜,我觉得对于广大从业者来说,多了解基础理论,以及吸收一些多元化思想没有坏处。同时也希望各位优秀的从业者多总结和分享,各家优秀的出版社多约稿和引进,共同致力于提升中国互联网的品质。 

↓展开全部内容

【插图】 1

 

第五本:《高性能网站建设》

基本信息

·        作者: (美)SteveSouders   

·        译者: 刘彦博

·        出版社:电子工业出版社

·        ISBN9787121258879

·        上架时间:2015-5-13

·        出版日期:2015 年5月

·        开本:16

·        页码:146

·        版次:1-1

·        所属分类:

计算机 软件与程序设计 网络编程 综合

编辑推荐

结合Web 2.0以来Web开发领域的最新形势和特点,介绍了网站性能问题的现状、产生的原因,以及改善或解决性能问题的原则、技术技巧和最佳实践。

内容简介

    书籍
    计算机书籍
《高性能网站建设指南:前端工程师技能精髓》结合Web 2.0以来Web开发领域的最新形势和特点,介绍了网站性能问题的现状、产生的原因,以及改善或解决性能问题的原则、技术技巧和最佳实践。重点关注网页的行为特征,阐释优化Ajax、CSS、JavaScript、Flash和图片处理等要素的技术,全面涵盖浏览器端性能问题的方方面面。在《高性能网站建设指南:前端工程师技能精髓》中,作者给出了14条具体的优化原则,每一条原则都配以范例佐证,并提供了在线支持。全书内容丰富,主要包括减少HTTP请求、Edge Computing技术、Expires Header技术、gzip组件、CSS和JavaScript最佳实践、主页内联、Domain最小化、JavaScript优化、避免重定向的技巧、删除重复JavaScript的技巧、关闭ETags的技巧、Ajax缓存技术和最小化技术等。
《高性能网站建设指南:前端工程师技能精髓》适合Web架构师、信息架构师、Web开发人员及产品经理阅读和参考。 

作译者

作者:Steve Souders(史蒂夫.桑德斯) 译者:刘彦博
刘彦博,软件开发工程师,目前任职于微软(中国)有限公司,拥有近十年的软件开发经验和近三年的“全栈工程师”经历,目前专注于Windows Azure相关应用开发。

目录


Table of contents
推荐序 xiii
前言 xv
绪言A 前端性能的重要性 1 
跟踪Web页面性能 1 
时间花在哪儿了? 3 
性能黄金法则 4 
绪言B HTTP概述 6 
压缩 7 
条件GET请求 7 
Expires 8 
Keep-Alive 8 
更多信息 9 
第1章 规则1——减少HTTP请求 10
图片地图 10
CSS Sprites 11
内联图片 13
合并脚本和样式表 15
小结 16

第2章 规则2——使用内容发布网络 18
内容发布网络 19
节省 20
第3章 规则3——添加Expires头 22
Expires头 22
Max-Age和mod_expires 23
空缓存VS完整缓存 24
不仅仅是图片 25
修订文件名 27
示例 28
第4章 规则4——压缩组件 29
压缩是如何工作的 29
压缩什么 30
节省 31
配置 31
代理缓存 33
边缘情形 34
压缩的实际效果 35
第5章 规则5——将样式表放在顶部 37
逐步呈现 37
sleep.cgi 38
白屏 39
无样式内容的闪烁 43
前端工程师应该做什么? 43
第6章 规则6——将脚本放在底部 45
脚本带来的问题 45
并行下载 46
脚本阻塞下载 48
最差情况:将脚本放在顶部 49
最佳情况:将脚本放在底部 49
正确地放置 50
第7章 规则7——避免CSS表达式 51
更新表达式 52
围绕问题展开工作 52
小结 54
第8章 规则8——使用外部JavaScript和CSS 55
内联VS外置 55
典型的对比结果 58
主页 58
两全其美 59
第9章 规则9——减少DNS查找 63
DNS缓存和TTL 63
浏览器的视角 66
减少DNS查找 68
第10章 规则10——精简JavaScript 69
精简 69
混淆 70
节省 70
示例 72
锦上添花 73
第11章 规则11——避免重定向 76
重定向的类型 76
重定向是如何损伤性能的 77
重定向之外的其他选择 79
第12章 规则12——删除重复脚本 85
重复脚本——确有其事 85
重复脚本损伤性能 86
避免重复脚本 87
第13章 规则13——配置ETag 89
ETag是什么? 89
ETag带来的问题 91
Etag——用还是不用 93
现实世界中的ETag 94
第14章 规则14——使Ajax可缓存 96
Web 2.0、DHTML和Ajax 96
异步与即时 98
优化Ajax请求 99
现实世界中的Ajax缓存 99
第15章 析构十大网站 103
页面大小、响应时间、YSlow等级 103
如何进行测试 105
Amazon 107
AOL 110
CNN 114
eBay 116
Google 120
MSN 123
MySpace 127
Wikipedia 130
Yahoo! 132
YouTube 135
索引 139 

↑折

前言

  八年级的时候,我在历史课上感受到工业革命的巨大威力。人们用以识别和突破制造业瓶颈的技术迷住了我。在我的印象里,最好的进步是可调整的踏板工具,它使得身高不同的工人都能轻松地够到传送带--一项简单的投资提高了工人的效率。
  30年过去了,我很乐于将本书中的最佳实践比作19世纪的踏板工具。这些最佳实践加强了现有流程。它们需要前期投资,但开销很小--尤其是与收益相比。而且一旦合理地运用了这些改进,它们将在整个开发过程中持续提升性能。我希望你能发现,这些用于建设高性能网站的规则能够为你和你的用户带来利益。
  本书是如何组织的
  How This Book Is Organized
  在两章的快速介绍之后,将进入本书的主要部分--14个性能规则。每个规则都进行了介绍,按照优先级顺序,每章一个。并非每个规则都要应用于每个网站,也不是每个网站都应该按同一种方式运用一个规则,但每个规则都值得考虑。本书的最后一章介绍了如何从性能的角度来分析Web页面,这一章还包含一些案例研究。
  绪言A,前端性能的重要性解释了至少有80%的时间花在了显示Web页面上,而这是在HTML文档下载完毕后发生的;这一章还描述了本书中的技术的重要性。
  绪言B,HTTP概述对HTTP进行了简要介绍,主要强调了其中与性能相关的部分。
  第1章,规则1--减少HTTP请求介绍了为什么额外的HTTP请求会对性能产生巨大的影响,并介绍了减少HTTP请求的方法,包括图片地图、CSS Sprites、使用data:模式的URL内联图片,以及合并脚本和样式表。
  第2章,规则2--使用内容发布网络强调了使用内容发布网络的优势。
  第3章,规则3--添加Expires头研究了一个简单的HTTP头是如何通过浏览器缓存来大幅改善Web页面性能的。
  第4章,规则4--压缩组件解释了压缩是如何工作的,以及如何为Web服务器启用压缩,并讨论了现今存在的一些兼容性问题。
  第5章,规则5--将样式表放在顶部展示了样式表是如何影响页面呈现的。
  第6章,规则6--将脚本放在底部展示了脚本是如何影响呈现的,以及脚本是如何下载到浏览器中的。
  第7章,规则7--避免CSS表达式讨论了CSS表达式的使用和度量其影响的重要性。
  第8章,规则8--使用外部JavaScript和CSS介绍了如何权衡是内联JavaScript和CSS还是将它们放到外部文件中。
  第9章,规则9--减少DNS查找强调了解析域名时的频繁查找所产生的影响。
  第10章,规则10--精简JavaScript量化了从JavaScript中移除空白字符所带来的收益。
  第11章,规则11--避免重定向对使用重定向提出了警示,并给出了可替代的方法。
  第12章,规则12--删除重复脚本展示了如果一个页面中包含两处相同的脚本会发生什么情况。
  第13章,规则13--配置ETag介绍了ETag是如何工作的,以及为什么对于任何拥有多于一台Web服务器的网站来说,默认的实现都是不好的。

↓展开全部内容

序言

  你很幸运能够拿到这本书。更重要的是,你的网站用户会很幸运。Steve在这本开天辟地的书中分享了14项技术,哪怕只实现了这些技术中的很少几项,你的网站也会立即变快。你的用户会感谢你。
  这是为什么呢?作为一个前端工程师,你拥有巨大的能力和责任。你是用户的最后一道防线。你做出的决定直接影响他们的体验。我相信我们大量的工作之一就是照顾用户并给他们所需要的--快速的网站。这本书是一个创建快乐用户(和老板)的工具箱。最好的结果是,一旦恰当地使用这些技术--很多情况下,这只是一次性投入--你将长期从中获得收益。
  这本书将改变你进行性能优化的方式。在Steve开始为我们Yahoo!的Platform Engineering团队研究性能之际,我还一直认为性能主要是后端问题。但他却表明前端问题可能消耗掉整体时间的80%。我想前端性能无非就是对图片进行优化和坚持使用外部CSS和JavaScript,但你手中的这本书却证明实际要做的工作远不止这些。
  我将他的成果应用于很多网站。发现大量已经很快的网站还可以再快将近一倍。他的方法论是可靠的,他的数据有效而且具有扩展性,他的成果是强有力的。
  前端工程学这门学科还很年轻,但你手中的这本书将是这项技术趋于成熟的过程中的重要一步。通过创建更好和更快(也更具享受性)的界面和体验,我们将共同提高对Web的期望。
  为更快的上网冲浪欢呼吧!
  --Nate Koechley
  高级前端工程师
  Yahoo! User Interface(YUI)团队,
  平台开发,Yahoo! Inc.
  圣弗朗西斯科 

媒体评论

  即便仅使用Steve这些规则中的20%,网站性能也会显著提升。有了这本书,你的网站真的没有任何借口拖沓缓行了。
  --Joe Hewitt,Firebug debugger开发者,Mozilla的DOM Inspector
  Steve Souders做了一件了不起的事情,他提炼出一套简明、可操作的工程步骤来改善网站性能,使这项工作不再无从下手,神秘莫测。
  --Eric Lawrence,微软公司FiddlerWeb Debugger的开发者
  作为Zillow.com网站的压力与性能测试的负责人,我一直在和团队里的开发员和性能维护人员谈,要求他们使用Steve在本书中总结的规则。大家都在问怎样才弄到这本书。我觉得对于所有的网站开发者和性能工程师而言,这本应该是必读图书。
  --Nate Moch, www.zillow.com
  对于所有网站开发者而言,本书都是一个重要的指导手册。Steve在书中的建议直接且有效,能让网站运行速度得到显著提升。
  --Tony Chor,微软公司InternetExplorer团队Group Program经理 

书摘

 

第六本:《实用负载均衡技术:网站性能优化攻略》

第七本:《高性能电子商务平台构建:架构、设计与开发》

基本信息

·        作者: ShopNC产品部   

·        丛书名: Web开发技术丛书

·        出版社:机械工业出版社

·        ISBN9787111485643

·        上架时间:2014-11-26

·        出版日期:2015 年1月

·        开本:16

·        页码:425

·        版次:1-1

·        所属分类:

计算机 软件与程序设计 网络编程 HTML

编辑推荐

中国最领先的电商系统解决方案提供商ShopNC官方核心研发团队撰写。
宏观介绍电商平台技术架构,详细讲解各种套件的模块构成、设计思路和代码实现,以及电商平台的界面设计、用户体验,为构建安全、可靠、易维护、高性能电商平台提供完整技术实现和解决方案。

内容简介

    书籍
    计算机书籍
本书分为四个部分,第一部分规划篇,依次介绍了电子商务平台构成套件、重点模块设计思路、开发周期和成本计算。第二部分实施篇,细致而全面地讲解了构成电子商务平台的各个功能模块的设计思路、技巧分享、重点代码分析、最终功能实例体验,完成了从理论到实践的完美转换。第三部分提升篇,针对商城的特性讲解了集群部署、图片存储、缓存、搜索等系统性能优化及提升的思路和技巧;以上三部分对电子商务平台从规划,再到各个重点模块构建,再到性能及用户体验的优化,全面透彻的进行了讲解。满足了从电子商务平台建立到运维的基本需求。第四部分案例篇,针对综合商城、垂直商城、行业商城等不同模式下的电子商务平台提供了详细案例解析。从理论到真实案例的实践,更加深了对本书理论的理解,使理论落地。 

目录

《高性能电子商务平台构建:架构、设计与开发》 
推荐序一 
推荐序二 
前 言 
第1章电商平台标准化套件1 
1.1商城系统2 
1.2圈子6 
1.3 CMS7 
1.4 IM8 
1.5移动端9 
1.6 本章小结9 
第2章电商平台的技术架构10 
2.1操作系统11 
2.2 应用服务器11 
2.3 负载均衡13 
2.3.1F514 
2.3.2LVS14 
2.3.3Nginx18 
2.3.4HAProxy18 
2.4缓存19 

2.4.1客户端缓存19 
2.4.2CDN加速20 
2.4.3静态文件缓存20 
2.4.4数据缓存21 
2.5数据存储21 
2.5.1关系型数据库21 
2.5.2内存型数据库22 
2.5.3分布式数据库22 
2.5.4MySQL可扩展方案23 
2.6文件存储24 
2.7消息队列25 
2.8搜索设计25 
2.9开发框架26 
2.10本章小结27 
第3章商城套件的设计与实现28 
3.1会员模块28 
3.1.1模块构成28 
3.1.2设计思路29 
3.1.3代码实现35 
3.1.4功能体验38 
3.1.5开发和使用40 
3.2商品模块43 
3.2.1 模块构成44 
3.2.2设计思路46 
3.2.3代码实现49 
3.2.4功能体验60 
3.3 促销模块63 
3.3.1模块构成64 
3.3.2设计思路69 
3.3.3 代码实现71 
3.3.4 功能体验77 
3.3.5 开发和使用80 
3.4 购物车模块82 
3.4.1 模块构成82 
3.4.2 设计思路82 
3.4.3 代码实现85 
3.4.4 功能体验96 
3.5 配送模块98 
3.5.1 模块构成99 
3.5.2 设计思路100 
3.5.3 功能实现101 
3.5.4 物流跟踪107 
3.6 订单模块107 
3.6.1 设计思路107 
3.6.2 代码实现111 
3.6.3 功能体验123 
3.7 支付接口127 
3.7.1 接入原理127 
3.7.2 设计思路128 
3.7.3代码实现129 
3.8 退单模块134 
3.8.1 模块构成134 
3.8.2 设计思路135 
3.8.3 代码实现137 
3.8.4 功能体验142 
3.8.5 开发技巧145 
3.9 结算模块146 
3.9.1 设计思路146 
3.9.2 代码实现148 
3.9.3 功能体验154 
3.10 统计模块158 
3.10.1 模块构成159 
3.10.2 设计思路162 
3.10.3 代码实现169 
3.10.4 功能体验173 
3.10.5 开发和使用180 
3.11 预存款181 
3.11.1 设计思路182 
3.11.2 代码实现183 
3.11.3 功能体验189 
3.12本章小结194 
第4章CMS套件的设计与实现195 
4.1CMS文章195 
4.1.1模块构成196 
4.1.2 设计思路196 
4.1.3代码实现197 
4.1.4功能体验200 
4.2CMS画报202 
4.2.1模块构成202 
4.2.2设计思路203 
4.2.3代码实现203 
4.2.4功能体验204 
4.3CMS专题205 
4.3.1模块构成205 
4.3.2设计思路206 
4.3.3代码实现207 
4.3.4功能体验208 
4.4CMS首页编辑209 
4.4.1 模块构成209 
4.4.2 设计思路210 
4.4.3 代码实现211 
4.4.4 功能体验212 
4.5其他功能215 
4.5.1评论215 
4.5.2心情216 
4.5.3分享217 
4.5.4 导航管理217 
4.6 本章小结218 
第5章社交平台的设计与实现219 
5.1SNS模块219 
5.1.1模块构成219 
5.1.2设计思路220 
5.1.3 代码实现221 
5.1.4 功能体验223 
5.2 圈子(讨论组)套件224 
5.2.1 圈子特点224 
5.2.2 设计思路225 
5.2.3 代码实现228 
5.2.4功能体验238 
5.3 本章小结240 
第6章IM套件的设计与实现241 
6.1 模块构成241 
6.2 设计思路241 
6.3代码实现245 
6.3.1Node服务器端245 
6.3.2PHP服务器端252 
6.3.3页面客户端254 
6.4功能体验262 
6.5 开发技巧263 
6.6 本章小结263 
第7章移动应用套件的设计与实现264 
7.1 设计思路264 
7.1.1 产品设计265 
7.1.2设计原则265 
7.2 代码实现267 
7.2.1 框架结构介绍267 
7.2.2 CrashHandler工具类268 
7.2.3DbHelper工具类274 
7.2.4HttpHelper工具类276 
7.2.5ImageHelper工具类278 
7.2.6SystemHelper工具类283 
7.3相关工具及第三方框架介绍287 
7.3.1原型设计工具介绍287 
7.3.2AndroidAnnotations介绍289 
7.3.3轻量级ORM框架ActiveAndroid介绍290 
7.4 本章小结292 
第8章O2O套件的设计与实现293 
8.1 O2O模式概述293 
8.1.1 O2O模式的产生背景293 
8.1.2 O2O模式的特点294 
8.1.3 O2O模式的优势与核心294 
8.2 产品设计思路296 
8.3 商户模块的设计与实现297 
8.3.1 模块构成297 
8.3.2 设计思路298 
8.3.3 代码实现300 
8.3.4 功能体验307 
8.4 团购模块设计311 
8.4.1 模块构成311 
8.4.2 设计思路312 
8.4.3 代码实现313 
8.4.4 功能体验319 
8.5 优惠券模块设计321 
8.5.1 模块构成321 
8.5.2 设计思路322 
8.5.3 代码实现324 
8.5.4 功能体验328 
8.6 结算模块设计331 
8.6.1 模块构成331 
8.6.2 设计思路332 
8.6.3 代码实现333 
8.6.4 功能体验335 
8.7 本章小结336 
第9章电商平台界面设计与用户体验337 
9.1 网页设计的那些事儿337 
9.1.1 视觉设计、交互设计、前端开发337 
9.1.2 为代码增加可读性注释338 
9.1.3 语义化的HMTL5标签使用340 
9.1.4 base.css会减轻你的工作负担347 
9.1.5 如何给CSS命名351 
9.1.6 应该用id还是class354 
9.1.7 能少用就少用CSS Hack356 
9.1.8 一些CSS和浏览器之间的怪异显示及对应的解决办法357 
9.2 商城首页360 
9.2.1 B2B2C商城首页设计元素360 
9.2.2 色彩风格、导航、顶部的统一化364 
9.2.3 焦点广告区域的制作366 
9.2.4 内容块的制作与可视化编辑理念370 
9.3 商品详情页面372 
9.3.1 商品页面布局方式372 
9.3.2 针对搜索引擎的页面优化制作374 
9.4 购物车页面377 
9.4.1 购物车页面设计特征377 
9.4.2 根据页面需要选择HTML标签的技巧380 
9.5 订单页面385 
9.5.1 购物详单设计理念385 
9.5.2 订单中要有哪些内容388 
9.5.3 状态步骤的设计与制作389 
9.6 本章小结392 
第10章电商平台的安装与部署393 
10.1 Web服务器部署393 
10.2 数据库部署404 
10.3 电商系统安装406 
10.3.1 基本安装406 
10.3.2 设置定时任务409 
10.3.3 开启伪静态411 
10.3.4 设置域名412 
10.4 图片存储部署413 
10.5 缓存服务器部署413 
10.6 搜索服务器部署414 
10.7 IM服务器部署416 
10.8 本章小结418 
附录A移动端接口文档419 
附录BShopNC B2B2C商城功能要点423 
ShopNC成员简介424 

↑折

前言

  为什么写这本书 
  中国互联网络信息中心(CNNIC)2014年1月发布的《中国互联网络发展状况统计报告》中的数据表明:截至2013年12月,我国网民规模达6.18亿,互联网普及率为45.8%。网络购物用户规模持续增长,商务类应用继续保持较高的发展速度。2013年,中国网络购物用户规模达3.02亿人,使用率达到48.9%,相比2012年增长6.0个百分点。从消费者行为模式来看,搜索行为直接指向购买,电子商务平台正是购买行为的发生场所,并且由于营销推广成本有限,促使中小企业更倾向于选择投入可控、性价比较高的方式。 
  以上的统计数据向我们传递了一个强烈的信号,电子商务(简称“电商”)正在改变商业的经营模式和人们的购物习惯。国内已经有越来越多的传统行业进入了电子商务领域,同时也有越来越多的网站转型为电子商务平台,随之而来的就是市场对电商的IT服务需求的迅速增长,而目前主要电商IT服务供应商服务水平、产品质量、设计理念参差不齐,有些产品更是一直处理停滞状态,显然它们无法满足迅速发展的电商行业。 
  ShopNC(www.shopnc.net)一直专注于电商整体解决方案,拥有国内领先的技术人才、开发团队及资深的行业解决方案专家,自主研发出了成熟的B2B2C模式电商平台系统、C2C模式多店商城系统、O2O本地生活类电商系统、CMS文章资讯、社交圈子社区程序、微商城分享互动程序、在线IM聊天程序以及CRM客户管理系统、移动手机平台应用和微信商城等最流行、全面、完善的电商产品综合服务体系。ShopNC不断将电商行业的新需求、新趋势融入到产品中,与时俱进,始终保持产品的先进性。 
  本书结合ShopNC商城系统,从构建大数据、高性能的电平台出发,详细介绍了电商平台核心模块的设计与实现,为大家提供安全、可靠、易维护、高性能的电商平台解决方案。 
  本书的主要内容和特色 
  全书分为四个部分。第一部分(第1章)是功能规划,依次介绍了电子商务平台标准的构成套件以及各个套件的功能组成部分。第二部分(第2章)是技术架构规划,规划实现第一部分功能需要用到的技术点及实现方法,搭建编写代码前需要的技术框架。第三部分(第3~9章)是功能实现,细致而全面地讲解了构成电子商务平台的各个功能模块的设计思路、技巧分享、重点代码分析、最终功能体验,完成了从理论到实践的完美转换。第四部分(第10章)是安装部署,将已制作完成的商城部署至服务器,并介绍了集群部署中主要节点的部署过程。以上四部分是电子商务平台从规划,再到各个重点模块构建,再到部署及性能、用户体验的优化,进行了全面透彻地讲解,满足了从电子商务平台建立到运维的基本需求。按照以上内容逐一进行商城的开发工作,可以使本来烦琐杂乱的工作变得有条不紊、充满魅力。 
  本书的目标读者 
  本书主要适合如下人群阅读: 
  电子商务平台决策者、首席技术官(CTO)和架构师。 
  电子商务平台运维工程师。 
  具有3年以上工作经验并从事电子商务平台开发的软件工程师。 
  如何阅读本书 
  本书主要介绍商城的整体设计、架构搭建、功能实现及安装部署,所以在阅读本书之前需要你对电子商务、网上商城有所了解,有过一定的项目开发经验,学习过PHP、HTML、jQuery、数据库等技术知识。如果你对缓存、负载均衡、服务器集群部署等有一定的了解将更能帮助你理解本书中所讲解的知识点。所以笔者建议按以下阅读方式进行阅读。 
  如果你是平台功能决策者或架构师,想了解一套标准电商平台套件的具体构成和实现,可以详细阅读第1章、第3~9章。第1章对商城标准套件进行了概括性的介绍,而第3~9章对第1章所提到的套件功能的模块构成、设计思路、具体实现、功能体验等有详细介绍。 
  如果你是从事技术管理工作的,想了解搭建商城的技术架构,可以首先详细阅读第2章和第13章。第2章介绍了商城开发前期需要的技术准备工作,对一套完善、高效的商城技术架构进行了细致的讲解。第10章则介绍了商城的安装部署,详细介绍了软件版本与部署参数。在阅读完第2章、第10章之后,再去了解一下第3~9章的各模块,这对以后商城的二次开发及运维工作是非常有帮助的。 
  如果你已经在运营电子商城,拥有了一定的运维经验,可以将该书作为一本参考资料,因为书中讲到的功能及技术点都是经过ShopNC商城系统的工作人员参考众多客户的实际使用经验及建议,进行优化总结后的结果,具有一定的参考价值。 
  最后,真诚地期望大家通过本书来研究和探索电商平台搭建和运维。相信你们在看过本书之后都会有所收获。期待大家能搭建出一个优秀、高效的电子商务平台。 
  致谢 
  本书由ShopNC B2B2C商城系统产品开发团队共同撰写,在撰写期间咨询和采纳了很多具有众多实战经验的ShopNC客户及其技术团队的意见与建议,力求使读者能从本书中获得很多实用的知识。此外,本书在编写过程中还参阅了大量国内外的文献和资料。 

.  首先感谢ShopNC B2B2C商城系统开发组的同仁,大家各抒己见、通力合作才使本书的编写过程如此顺利。其次,感谢给予宝贵意见和建议的ShopNC商城系统客户。还要感谢我们所处的互联网时代,使文献和资料的查阅变得如此简单。本书着眼于商城模块设计、技术实现,其中融入了很多作者的个人经验和理解,当然由于笔者水平有限,书中难免会出现一些疏漏或者与您理解上的不同,恳请大家批评指正。大家有任何问题意见或建议,可发邮件至[email protected],我们会第一时间与大家沟通、交流。 
  

↑折

序言

  推荐序一 
  互联网特别是电子商务的发展,让我们的生活有了太多的变化。每天看到快递员穿梭于大街小巷,各种包裹堆积在各个大厦的门口,公司的前台甚至都变成邮局的柜台了,我们感受到商品的流通方式发生了翻天覆地的变化。参加过太多的传统零售行业的会议,每次必有的一个话题就是如何做电商,甚至有人说“做电商找死,不做电商等死”。越来越多的企业将线下店转型为体验店,把电商当成一个新的渠道,以求建立新的商业模式;就连每个城市原本很强大的传统百货商场,都只能走向综合体,越来越少见到单纯卖货的商城了。这一切的变化都表明了电商已经改变了原有的商业模式。 
  电子商务带来的变化让很多企业不知所措,究其原因是不了解互联网,不知道这里的游戏规则,甚至在某种程度上感觉电商平台还是一个神秘的科技,不知道怎么切入电子商务。实际上,电商平台早已经是大众化的产品,从广泛的层面来说,无非是找一个第三方聚合平台去开一个店,或者是做一个自己的电商平台,两种方式各有优劣。在聚合平台上开一个店,优势是不用去管商城产品,劣势是顾客永远是别人的;自己打造一个电商平台,虽然需要投入一定的资金和精力去维护,但是逐渐建立自己的用户群体,做出自己的平台口碑,更加是一种有理想和抱负的做法。这本由ShopNC撰写的书,正是帮助企业打造一个自己的电商平台。 
  ShopNC给企业提供商城产品已经有些年头了,一路走来,风风雨雨,伴随着中国电子商务的发展,也在不断壮大。这本书以ShopNC的B2B2C产品为例,进行了全面详细的讲解,对电商平台的前期规划、中期开发和后期的运维都有涉及,相信很多电商企业的决策人员、运营人员及技术人员都能从中受益。ShopNC把自己积累的经验无偿地释放出来,对电商的发展的确是一种很大的贡献。我本人也和ShopNC的创始人“白菜”相识很久,看到他在这条道路上的坚持和执着,非常钦佩,他不是一个生意人,更像一个“程序猿”,只对给企业提供优质的产品感兴趣。因此这次出版这本书,我没有理由不力荐此书,期望更多的企业及人员能够从中受益。 
   
  耿志军 
  原腾讯微生活总经理,现主管微信支付推广与运营业务 
   
   
  推荐序二 Foreword 
  看过这本书后,给我的第一个感觉就是非常接地气,实实在在的代码在那摆着,讲得都是干货。 
  现在电子商务发展得如火如荼,甚至有点疯狂,网购成为人们生活中不可或缺的一部分,刚刚过去的双11促销各电商平台破记录的销量就是例证,在这种情况下,越来越多的企业会加速进入电子商务,开始自建电商平台或入驻成熟的平台。目前大型的综合性电商平台基本上布局已定了,大众经常会去的淘宝、天猫、京东等都属于这一类的,大平台的品类相对齐全,但做得不够细致,产品质量参差不齐,退货率也越来越高,这就还需要大量的行业性的、专业性的,甚至是地方性的电商平台涌现出来细分这些行业,这些平台建起来需要什么?对于技术支持,这本书的推出恰逢其时。
  我是技术出身,之前也看过一些WEB技术之类的书籍,但基本上讲的都是纯技术的内容,要么就是纯语言讲解,典型代表就是PHP了吧,要么就是偏向于大数据、集群、高性能等,这类书现在有很多了。电商方面的书基本上是偏实际运营操作的,跟技术无关。目前没有一本系统介绍电商平台搭建的书籍,但这本书做到了。它从一个企业的需求出发,从技术选型到代码开发再到部署都讲到了,特别是它的代码开发部分,电商平台的几块核心功能都有,并且不是流水账,从设计思路到最后实现都有,这一点是非常重要,也是非常值得肯定的。据我所知目前还没有类似的书,讲得实在,有真实的代码,而且这些代码也是经过大量正在运营的网站证明的,这不是DEMO,这的确是本书一个亮点。 
  我了解ShopNC也有很多年了,一直在专注电商开发,很佩服“白菜”的坚持,专注才会专业,因此推荐产品经理、技术人员都看一下这本书,不见得百分之百认同里面的思路、方法,但如果有一点的感触或收获,那就值得。 
   
  杨立东 
  原暴风影音CTO 

 

第八本《高性能网站构建实战》,建议运维人员可以参考。

二、分布式系统系列

第一本:《从Paxos到Zookeeper:分布式一致性原理与实践》

第二本:《ZeroC Ice权威指南》

第三本:《Kubernetes权威指南:从Docker到Kubernetes实践全接触》

第四本:《大规模分布式存储系统:原理解析与架构实战》

三、BAT技术系列

第一本:《淘宝技术这十年》

第二本:《京东技术解密》,

第三本《华为研发》

四、架构设计系列

第一本:《研磨设计模式》

第二本:《面向对象葵花宝典》,

第三本:《.NET应用架构设计:原则、模式与实践》

第四本:《Microsoft.NET企业级应用架构设计》

第五本:《架构探险:从零开始写Java Web框架》

 

你可能感兴趣的:(架构师书单)