《大型网站技术架构》:产品经营技术必修

书目名称:大型网站技术架构——核心原理和案例剖析

作者:李智慧

出版社:电子工业出版社,2013年

重型网站技术架构:核心原理及案例剖析

完整印象

立即按照开本身是跪着读了的,读得不可开交细致,不亮堂的地方还一一查阅了有关知识点。

作为一个术小白,在自读到者开前对网站架构几乎一无所知。以前看产品经理做好职能、界面就理所当然所在,然而缺少对活特性思考的出品经理绝做不成为气象级的制品。

术的短板必须要弥补,宁可一思进,莫以一思停。

框架结构

《大型网站技术架构:核心原理及案例剖析》行文结构

同、大型网站架构演化

1.重型网站软件系统的性状

高并发,大流量

高可用:7*24钟头免停顿服务

海量数据:储存、管理大量数目,需要大量服务器。

用户分布广泛,网络环境错综复杂

安康环境恶劣

需要快速变动,发布频繁

渐进式发展:不断运营、演化

2. 特大型网站架构演化发展过程(10单进步阶段)

1)初始阶段:小型网站一律开始就需要同样台服务器(承载应用程序、数据库、文件等资源),服务器操作系统用linux,应用程序用php开发,部署在Apache(web服务器)上,数据库用MySQL,统称“LAMP”技术。

2)第二品:应用服务与数据服务分离,整个网站采取其三雅服务器:应用服务器(cpu快如强)、文件服务器(硬盘大)和数据库服务器(磁盘检索+数据缓存)。

3)第三流:使用缓存改善网站性能。内容的次八准绳——把稍片频繁造访的数目缓存在内存(地面缓存于应用服务器内+远程分布式缓存服务器外)中,减少数据库的看压力。

4)第四号:使用应用服务器集群(负载均衡调度的几近只应用服务器)改善网站的产出处理能力。

5)第五品:数据库读写分离(个别高数据库服务器主从复制),在应用服务器端应用特别的数据看摩卡。

6)第六号:使用反向代理及CDN,加速网站应。

反向代理(部署于网站的为主机房,反向代理服务器缓存)和CDN(部署在网提供商的机房,就近原则获取数据)基本原理都是缓存。

7)第七级:使用分布式文件系统和分布式数据库系统(业务分库)。

8)第八品级:使用NoSQL(非关系数据库技术)和寻找引擎(非数据库查询技术),对而伸缩的分布式特性有十分好的支持。应用服务器通过一个集合数看模块访问各种数据。

9)第九流:业务拆分(将一个网站拆分成多异的采取,之间建立跨链接)。

10)第十阶段:分布式服务(共用工作单独布置,可复用的业务连接数据库调用)。

巨型网站架构

方向:技术方案产品化,按需打,线性伸缩。

怀念知道一个工作:技术是啊工作服务之,业务架构的规划合理也应该早日技术方案的考虑。

亚、大型网站架构模式

1. 网站架构模式

1)分层(横向切分):企业应用系统的广阔模式,分为应用层(负责具体工作及视图显示)、服务层(为应用层提供服务支持)、数据层(提供数据存储访问服务)。

2)分割(纵向切分):业务分割,小粒度,独立布置。

3)分布式:分层和细分的目的是为分布式部署。

4)集群:多台服务器部署相同应用做一个集群,通过负载均衡设备并对外提供劳务。

5)缓存:缓存就是以数据存放于距计算最近底职位为加快处理速度。前提:一,数据访问热点不均衡;二,数据未会见很快过期。

CDN:内容分发网络,网络服务商。应用:视频网站和门户网站的热点内容。

反向代理:网站前端架构,缓存静态资源。

地方缓存:应用服务器本地的红数据,无需访问数据库。

分布式缓存:应用程序通过网通信访问缓存数据。

6)异步:将一个工作操作分成多个阶段,每个阶段中通过共享数据的法门异步执行进行合作。

7)冗余:当某台服务器宕机时,可以将该达到的劳动以及数据看转移至其他机器及(热备份)。

8)自动化:发布自动化,自动化代码管理,自动化测试,自动化安全检测,自动化部署等。

9)安全:身份证明等伎俩。

2. 案例:新浪微博的架模式

图形来源于:http://timyang.net/architecture/weibo

层次:3交汇,基础服务层——平台服务和应用服务层——API和初浪微博的业务层

吓之计划绝对不是好搬硬套有模式,而是在于针对题目及需要是否确实了解以及把握。

其三、大型网站基本架构要素

搭就是“最高层次的计划,难以改变之支配”。

1. 性能

用户意见的网站性能

权衡指标:响应时间、并发数(同时提交请求的用户数量)、吞吐量(单位时外网处理的呼吁数量)、系统特性计数器(服务器或操作系统性能的多少指标,包括系统负荷、对象以及线程数等)等。

性测试曲线

并发用户访问响应时间曲线

潜移默化到用户请求的有环节还好拓展性优化,如下:

1)浏览器端:

浏览器缓存、页面压缩、合理布局、减少cookie传输等招数改进性;

i. 减少http请求:合并CSS、 JavaScript、合并图片。

ii.
使用浏览器缓存:通过安装HTTP头重的Cache-Control和Expires的习性,将静态素材文件缓存在浏览器中;更新这些资源时决不批量翻新,而是逐渐更新,并中间隔时间。

iii. 启用压缩:减少传输数据量,但会针对服务器和浏览器产生一定压力;

iiii.
CSS放在页面最上面,JavaScript放在页面最下(除了当页面解析时虽用用JavaScript时);

iiiii.
减少cookie传输:静态资源利用独立域名访问,避免请求静态资源时发送cookie。

2)CDN(content distribute network)和反往代理

CDN就是以网站静态内容(图片、文字、css、script脚本、静态网页等)分发至离用户最近底网络服务商机房,使用户通过极端缺访问路径获取数据。

利用反向代理的网站架构

反向代理:缓存静态内容+动态内容。用户请求——缓存在代理服务器上——直接归。同时具备安全力量以及负载均衡功能。

3)应用服务器端:使用服务器本地缓存和分布式缓存。

i. 分布式缓存:

网站性能优化第一定律:优先考虑下缓存优化性能。

缓存的基本原理:讲数量存储于对立较高访问速度的存储介质中,以供应系统处理。

缓存的真相:内存Hash表,数据缓存以同一对准Key,
Value的样式储存在内存Hash表中。

动用缓存存取数据

�分布式缓存架构:

JBoss Cache: 需更新同步的分布式缓存——企业应用系统受广大;

Memcached: 不相通信的分布式缓存——大型网站。

JBoss Cache: 需更新同步的分布式缓存

Memcached: 不相通信的分布式缓存

ii.
异步操作:将用户要发送到信息队列等待处理,而眼前求直接归响应给用户。

运用信息队列消除并发访问高峰

iii.
使用集群:高并发看场景下,使用负载均衡技术吧一个利用构建一个是因为多大服务器组成的服务器集群,将应运而生访问请求分发及大半宝服务器上处理。

iiii. 代码优化:多线程、资源复用(单例、对象池)、数据结构、垃圾回收。

4)存储性能优化

i. 机械硬盘 vs. 固态硬盘

ii. B+树(传统关系数据库) vs. LSM树(NoSQL产品)

iii. RAID vs. HDFS

小结一句子话:性能优化最终对用户而言是同等种植主观感受,让她们以为抢是目的。

2. 可用性(Availability)

权衡指标:假设系统受到多尊服务器宕机、以及任何不可预料的问题经常,系统完全还是可用。

分段后依模块分割的网站架构模型

应用层负责具体事情逻辑处理,服务层负责提供可复用的劳务,数据层负责数据的积存和看。

提高网站可用性的伎俩,如下:

1)冗余:应用部署在多尊服务器上而提供访问,数据存储在多玉服务器上互备份。

2)应用服务器端:负载均衡,集群,切换。

在集群环境下,Session管理重要发生以下几种手段:

i.
Session复制:不适用于大型网站(占用服务器和网的大度资源,系统不堪负担);

行使Session复制实现应用服务器共享Session

ii. Session绑定:也无入特大型网站的渴求。

iii. 利用Cookie记录Session:

利用Cookie记录Session信息

iiii. Session服务器

运Session服务器共享Session

用祭该服务器的状态分离,分为无状态的应用服务器和来状态的Session服务器。

3)�高可用之服务:

i. 分级管理:

ii. 超时设置:

iii. 异步调用

iiii. 服务降级

iiiii. 幂等性规划

4)高可用的数额

意思:数据持久性、数据只是访问性、分区耐受性(难以又满足三个规格)

5)高可用网站的软件质量担保

6)网站运行监督:不同意尚未监控之网上线。

i.
监控数据搜集:用户作为日志、业务运行数据、运维工程师和开工程师使用的网性能数据;

ii. 监控管理:
系统报警、失效转移、自动优雅降级(双11,淘宝关闭确认收货和评论效应)

3. 伸缩性

所谓伸缩性就是经持续朝着聚集众多被参加服务器的手腕来化解不断升高之用户并发访问压力及连提高的数码存储需求,不待改网站的软硬件设计,仅仅通过反部署之服务器数量就得扩大或缩小网站的劳动处理能力。

当一匹牛拉不动车的时节,不要失去找寻相同峰又强壮的牛,而是用两者牛来拉车。

晋升手段如下:

1)应用服务器集群:合适的载荷均衡设备;

i. HTTP重定向负载均衡:并无多表现;

ii. DNS域名解析负载均衡:支持因地理位置的域名解析,加快用户访问速度。

DNS域名解析负载均衡原理

iii. 反朝代理负载均衡:

反向代理负载均衡原理

iiii. IP负载均衡:吞吐量为抑制负载均衡服务器网卡带富。

iiiii.
数据链路层负载均衡:在通信协议的数额链层修改mac地址进行负荷均衡——使用三角传输模式之链路层负载均衡是时使最广的一模一样种负载均衡手段。

数据链路层负载均衡原理

2)分布式缓存服务器集群:改进缓存路由算法,保证缓存数据的不过访问性;

(这有些情节十分专业,看了众任何呢从不理解,以后重新望补充)

3)关系数据库集群:路由于分区等手法;

4. 扩展性

关键关心网站的力量要求,快速响应新增业务的别。核心思想:模块化。

亚耦合的体系再度爱扩展,低耦合的模块更便于复用。

晋升手段如下:

1)事件驱动架构:利用信息队列实现;

2)分布式服务:将业务和而复用服务分离,通过分布式服务框架调用,新增的出品可经过调用可复用的服务年限自身之工作逻辑,而针对性现有产品并未影响。

事务与模块拆分独立布置的分布式服务架构

3)开放平台接口:针对第三正值开发者。

5. 安全性

衡量标准:对于地下和现存的抨击和窃密,是否有可靠的答策略。


作者以最后介绍了架构师的职场攻略,他山之石,可以攻玉,产品经理也得以以和谐之行事受到借鉴:

1.
新人怎么开:新员工不要急证明自己的能力以及做出所谓的“成绩”,而是如同组织先行上一致切开,知道了番之浓度之后,再择机而动。

就算好比,做一个郊野调查,公司吧即是一个郊野,很多时刻,普遍的、先进的化解方式并无见面适用于这个田野,你也未见面懂谁是这田野里之gate
keeper, 所以往往难以调度。而仅仅出go native之后,才可能因地制宜。

  1. 什么谋支持:寻找利益共同点,或者他人的利益点。

  2. 哪联系:给上司做取舍题,给下级做开放修。


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

网站系统架构层次

1.
前端架构:前端指用户要到达网站应用服务器之前更之环节,通常不包含网站工作逻辑,不处理动态内容。

1)浏览器优化技术:优化响应页面,加快加载与显示。

2)CDN:内容分发网络。

3)动静分离:静态资源,如JS、CSS等文件部署在特别的服务器集群达,和Web应用动态内容服务分离,并使特别的(二级)域名。

4)图片服务:用户上传的图片。也运用独立布置的图纸服务器集群,并利用二级域名。

5)反朝代理:

6)DNS:

  1. 应用层架构:应用层是处理网站根本工作逻辑的地方。

1)开发框架:分离关注面,易于协作,内置安全策略等。

2)页面渲染:将分头支付保护的动态内容及静态页面模板集成起来,组合成最终的来得页面;

3)负载均衡:

4)Session管理:

5)动态页面静态化:

6)业务拆分:

7)虚拟化服务器。

  1. 服务层架构:提供基础服务,供应用层调用,完成网站业务。

分布式消息、分布式服务、分布式缓存、分布式配置。

  1. 囤层架构:提供数据、文件的持久化存储访问与治本服务。

1)分布式文件;

2)关系数据库:

3)NoSQL数据库:HBase;

4)数据并。

  1. 后台架构:后台非实时数解析处理。

1)搜索引擎;

2)数据仓库;

3)推荐系统。


笔者的忠告:

不用图设计大型网站,网站是演化出的。

网站地图xml地图