网站架构演化过程

网站的架构通常都是逐渐演化完善的,下面就是一个常规的成长过程

(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)将应用服务器进行业务拆分 随着业务进一步扩展,应用程序变得非常臃肿,需要将应用程序进行业务拆分,每个业务应用负责相对独立的业务运作

业务之间通过消息进行通信,或者同享数据库来实现

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2015-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ytkah

测试了小程序的内嵌网页总结几点

  11月2日深夜微信团队宣布小程序内嵌页面开放了,很多开发者已经测试了小程序的内嵌网页,他们总结了以下几点: 1、内嵌网页的域名需要在小程序管理后台设置为业务...

3305
来自专栏CSDN技术头条

携程开源Redis多数据中心解决方案XPipe

Redis在携程内部得到了广泛的使用,根据客户端数据统计,整个携程全部Redis的读写请求在每秒200W,其中写请求约每秒10W,很多业务甚至会将Redis当成...

4399
来自专栏主机笔记

windows主机安装酷Q机器人自动管理QQ群组

经常在许多的群里都有一个在线的QQ群管机器人,可以起到提示、管理、监控等作用,让群主的省去很多麻烦的事情,其实这个要实现并不是什么难事,已经有人把应用都做好了,...

6989
来自专栏编程

开发一款app从PHP到API接口

一、先简单回答两个问题: 1、PHP 可以开发客户端? 答:不可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:服务端的开发。(...

3669
来自专栏开源优测

有那么几张图给大家看看

721
来自专栏小巫技术博客

App更新策略课程完结篇

1113
来自专栏腾讯NEXT学位

阅读前端项目源码的正确姿势!

1564
来自专栏Rainbond开源「容器云平台」

技术解读Rainbond Service Mesh微服务架构_开源PaaS Rainbond

1862
来自专栏全华班

微信小程序开发环境搭建

微信小程序是当前程序员讨论的相当火的一个名词了,当前App开发人员有个担心,微信小程序的到来会不会给移动端App带来一个寒冬。不管微信小程序是否能颠覆当今的开发...

7206
来自专栏JAVA高级架构

微服务架构下静态数据通用缓存机制

在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验,尝试理清其中存在...

982

扫码关注云+社区

领取腾讯云代金券