首页
博客
下载
学习
社区
模型市场
AI搜索
AtomGit
InsCode
技术会议
墨衍 MoGrow
收藏
历史
会员中心
创作中心

大型网站系统架构演化之路

sxtobj sxtobj 博客等级 墨衍会员 · AI 创作全网分发 墨衍智能分发 本文由作者通过墨衍一键同步至各平台 1分发平台 600+累计阅读 627平均单平台 已同步平台 CSDN 微信公众号 微博 知乎 掘金 百家号 博客园 抖音 小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 → 码龄15年
关注
转载 最新推荐文章于 2026-03-16 07:45:00 发布 627 阅读 AI 写同款· GEO 优化 ›
大型网站系统架构演化相关书籍 大型网站 系统架构 入门书籍 阅读详情

目录[-]

  • 前言
  • 一、最开始的网站架构
  • 二、应用、数据、文件分离
  • 三、利用缓存改善网站性能
  • 四、使用集群改善应用服务器性能
  • 五、数据库读写分离和分库分表
  • 六、使用CDN和反向代理提高网站性能
  • 七、使用分布式文件系统
  • 八、使用NoSql和搜索引擎
  • 九、将应用服务器进行业务拆分
  • 十、搭建分布式服务
  • 小结

前言

一 个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的 扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的 系统架构是随着业务的扩展而逐步完善的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索、下单、支付,例 如腾讯,要解决数亿用户的实时消息传输,百度它要处理海量的搜索请求,他们都有各自的业务特性,系统架构也有所不同。尽管如此我们也可以从这些不同的网站背景下,找出其中共用的技术,这些技术和手段广泛运用在大型网站系统的架构中,下面就通过介绍大型网站系统的演化过程,来认识这些技术和手段。

一、最开始的网站架构

最初的架构,应用程序、数据库、文件都部署在一台服务器上,如图:

image

二、应用、数据、文件分离

随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库、文件各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。

image

三、利用缓存改善网站性能

在 硬件优化性能的同时,同时也通过软件进行性能优化,在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站 访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,减少这些数据的访问路径,提高用户体验。

image

缓 存实现常见的方式是本地缓存、分布式缓存。当然还有CDN、反向代理等,这个后面再讲。本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存 中,也可以存在文件,OSCache就是常用的本地缓存组件。本地缓存的特点是速度快,但因为本地空间有限所以缓存数据量也有限。分布式缓存的特点是,可 以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Memcached、Redis。

四、使用集群改善应用服务器性能

应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。

架构4

常 用的负载均衡技术硬件的有F5,价格比较贵,软件的有LVS、Nginx、HAProxy。LVS是四层负载均衡,根据目标地址和端口选择内部服务 器,Nginx和HAProxy是七层负载均衡,可以根据报文内容选择内部服务器,因此LVS分发路径优于Nginx和HAProxy,性能要高些,而 Nginx和HAProxy则更具配置性,如可以用来做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器)。

五、数据库读写分离和分库分表

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

架构3

六、使用CDN和反向代理提高网站性能

假 如我们的服务器都部署在成都的机房,对于四川的用户来说访问是较快的,而对于北京的用户访问是较慢的,这是由于四川和北京分别属于电信和联通的不同发达地 区,北京用户访问需要通过互联路由器经过较长的路径才能访问到成都的服务器,返回路径也一样,所以数据传输时间比较长。对于这种情况,常常使用CDN解 决,CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径。比较专业的CDN运营商有蓝汛、网宿。

而反向代理,则是部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有缓存数据才会继续访问应用服务器获取,这样做减少了获取数据的成本。反向代理有Squid,Nginx。

架构5

七、使用分布式文件系统

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

架构5.5

八、使用NoSql和搜索引擎

对于海量数据的查询和分析,我们使用nosql数据库加上搜索引擎可以达到更好的性能。并不是所有的数据都要放在关系型数据中。常用的NOSQL有mongodb、hbase、redis,搜索引擎有lucene、solr、elasticsearch。

架构6

九、将应用服务器进行业务拆分

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

架构7

十、搭建分布式服务

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

架构8

小结

大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段。

 

·
收录于

当前文章被以下社区和专栏收录:

大型网站系统架构演化 大型网站系统架构的演化经历了从单一服务器架构到垂直拆分架构,再到水平拆分架构的过程。这些架构演化的过程中,不同的功能模块被拆分到独立的服务器或微服务中,实现了系统的高性能、可扩展性和可维护性。随着技术的不断进步,大型网站系统架构的演化也会继续发展,以满足不断变化的需求。在垂直拆分架构中,不同的功能模块被拆分到独立的服务器上,每个服务器负责处理特定的功能。随着云计算和容器化技术的发展,微服务架构逐渐成为大型网站系统架构的主流。在微服务架构中,系统被拆分成多个独立的微服务,每个微服务负责一个特定的业务功能。 阅读详情

相关推荐

Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 安装教程 2.1 安装OpenClaw 2.2 配置模型 2.3 对话 3. 后续使用步骤 4. 关闭程序

weixin_43178406的博客 9万+

计算机软件体系结构 ——大型网站架构演变和知识体系

软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理

EM的理论与实践(基础篇)

EM理论与实践

m0_61544122的博客 2320

vim E213: Cannot convert (add ! to write without conversion)

Subject: Re: vim 6.2 - encodings From: Antoine J. Mechelynck (anto...@belgacom.net) Date: May 28, 2004 11:37:56 am List: com.googlegroups.vim_use ji...@altern.org wrote

sxtobj的专栏 3942

ubuntu文档保存出现的一些错误

u不 ubuntu E172只允许一个文件名

无限大地NLP_空木的专栏 6488

tuxedo网摘

<br />序言:这个csdn是上学时最喜欢来的地方。那个时候无忧无虑,什么程序语言都来看。对于csdn上高手的崇拜之情,真的是有如滔滔江水。今日偶然用 这个yangweisearch帐号搜索,竟然能看到今年还有人对我当年出现的问题研究。<br />深感惭愧。代码依旧,系统却已是win7开始普及的时候。我曾经想过的很多技术,现在市面上也有了。<br />我曾经幻想的未来,我还依然遥不可及。<br />求知路,求生求乐求自己。谨以此帖自勉。<br /><br />1. 非图形界面下的安装<br />./tux

yangweisearch的专栏 809

软考高级架构 —— 10.6 大型网站系统架构演化实例 + 软件架构维护

10.6 大型网站系统架构演化实例10.6 大型网站系统架构演化实例大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,主要解决这类问题。

欧唯薇 1323

从性能到安全:大型网站系统架构演化的 13 个核心维度

本文从多维度解析大型网站系统架构的演化。性能上,借助缓存、数据库优化及异步处理提升响应速度;可用性方面,通过负载均衡、集群技术保障系统稳定运行;可扩展性依靠分布式架构与弹性伸缩实现灵活扩展;安全性从网络、数据、认证授权层面防护;运维管理利用监控告警、自动化工具提效;架构采用分层与微服务模式。此外,还涉及并发分流、多级缓存、数据治理等技术优化,通过多维度协同改进,推动网站系统架构持续完善。

编程在手天下我有的博客 1474

大型网站系统架构演化实例

​ 网站在使用缓存后,使对大部分数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作都需要访问数据库,在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。既然大部分业务访问集中在一小部分数据上,那么如果把这一小部分数据缓存在内存中,就可以减少数据库的访问压力,提高整个网站的数据访问速度,改善数据库的写入性能了网站使用的缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。

qq_37954693的博客 680

大型网站系统架构演化(Web)

数据库与缓存数据是否有可能不一致?大体思想如下:先写入数据库、再更新缓存。

qq_45731464的博客 699

大型网站系统架构演化过程

架构的发展过程一个成熟的大型网站系统架构并不是一开始就设计的非常完美的,也不是一开始就具备高性能,高可用,安全性等特性,而是随着用户量的增加,业务功能的扩展慢慢完善演变过来的。在这个发展过程中,开发模式,技术架构等都会发生非常大的变化。假如系统具备一下功能:用户模块:用户注册和管理商品模块:商品展示和管理交易模块:创建交易及支付结算阶段一:单应用架构系统的初级都是应用和数据库都放在一台服务器上。阶...

terrydu的专栏 274

贵阳市2005-2025年近20年历史气象数据下载

贵阳市2005-2025年近20年的历史气象数据,每3小时更新一次数据,参数包含气温、气压、降水量、云层、能见度、风向、湿度等,几万条数据

上一篇: MySQL的sequence解决方案
下一篇: tuxedo 常见问题总结
Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程
最新发布
weixin_43178406的博客
03-16 9万+
本文主要介绍了Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 安装教程 2.1 安装OpenClaw 2.2 配置模型 2.3 对话 3. 后续使用步骤 4. 关闭程序
计算机软件体系结构 ——大型网站架构演变和知识体系
01-11
软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理
EM的理论与实践(基础篇)
m0_61544122的博客
12-14 2320
EM理论与实践
vim E213: Cannot convert (add ! to write without conversion)
sxtobj的专栏
03-09 3942
Subject: Re: vim 6.2 - encodings From: Antoine J. Mechelynck (anto...@belgacom.net) Date: May 28, 2004 11:37:56 am List: com.googlegroups.vim_use ji...@altern.org wrote
ubuntu文档保存出现的一些错误
无限大地NLP_空木的专栏
10-04 6488
u不 ubuntu E172只允许一个文件名
tuxedo网摘
yangweisearch的专栏
10-25 809
<br />序言:这个csdn是上学时最喜欢来的地方。那个时候无忧无虑,什么程序语言都来看。对于csdn上高手的崇拜之情,真的是有如滔滔江水。今日偶然用 这个yangweisearch帐号搜索,竟然能看到今年还有人对我当年出现的问题研究。<br />深感惭愧。代码依旧,系统却已是win7开始普及的时候。我曾经想过的很多技术,现在市面上也有了。<br />我曾经幻想的未来,我还依然遥不可及。<br />求知路,求生求乐求自己。谨以此帖自勉。<br /><br />1. 非图形界面下的安装<br />./tux
软考高级架构 —— 10.6 大型网站系统架构演化实例 + 软件架构维护
欧唯薇
12-12 1323
10.6 大型网站系统架构演化实例10.6 大型网站系统架构演化实例大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,主要解决这类问题。
从性能到安全:大型网站系统架构演化的 13 个核心维度
编程在手天下我有的博客
04-23 1474
本文从多维度解析大型网站系统架构的演化。性能上,借助缓存、数据库优化及异步处理提升响应速度;可用性方面,通过负载均衡、集群技术保障系统稳定运行;可扩展性依靠分布式架构与弹性伸缩实现灵活扩展;安全性从网络、数据、认证授权层面防护;运维管理利用监控告警、自动化工具提效;架构采用分层与微服务模式。此外,还涉及并发分流、多级缓存、数据治理等技术优化,通过多维度协同改进,推动网站系统架构持续完善。
大型网站系统架构演化实例
qq_37954693的博客
08-08 680
​ 网站在使用缓存后,使对大部分数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作都需要访问数据库,在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。既然大部分业务访问集中在一小部分数据上,那么如果把这一小部分数据缓存在内存中,就可以减少数据库的访问压力,提高整个网站的数据访问速度,改善数据库的写入性能了网站使用的缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。
大型网站系统架构演化(Web)
qq_45731464的博客
11-26 699
数据库与缓存数据是否有可能不一致?大体思想如下:先写入数据库、再更新缓存。
大型网站系统架构演化过程
terrydu的专栏
06-14 274
架构的发展过程一个成熟的大型网站系统架构并不是一开始就设计的非常完美的,也不是一开始就具备高性能,高可用,安全性等特性,而是随着用户量的增加,业务功能的扩展慢慢完善演变过来的。在这个发展过程中,开发模式,技术架构等都会发生非常大的变化。假如系统具备一下功能:用户模块:用户注册和管理商品模块:商品展示和管理交易模块:创建交易及支付结算阶段一:单应用架构系统的初级都是应用和数据库都放在一台服务器上。阶...
贵阳市2005-2025年近20年历史气象数据下载
贵阳市2005-2025年近20年的历史气象数据,每3小时更新一次数据,参数包含气温、气压、降水量、云层、能见度、风向、湿度等,几万条数据
目录

目录

展开全部

收起

点赞 点赞 0
评论 0
书签 书签 0
分享
复制链接
分享到 QQ
分享到新浪微博
扫一扫
更多
举报
返回顶部
+ 关注
sxtobj
sxtobj
博客等级 码龄15年 4粉丝 2原创
+ 关注
评论
被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值