大型网站技术架构笔记-第1篇 概述(1)

来源:互联网 发布:淘宝买东西有限额吗 编辑:程序博客网 时间:2024/06/15 18:12

1 大型网站架构演化

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

与传统企业应用系统相比,大型互联网应用系统有以下特点

高并发,大流量:Google日均PV数 35亿、日均IP访问数3亿、腾讯的最大在线用户数1.4亿(2011年);淘宝2012年“双十一”活动一天交易额超过191亿,活动开始第一分钟独立访问用户达1000万

高可用:系统7*24小时不间断服务

海量数据:存储管理大量数据

用户分布广泛,网络情况复杂:运营商网络、光缆

安全环境恶劣:

需求快速变更,发布频繁:

渐进式发展:

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

大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿级的用户,问题就会变得很棘手。

1.2.1初始阶段的网站架构:应用程序、数据库、文件在一台服务器上

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

应用和数据分离后,整个网站使用三台服务器:应用服务器、文件服务器和数据库服务器,也就可以根据不同的情况,对服务器的硬件进行配置。问题在于:数据库压力太大,导致访问延迟进而影响整个网站的性能,用户体验收到影响

1.2.3使用缓存改善网站性能

网站的访问和现实世界的财富一样遵循二八定律,80%的业务访问集中在20%的数据上。进一步加入缓存技术。

网站使用的缓存可以分为两种:缓存在应用服务器上的本地缓存缓存在专门的分布式缓存服务器上的远程缓存

本地缓存的访问速度更快,但是受应用服务器内存限制,缓存数据量有限,会出现和应用程序争用内存的情况。

远程分布式缓存可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不受内存容量限制的缓存服务。该结构的问题是,单一应用服务器能够处理的请求链接有限,访问高峰期,应用服务器成为整个网站的瓶颈

1.2.4使用应用服务器集群改善网站的并发能力

使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力不足、存储空间不足时,不要企图去换更强大的服务器,更恰当的做法是增加服务器分担原有服务器的访问及存储压力,实现可伸缩性。通过负载均衡调度服务器,将用户浏览器的访问请求分发到应用服务器集群。

1.2.5 数据库读写分离

网站在使用缓存后,大部分数据读操作访问都可以不通过数据库;缓存访问不明中、缓存过期和全部的写操作需要访问数据库,在网站的用户达到一定规模后,数据负载压力过高,仍然是网站的瓶颈

大部分的主流数据库提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,改善负载压力


图片来源:https://segmentfault.com/img/bVFaJa?w=668&h=505)

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

CDN和反向代理的原理都是缓存。

CDN部署在网络提供商的机房,用户请求网站服务器是,从距离自己最近的网络提供商机房获取数据;

反向代理部署在网站的中心机房,用户请求达到中心机房后,首先访问的服务器是反向代理服务器

加快用户访问速度,减轻后端服务器的负载压力

1.2.7 使用分布式文件系统和分布式数据库系统

分布式数据库是网站数据库拆分的最后手段。网站更常用的数据库拆分手段是业务分库,将不同的业务数据库部署在不同的物理服务器上


(图片地址:https://segmentfault.com/img/bVFaJe?w=673&h=455)

1.2.8 使用NoSQL和搜索引擎(应用程序后,具体访问数据前),这部分,书里的内容并没有延伸过多。


(图片来源:https://segmentfault.com/img/bVFaJf?w=657&h=419)

1.2.9 业务拆分

首页、商铺、订单、买家、卖家等拆分成不同的产品线(超链接、队列进行数据分发)

1.2.10 分布式服务

通过分布式服务调用共用业务服务完成具体的业务操作

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

业务场景和发展规模是驱动网站发展的主要因素,so,想要感受大数据流量的冲击,就必须有一个大的平台

1.4网站架构设计误区

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

为了技术而技术

企图用技术解决所有问题(12306的排队、分时段等)








原创粉丝点击