本文转载自:大型网站架构技术一览
大型网站的挑战主要来自庞大的用户,高并发的访问和海量数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得棘手。大型网站架构主要就是解决这类问题。更多内容也可以阅读各大互联网公司架构演进之路汇总、大型网站架构演化历程两篇文章。
本文内容大部分来自《大型网站技术架构》,这本书很值得一看,强烈推荐。
网站系统架构层次如下图所示:
1.前端架构
前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。
浏览器优化技术
并不是优化浏览器,而是通过优化响应页面,加快浏览器页面的加载和显示,常用的有页面缓存、合并HTTP减少请求次数、使用页面压缩等。
CDN
内容分发网络,部署在网络运营商机房,通过将静态页面内容分发到离用户最近最近的CDN服务器,使用户可以通过最短路径获取内容。
动静分离,静态资源独立部署
静态资源,如JS、CSS等文件部署在专门的服务器集群上,和Web应用动态内容服务分离,并使用专门的(二级)域名。
图片服务
图片不是指网站Logo、按钮图标等,这些文件属于上面提到的静态资源,应该和JS、CSS部署在一起。这里的图片指用户上传的图片,如产品图片、用户头像等,图片服务同样适用独立部署的图片服务器集群,并使用独立(二级)域名。
反向代理
部署在网站机房,在应用服务器、静态资源服务器、图片服务器之前,提供页面缓存服务。
DNS
域名服务,将域名解析成IP地址,利用DNS可以实现DNS负载均衡,配置CDN也需要修改DNS,使域名解析后指向CDN服务器。
2.应用层架构
应用层是处理网站主要业务逻辑的地方。
开发框架
网站业务是多变的,网站的大部分软件工程师都是在加班加点开发网站业务,一个好的开发框架至关重要。一个号的开发框架应该能够分离关注面,使美工、开发工程师可以各司其事,易于协作。同时还应该内置一些安全策略,防护Web用攻击。
页面渲染
将分别开发维护的动态内容和静态页面模板集成起来,组合成最终显示给用户的完整页面。
负载均衡
将多台应用服务器组成一个集群,通过负载均衡技术将用户请求分发到不同的服务器上,以应对大量用户同时访问时产生的高并发负载压力。
Session管理
为了实现高可用的应用服务器集群,应用服务器通常设计为无状态,不保存用户请求上下文信息,但是网站业务通常需要保持用户会话信息,需要专门的机制管理Session,使集群内甚至跨集群的应用服务器可以共享Session。
动态页面静态化
对于访问量特别大而更新又不很频繁的动态页面,可以将其静态化,即生成一个静态页面,利用静态页面的优化手段加速用户访问,如反向代理、CDN、浏览器缓存等。
业务拆分
将复杂而庞大的业务拆分开来,形成多个规模较小的产品,独立开发、部署、维护,除了降低系统耦合度,也便于数据库业务分库。按业务对关系数据库进行拆分,技术难度相对较小,而效果又相对较好。
虚拟化服务器
将一台物理服务器虚拟化成多态虚拟服务器,对于并发访问较低的业务,更容易用较少的资源构架高可用的应用服务器集群。
3.服务层架构
提供基础服务,供应用层调用,完成网站业务。
分布式消息
利用消息队列机制,实现业务和业务、业务和服务之间的异步消息发送及低耦合的业务关系。
分布式服务
提供高性能、低耦合、易复用、易管理的分布式服务,在网站实现面向服务架构(SOA)。
分布式缓存
通过可伸缩的服务器集群提供大规模热点数据的缓存服务,是网站性能优化的重要手段。
分布式配置
系统运行需要配置许多参数,如果这些参数需要修改,比如分布式缓存集群加入新的缓存服务器,需要修改应用程序客户端的缓存服务器列表配置,并重启应用程序服务器。分布式配置在系统运行期提供配置动态推送服务,将配置修改实时推送到应用系统,无需重启服务器。
4.存储层架构
提供数据、文件的持久化存储访问与管理服务。
分布式文件
网站在线业务需要存储的文件大部分都是图片、网页、视频等比较小的文件,但是这些文件的数量非常庞大,而且通常都在持续增加,需要伸缩性设计比较好的分布式文件系统。
关系数据库
大部分万丈的主要业务是基于关系数据库开发的,但是关系数据库对集群伸缩性的支持表较差。通过在应用程序的数据访问层增加数据库访问的路由功能,根据业务配置将数据库访问路由到不同的物理数据库上,可实现关系数据库的分布式访问。
NoSQL数据库
目前各种NoSQL数据库层出不穷,在内存管理、数据模型、集群分布式管理等方面各有优势,不过从社区活动性角度看,HBase无疑是目前最好的。
数据同步
在支持全球范围内数据共享的分布式数据库技术成熟之前,拥有多个数据中心的网站必须在多个数据中心之间进行数据同步,以保证每个数据中心都拥有完整的数据。在实践中,为了减轻数据库压力,将数据库的事物日志(或者NoSQL的写操作Log)同步到其他数据中心,根据Log进行数据重演,实现数据同步。
5.后台架构
网站应用中,除了要处理用户的实时访问请求外,还有一些后台非实时数据分析要处理。
搜索引擎
即使是网站内部的搜索引擎,也需要进行数据增量更新及全量更新、构建索引等。这些操作通过后台系统定时执行。
数据仓库
根据离线数据,提供数据分析与数据挖掘服务。
推荐系统
社交网站及购物网站通过挖掘人与人之间的关系,人和商品之间的关系,发展潜在的人际关系和购物兴趣,为用户提供个性化推荐服务。
6.数据采集与监控
监控网站访问情况与系统运行情况,为网站运营决策和运维管理提供支持保障。
浏览器数据采集
通过在网站页面中嵌入JS脚本采集用户浏览器环境与操作记录,分析用户行为。
服务器业务数据采集
服务器业务数据包括两种,一种是采集在服务器端记录的用户请求操作日志;一种是采集应用程序运行期业务数据,比如待处理消息数目等。
服务器性能数据采集
采集服务器性能数据,如系统负载、内存使用率、网卡流量等。
系统监控
将前述采集的数据以图表的方式展示,以便运营和运维人员监控网站运行状况,做到这一步仅仅是系统监视。更先进的做法是根据采集的数据进行自动化运维,自动处理系统异常状况,是吸纳自动化控制。
系统报警
如果采集来的数据超过预设的正常情况的阀值,比如系统负载过高,就通过邮件、短信、语音电话等方式发出警报信号,等待工程师干预。
7.安全架构
保护网站免遭攻击及敏感信息泄露。
Web攻击
以HTTP请求的方式发起的攻击,危害最大的就是XSS和SQL注入攻击。但是只要措施得当,这两种攻击都是比较容易防范的。
数据保护
敏感信息加密传输与存储,保护网站和用户资产。
8.数据中心机房架构
大型网站需要的服务器规模数以十万计,机房物理架构也需要关注。
机房架构
对于一个拥有十万台服务器的大型网站,每台服务器耗电(包括服务器本身耗电及空调耗电)每年大约需要人民币2000元,那么网站每年机房电费就需要两亿人民币。数据中心能耗问题日趋严重,Google、Facebook选择数据中心地理位置的时候趋向选择散热良好,供电充裕的地方。
机柜架构
包括机柜大小,网线布局、指示灯规格、不间断电源、电压规格(是48V直流电还是220V民用交流电)等一系列问题。
服务器架构
大型网站由于服务器采购规模庞大,大都采用定制服务器的方式代替购买服务器整机。根据网站应用需求,定制硬盘、内存、甚至CPU,同时去除不必要的外设接口(显示器输出接口,鼠标、键盘输入接口),并使空间结构利于散热。
相关推荐
第1篇 概述 1 大型网站架构演化 2 大型网站架构模式 3 大型网站核心架构要素 第2篇 架构 4 瞬时响应:网站的高性能架构 5 万无一失:网站的高可用架构 ...附录A 大型网站架构技术一览 附录B Web开发技术发展历程
大型网站架构一览从底层到前端技术框架分析.doc
【大型网站架构】是针对大型互联网企业所面临的用户规模、并发访问量以及海量数据处理问题而设计的一种技术架构。这种架构通常由多个层次和技术组件构成,以确保网站的高效、稳定和可扩展性。 首先,【前端技术】是...
【大型网站架构一览从底层到前端技术框架分析】 大型网站架构设计的核心目标是解决高并发访问、海量数据处理以及用户规模扩展带来的挑战。本文将详细分析从前端架构到后端服务层再到存储层的关键技术。 1. **前端...
DSU-110是ARM对L3缓存和集群架构的重大改进,其扩展性极强,能适应各种设备需求,无论是大型设备还是小型移动设备,都能通过DSU-110实现性能和功耗的最佳平衡。L3缓存的带宽在DSU-110中得到了大幅提升,达到前代产品...
在探讨“东京电车线路一览”这一主题时,我们不仅限于简单的罗列或描述,而是深入挖掘其背后的系统架构、技术应用以及对社会生活的影响,以满足对IT行业深度理解的需求。 首先,从IT角度分析,“东京电车线路一览”...
10. **技术创新**:为了满足高速、大容量的数据传输需求,公司需要不断进行技术创新,如引入新的通信技术、提高光纤的传输效率、优化网络架构等。 综上所述,西南地区的通信管线工程公司不仅是地区信息化建设的主力...
在现代存储技术中,SAN(存储区域网络)和NAS(网络附加存储)是两种重要的存储架构。IBM的SAN产品线覆盖了从小型到大型的多种存储解决方案,支持Fibre Channel技术,提供了高速、可靠的存储网络连接。同时,IBM SAN...
- **大型矩阵式服务器架构**: 为了保证服务的高可用性和稳定性,网易企业邮箱采用了大型矩阵式服务器架构。这种架构能够确保即使某个服务器出现故障,整个系统也能正常运行,避免因单点故障导致的服务中断。 - **...
Juniper在网络设备领域尤其是在路由技术和网络安全方面具有深厚的技术积累和市场影响力。本次我们将针对2011年的Juniper产品一览表进行详细的解读。 #### 产品一览表概述 该一览表按照不同的应用场景和客户需求划分...
国产数据库一览表 本文对国产数据库进行了简单介绍,涵盖了公司信息、数据库功能等几个方面。下面是相关知识点的详细说明: 一、达梦数据库(DM) 达梦数据库是由武汉华工达梦数据库有限公司开发的国产数据库软件...
在IT项目中,这相当于区分不同的软件架构或开发技术,例如客户端-服务器架构、微服务架构或者移动应用开发平台。 5. **房屋名称**:这里的房屋名称代表了建筑的具体用途,比如道班房或养路段房。在IT项目中,这可能...
【存储产品概述】 存储产品是IT基础设施中的关键组成部分,用于保存和管理企业的各类...无论是对于大型企业还是服务提供商,选择适合的存储解决方案都是至关重要的,它们直接影响到数据的安全、业务连续性和运营效率。
### 弱电智能化各系统介绍及拓扑图一览 #### 综述 随着信息技术的不断发展,弱电智能化系统已经成为现代建筑不可或缺的一部分。这些系统不仅提高了建筑物的安全性与舒适度,还极大提升了管理效率。本文将详细介绍...
### 目前国内外常见的10种配置管理工具一览 配置管理工具(Configuration Management Tools,简称CM或SCM)是配置管理领域中极为重要的组成部分。它不仅承载着配置管理理论的实际应用,而且其功能的广度与深度直接...
- **研究内容**:研究大型多语种电子词典的编撰技术。 - **应用前景**:促进跨语言交流。 **23. CAT中等级评分模型开发与应用** - **负责人**:丁树良 - **评审结果**:优秀 - **研究内容**:研究计算机辅助测试...
文档中的内容涉及的是一个大型土建工程的主要项目、劳动力需求、检测计量工具、施工机械配置以及施工技术力量的组织架构。以下是对这些方面详细的知识点解析: 1. **主要项目**: - 细格栅间:用于初步过滤水体中...
- **简介**: JBossNukes是一款基于J2EE架构的内容管理系统,针对JBoss平台进行了优化。 - **特点**: - 高级用户组管理和安全规则等功能,保障了系统的安全性。 - 组件在运行期间按需部署,提高了效率和灵活性。 #...