石头杨 2016-10-15 12:15:04 3505次浏览 1条评论 6 5 0

大型网站特点

  • 高并发,大流量
  • 高可用(不宕机)
  • 海量数据
  • 用户分布广泛,网络情况复杂
  • 安全环境恶劣(容易被攻击)
  • 需求变化快,发布频繁
  • 渐进式发展(不断迭代)

大型网站发展历程

初始阶段

一台服务器,应用程序、数据库、文件所有资源在一台服务器上。

应用服务和数据服务分离

随着用户增加,一台服务器不能满足需要。
网站服务器分为:

应用服务器:处理业务,需要更快更强大的CPU
文件服务器:磁盘检索和数据缓存,需要更快的硬盘和更大的内存
数据库服务器:储存用户上传的文件,需要更大的硬盘

使用缓存提高性能

数据库压力大。根据二八定律:80%的业务访问集中在20%的数据上。数据统计分析出常访问的数据,把这小部分数据缓存在内存,改善数据库压力。

缓存分为:
本地缓存:访问更快,容量有限,与应用程序争内存
分布式缓存服务器:采用集群,内存容量不受限

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

将用户的访问请求分发到集群的任何一台服务器。实现系统的可伸缩性。

数据库读写分离

利用数据库的主从热备功能。采用两台数据库服务器,一台主数据库负责写,一台从数据库读。通过设置,实现数据更新同步,实现读写分离

使用反向代理和 CDN 加速

由于不同地区的用户访问网站速度差别很大。

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

CDN:部署在网络提供商的机房,用户在请求网站服务时,从距离自己最近的网络提供商机房获取数据。一般储存静态如CSS、JS、图片等静态资源。

反向代理:反向代理部署在网站的中心机房,请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中有缓存直接返回给用户。

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

任何单一的服务器满足不了大型网站增长的业务需求。随着业务发展,必须使用分布式文件系统和分布式数据库

分布式数据库是网站数据库拆分的最后手段,只有单表数据规模非常庞大时才使用。网站更常用的数据库拆分手段是业务分库,将不同业务的数据部署在不通的服务器上。

使用 NoSQL 和搜索引擎

网站业务越来越复杂,需要用到 NoSQL 和搜索引擎。 应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的问题

业务拆分

将网站业务拆分成不同的产品线,如购物网站的首页、店铺、订单等拆分成不同的产品线。根据不同产品线,划分不同的应用。不同应用独立部署维护。应用之间通过超链接建立关系,或通过消息队列进行数据分发,最常用的还是通过访问一个数据储存系统构成一个关联的完整系统。

 分布式服务

业务拆分越来越小,存储系统越来越庞大。系统整体复杂度越来越大。每一个应用系统要执行许多相同的业务操作。可以将固有的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。

网站架构误区

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

为了技术而技术(技术为业务服务)

企图用技术解决所有问题(12306网站访问问题)

觉得很赞
您需要登录后才可以评论。登录 | 立即注册