网站架构演化过程
2016-01-21 11:08
489 查看
今天在看到网站架构的时候看到一篇很好的文章,对于初入职场的人来说是很好的教程。
(1)初识阶段 一台服务器
最初的架构,应用程序、数据库、文件都部署在一台服务器上
(2)应用服务和数据服务分离
随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库、文件各自部署在独立的服务器上
(3)加缓存
在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存对热点数据进行缓存,减少这些数据的访问路径
缓存实现常见的方式是本地缓存、分布式缓存
分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Membercache、Redis
(4)应用服务器集群
应用服务器作为入口,会承担大量的请求,通过应用服务器集群来分担请求数
应用服务器前面部署负载均衡服务器,调度用户请求,根据分发策略将请求分发到多个应用服务器节点
(5)数据库读写分离
随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离
(6)使用CDN和反向代理
物理距离较远的用户访问,需要通过互联路由器经过较长的路径才能访问到的服务器,返回路径也一样,所以数据传输时间比较长
常常使用CDN解决,CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径
反向代理则是部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有没有缓存数据才会继续走应用服务器获取,常用的反向代理例如 Squid,Nginx
(7)使用分布式文件系统和分布式数据库
产生的文件越来越多,单台的文件服务器已经不能满足需求,需要分布式的文件系统支撑,常用的分布式文件系统有NFS
而数据库也需要进一步的拆分,进行分库分表,改为分布式数据库
(8)使用NoSql和搜索引擎
现在NoSql也比较成熟,在某些业务场景可以使用NoSql来提高性能,常用的NOSQL有mongodb和redis
海量的数据也必然需要更专业的内容搜索服务,主流的搜索引擎有lucene、solr
(9)将应用服务器进行业务拆分
随着业务进一步扩展,应用程序变得非常臃肿,需要将应用程序进行业务拆分,每个业务应用负责相对独立的业务运作
业务之间通过消息进行通信,或者同享数据库来实现
下面的内容主要来自《大型网站技术架构:核心原理与案例分析》。
一个好的网站架构通常都是逐渐演化完善的,下面就是一个常规的成长过程。(1)初识阶段 一台服务器
最初的架构,应用程序、数据库、文件都部署在一台服务器上
(2)应用服务和数据服务分离
随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库、文件各自部署在独立的服务器上
(3)加缓存
在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存对热点数据进行缓存,减少这些数据的访问路径
缓存实现常见的方式是本地缓存、分布式缓存
分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Membercache、Redis
(4)应用服务器集群
应用服务器作为入口,会承担大量的请求,通过应用服务器集群来分担请求数
应用服务器前面部署负载均衡服务器,调度用户请求,根据分发策略将请求分发到多个应用服务器节点
(5)数据库读写分离
随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离
(6)使用CDN和反向代理
物理距离较远的用户访问,需要通过互联路由器经过较长的路径才能访问到的服务器,返回路径也一样,所以数据传输时间比较长
常常使用CDN解决,CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径
反向代理则是部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有没有缓存数据才会继续走应用服务器获取,常用的反向代理例如 Squid,Nginx
(7)使用分布式文件系统和分布式数据库
产生的文件越来越多,单台的文件服务器已经不能满足需求,需要分布式的文件系统支撑,常用的分布式文件系统有NFS
而数据库也需要进一步的拆分,进行分库分表,改为分布式数据库
(8)使用NoSql和搜索引擎
现在NoSql也比较成熟,在某些业务场景可以使用NoSql来提高性能,常用的NOSQL有mongodb和redis
海量的数据也必然需要更专业的内容搜索服务,主流的搜索引擎有lucene、solr
(9)将应用服务器进行业务拆分
随着业务进一步扩展,应用程序变得非常臃肿,需要将应用程序进行业务拆分,每个业务应用负责相对独立的业务运作
业务之间通过消息进行通信,或者同享数据库来实现
相关文章推荐
- 架构纵横谈之二 ---- 架构的模式与要点
- BS项目中的CSS架构_仅加载自己需要的CSS
- 关于三种主流WEB架构的思考
- Android操作系统的架构设计分析
- w3c技术架构介绍
- linux学习笔记 linux目录架构
- mysql数据库应付大流量网站的的3种架构扩展方式介绍
- 从零开始搭建MySQL MMM架构
- C/S和B/S两种架构的概念、区别和联系
- 限时抢购秒杀系统架构分析与实战
- 也谈淘点点60s短信订单的架构设计
- android技术内幕心得
- SequoiaDB 笔记
- Web服务器Nginx多方位优化策略
- 面试:(设计,架构)
- 十日谈
- 悠然推荐:你的架构是如何一步步腐化的?
- 谈谈应用层切面设计
- 微信技术总监周颢:一亿用户背后架构秘密
- 大型网站架构改进历程:存储的瓶颈(3)