博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中大型网站技术架构演变过程
阅读量:5989 次
发布时间:2019-06-20

本文共 1346 字,大约阅读时间需要 4 分钟。

1、大型网站的特点

  • 高并发,大流量:PV量巨大。即页面浏览量;用户每1次对网站中的每个网页访问均被记录1次。用户对同一页面的多次访问,访问量累计。
  • 高可用:7*24小时不间断服务。
  • 海量数据:需要储存、管理海量数据,需要使用大量服务器。
  • 用户分布 广泛,网络情况复杂:为全球用户提供服务,用户分布范围广。
  • 安全环境恶劣:黑客攻击多。
  • 需求快速变更,发布频繁:快速适应市场,满足用户需求。
  • 渐进式发展:慢慢地运营出大型网站。

2、大型网站架构演变过程

  • 初始阶段网站架构

一台Server就刚需—应用程序、数据库、文件等所有资源都集中在一台Server上,典型案例:基于LAMP架构的PHP网站。

  • 应用和数据服务分离

三台Server平天下—业务发展,单台不再适应业务的发展,将应用和数据分离后成三台Sever(应用服务器、文件服务器与数据库服务器)。分离后三台Server对硬件资源的需求各不相同:应用服务器需要更快更强大的CPU,而数据库服务器需要更快的硬盘和更大的内存,文件服务器则需要更大的硬盘。

  • 使用缓存改善网站性能

3+N的Server模式—减少数据库访问压力,提高网站的数据访问速度。缓存又可以分为:本地缓存和远程缓存(可以是分布式的),本地缓存访问速度快,但数据量有限;远程分布式缓存可以集群,因此容量不受限制。

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

集群—解决高并发、海量数据问题的常用手段,实现系统的可伸缩性。通过负载均衡调度器,可将用户访问分发到集群中的某台Server上,应用服务器的负载压力不再成为整个网站的瓶颈。

  • 数据库读写分离

随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分,水平切换则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务不同来切换,如用户业务、商品业务相关的表放在不同的数据库中。

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

CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,而反向代理则部署在网站的中心机房。使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。

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

用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足需求。需要分布式的文件系统支撑。

  • 使用NoSQL和搜索引擎

NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。

  • 业务拆分

随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分,如百度分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者同享数据库来实现。

  • 分布式服务

这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来利用分部式服务框架搭建分布式服务。

转载地址:http://oiilx.baihongyu.com/

你可能感兴趣的文章
设计模式:空对象模式(Null Object Pattern)
查看>>
rome实现rss订阅与发布
查看>>
实现两个N*N矩阵的乘法,矩阵由一维数组表示
查看>>
[置顶] (游戏编程-04)JAVA版雷电(奇迹冬瓜)
查看>>
java第三节 面向对象(上)
查看>>
节点地址的函数list_entry()原理详解
查看>>
ubuntu-12.10-server安装图形界面
查看>>
Yellow
查看>>
Android系统框架介绍
查看>>
职责链(Chain of Responsibility)模式
查看>>
[Python] io 模块之 open() 方法
查看>>
MySQL 通过idb文件恢复Innodb 数据【转】
查看>>
C#自定义事件 范例:监视变量变化
查看>>
ASP.NET MVC与ASP.NET Web Form简单区别
查看>>
CreateThread与_beginthread, _beginthreadex创建线程的基本概念和区别
查看>>
将坐标转化为与X轴正半轴夹角模板
查看>>
百度新闻
查看>>
jquery类似方法的比较(三)
查看>>
读取XML的问题
查看>>
Knockout.Js官网学习(options绑定)
查看>>