大型网站架构技术一览

大型网站架构技术一览

1. 主要层次:系统性能、可用性、伸缩性、扩展性、安全性

2. 网站系统架构层次图

前端架构
应用层架构 数据
服务层架构 采集
存储层架构
后台架构 监控
数据中心机房架构

1. 前端架构

  • 浏览器优化技术

    页面缓存、合并HTTP请求,减少请求次数、使用页面压缩……

    主要就是优化响应页面,加快浏览器页面的加载和显示

  • CDN(Content Delivery Network )

    内容分发网络,部署在网络运营商机房,通过将静态页面内容分发到利用户最近的CDN服务器,

    使用户可以通过最短路径获取内容

  • 动静分离静态资源独立部署

    js、css、images 等文件部署在专门服务器集群,与web应用动态内容服务分离,使用独立域名

  • 图片服务

    图片服务使用独立部署的图片服务器集群,使用独立域名

  • 反向代理

    部署在网站机房,在应用服务器、静态资源服务器、图片服务器之前,提供页面缓存服务

  • DNS

    域名服务,将域名解析为IP,可实现DNS负载均衡,配置CDN也需要修改DNS,使域名解析后

    指向CDN服务器

2. 应用架构层(处理网站主要业务逻辑)

  • 开发框架

    一个好的开发框架应该使系统内部模块间耦合性尽可能降低,使开发人员可以各司其职。 同时还应

    配置一些安全策略,预防Web应用攻击

  • 页面渲染

    将分别开发的动态内容和静态页面模板整合起来,组合成最终显示给用户的完整页面

  • 负载均衡

    将多台应用服务器组成一个集群,通过负载均衡技术将用户请求分发到不同的服务器,以应对高并发

    负载压力

  • Session管理

    应用服务器通常是被设计为无状态,不保存用户请求上下文信息,但网站业务逻辑通常需要保持用户会话

    信息,所以需要专门的机制来管理Session,使集群内甚至跨集群的应用服务器可以共享Session

  • 动态页面静态化

    对于访问量特别大而更新又不是很频繁的动态页面,可以将其静态化,利用静态页面的优化手段加速用户

    访问

  • 业务拆分

    将复杂业务进行拆分,形成多个模块较小的产品,独立开发、部署、维护,降低系统耦合度,同是也有利于

    数据库拆分

  • 虚拟化服务器

    将一台物理服务器虚拟化为多台虚拟服务器,对于并发访问较低的业务,更容易用较少的资源构建高可用的应用服务器集群

3. 服务层架构(提供基础服务,供应用层调用)

  • 分布式消息

    利用消息队列,实现业务和业务、业务和服务之间的异步消息发送及低耦合的业务关系

  • 分布式服务

    提供高性能、低耦合、易复用、易管理的分布式服务,在网站实现面向服务架构(SOA

  • 分布式缓存

    通过可伸缩的服务器集群提供大规模热点数据的缓存服务,是网站性能优化的重要手段

  • 分布式配置

    分布式配置在系统训行乞提供配置动态推送服务,将配置修改事实推送到应用系统,无需重启

    服务器

4. 存储层架构(提供数据、文件的持久化访问与管理)

  • 分布式文件

    网站在线业务需要存储的文件大部分是图片、网页、视频等比较小的文件,但是数量却非常庞大,

    需要伸缩性比较好的分布式文件系统

  • 关系数据库

    关系数据库对集群伸缩性的支持比较差,通过在应用的数据访问层增加数据库访问路由功能,

    根具业务配置将数据库访问路由到不同的物理数据库上,实现关系数据库分布式访问

  • NoSQL 数据库

    内存管理、数据模型、集群分布式管理 HBase

  • 数据同步

    多个数据中心之间数据要进行同步,在实践中,为了减轻数据库的压力,将数据库的事务日志

    (或NoSQL的写操作Log)同步到其他数据中心,根据Log进行数据重演,实现数据同步,以减少

    大量数据进行同步造成的资源浪费

5. 后台架构(非实时数据的分析)

  • 搜索引擎

    后台系统创建定时任务,定时进行数据的增量更新、全量更新、构建索引等

  • 数据仓库

    根据离线数据,提供数据分析与数据挖掘

  • 推荐系统

    社交网站及购物网站通过挖掘人与人之间的关系,人和商品之间的关系,发掘潜在的人间关系

    和购物兴趣,为用户提供个性化推荐服务

6. 数据采集与监控

  • 浏览器数据采集

    通过网站页面嵌入js脚本采集用户浏览器环境与操作记录,分析用户行为

  • 服务器业务数据采集

    1. 采集在服务器端记录的用户请求操作日志
    2. 采集应用程序运行期业务数据,比如待处理消息数目等
  • 服务器性能数据采集

    采集服务器性能数据:系统负载、内存利用率、网卡流量等

  • 系统监控

    将前述采集的数据以图表的方式展示,以便运营和运维人员监控网站运行状况。 再进一步应该做到

    根据采集的数据进行自动化运维,自动处理系统异常状况,实现自动化控制

  • 系统报警

    若采集来的数据超过预设的正常情况的阈值,比如系统负载过高,就通过邮件、短信、语音电话等方式

    发出报警信号、等待工程师进行干预

7. 安全架构(保护网站免遭攻击及敏感信息泄露)

  • Web攻击

    以HTTP请求的方式发起的攻击,危害最大的就是XSSSQL注入攻击。但是只要措施得当,这两种攻击

    方式都比较容易防范

  • 数据保护

    敏感信息加密传输与存储,保护网站和用户资产

8. 数据中心机房架构(数据中心功耗问题)

  • 机柜架构

    机柜大小、网线布局、指示灯规格、不间断电源、电源规格等

  • 服务器架构

    根据网站应用需求,定制硬盘、内存、甚至CPU,同是去除不必要的外设接口(显示器输出接口、

    键盘、鼠标数据接口),并使空间结构利与散热