作者:empty 页数:461 出版社:empty |
内容简介本书主要介绍了大型分布式网站架构所涉及的一些技术细节, 包括SO A架构的实现、互联网安全架凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,构、构建分布式网站所依赖的基础设施,系统稳定性保障和海量数据分析等内容:深入地讲述了大型分布式网站架构设计的核心原理,并通过一些架构设计的奥型案例,帮助读者了解大型分布式网站设计的一些常见场景及遇到的问题。作者结合自己在阿里巴巴及淘宝网的实际工作经历展开论述。本书既可供初学者学习,帮助读者了解大型分布式网站的架构,以及解决问题的思路和方法,也可供业界同行参考,给日常工作带来启发。
序大型分布式网站技术全貌2008年,淘宝网随着访问量/数据量的巨增,以及开发人员的增长,原有的架构体系已经无法支撑,于是在那一年淘宝网将系统改造为了一个大型分布式的网站。作者目前就职于阿里集团,清晰地看到了目前淘宝这个大型分布式网站的架构体系,这个架构体系其实是非常多方面的技术的融合,要掌握好最重要的首先是看清全貌,但这也是最难的。本书向大家展示了一个大型分布式网站需要的技术的全貌。翻看各大型网站的架构演变过程,会发现其中有一个显著的共同点是在某个阶段网站的架构体系改造为服务化的体系, 也就是常说的SO A, SO A系统之间以服务的方式来进行交互, 这样就保证了交互的标准性, 对于一个庞大的多人开发的网站而言这至关重要, 所以在实现SO A时重要的第一点是实现基本的服务方式的请求/响应,除了这点外,对于访问量巨大的网站而言,主要都是采用可水平伸缩的集群方式来支撑巨大的访问量,这会涉及在服务交互时需要做负载均衡的处理,较为简单的一种方式是采用硬件负载均衡设备,这种方式一方面会增加不少成本,另一方面会导致单点的巨大风险,因此目前各大网站多数采用软件负载的方式来实现服务的交互, 如何去实现SO A是大型分布式网站的必备基础技能。但数据量增长会带来更多复杂的问题,大型网站都是严重依赖缓存来提升性能的,数据量增长带来的效应就是单机会无法缓存所有的数据,需要引入分布式的缓存:数据量增长对于持久型的存储而言就更为复杂, 通常会需要采用分库分表、引入No SQL等方式来解决, 对于带来的模糊查询等需求就更加复杂了,而现在的大型网站多数都有很多用户产生的数据,这也就导致了随着访问量的增长,多数情况下用户产生的数据量也会暴涨,因此数据量增长带来的这些问题也是必须学会如何去解决的。基于服务化主要是为了解决网站多元化、开发人员增加及访问量增加带来的水平伸缩问题,大型分布式网站架构设计与实践近几年以来网站的安全形势越来越严峻,这里有一个关键的原因是多数开发在安全方面了解的知识比较少,导致开发的系统在安全上会非常欠缺考虑,但其实对于一个网站而言,安全是基本,尤其是电子商务类网站,一旦出现安全问题,很容易丧失难得建立起来的信任,因此在开发一个大型网站的时候安全的意识非常重要。网站的稳定性是衡量一个网站的重要指标,对于一个大型网站而言,网站一两个小时不可用会引起严重的公众事件,如何去保障一个庞大的网站的稳定性,涉及不少技术知识。要保障网站的稳定性,首先最重要的是监控,要清楚地知道网站目前的运行状况、有问题的点的状况等,没有监控的网站就像是一辆没有油表的车:监控主要是帮助发现问题,在出现问题后最重要的不是去找到bug并修复, 而是如何有效快速地恢复, 例如最典型的有效手段是优雅降级(也就是James Hamilton那篇著名的《On Designing and Deploying Inte me-Scale Services》中的Gracefully Degrade) ; 在快速恢复了后, 则需要定位出造成问题的根本原因, 这需要很多经验、扎实的基本功和对各类排查工具的掌握对于一个大型网站而言,最宝贵的部分通常是积累下来的数据,怎样用上这些数据来提升帮助业务,除了对商业玩法的掌握外,技术上的难度也非常高,大数据技术也是近几年的热门话题,离线计算、实时流式计算等,都是现在的火热话题,涉及的技术点也非常多,对于一个大型网站的技术掌控者而言,这也是需要了解的知识点。制每个阶段需要做什么,并确保每个阶段需要的技术布局是完善的,避免有空白点,相信本书涵盖的方方面面的知识点会给读者提供有效的帮助。对于一个大型网站的架构师而言,最重要的是掌控一个网站的技术发展过程,很好地去控
前言在大型网站架构的演变过程中,集中式的架构设计出于对系统的可扩展性、可维护性及成本等多方面因素的考虑,逐渐被放弃,转而采用分布式的架构设计。分布式架构的核心思想是采用大量廉价的PC Server, 构建一个低成本、高可用、高可扩展、高在吐的集群系统, 以支撑海量的用户访问和数据存储,理论上具备无限的扩展能力。分布式系统的设计,是一门复杂的学问,它涉及通信协议、远程调用,服务治理,系统安全、存儲、搜索、监控、稳定性保障、性能优化、数据分析、数据挖掘等各个领域,对任何一个领域的深入挖掘,都能够编写一本篇幅不亚于本书的专门书籍。本书结合作者在阿里巴巴及淘宝网的实际工作经历,重点介绍大型分布式系统的架构设计,同时,为避免过度专注于理论而使得内容显得空洞,作者穿插介绍了很多实践的案例,尽量让每一个关键的技术点都落到实处,相信能够帮助读者更好地理解本书的内容。
书中的大部分案例代码均采用Java来编写, 并且运行在Linux环境之上, 因此, 读者最好对Java环境下的编程有一定的了解, 并且熟悉Linux环境下的基本操作, 以便能够更加顺利地阅读本书,致谢候,能够给予极大的宽容、支持和理解,并对我悉心照顾且承担起了全部的家务,让我能够全身心地投入到写作之中,而无须操心一些家庭琐事,没有你的支持和鼓励,这本书是无法完成的。施展,并且,身处在一群业界的技术大牛中间,也得到了很多学习和成长的机会。另外,还要感谢我的主管飞悦对于写作开明的态度,以及一直以来的鼓励与支持,并在日常的工作中给予我的很多帮助。不荷的工作态度。感悟顺利地完成这本书,因为写的内容自己都比较熟悉,而且平时工作当中也有一些笔记积累,不是从零开始的。但当真正开始写了以后才知道,理解领悟和用文字表达出来完全是两个层面的
日常工作中一些很普遍很常见的设计思路,可能是由一次次失败和挫折得到的经验教训演变而来。很多时候我们只知道how, 而忽略了what和why, 要解释清楚what、why、how,甚至是why not, 并没有想象中的那么容易。当然, 通过写作的过程, 自己也将这些知识点从头到尾梳理了一遍,对这些知识的认识和理解也更加深入和全面。每次重新回过头来审阅书稿时,都会觉得某些知识点讲述得还不够透彻,需要进行补充,抑或是感觉对某些知识点的叙述不够清晰和有条理,还能够有更好的表述方式。但是,书不能一直写下去,在本书完稿之时,自己并没有想象中那样的兴奋或者放松,写作时的那种“战战兢兢,如履薄冰”的感觉,依然紫绕在心头,每一次落笔,都担心会不会因为自己的疏忽或者理解上的偏差,从而误导读者,由于