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

最新推荐文章于 2024-12-12 23:08:38 发布
转载 最新推荐文章于 2024-12-12 23:08:38 发布 · 611 阅读
· 0
· 0

目录[-]

  • 前言
  • 一、最开始的网站架构
  • 二、应用、数据、文件分离
  • 三、利用缓存改善网站性能
  • 四、使用集群改善应用服务器性能
  • 五、数据库读写分离和分库分表
  • 六、使用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

小结

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

 

确定要放弃本次机会?
福利倒计时
: :

立减 ¥

普通VIP年卡可用
立即使用
sxtobj
关注 关注
  • 0
    点赞
  • 踩
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  • 分享
    复制链接
    分享到 QQ
    分享到新浪微博
    扫一扫
  • 举报
    举报
【系统架构设计师】十四、软件架构的演化和维护(软件架构演化评估方法|大型网站系统架构演化实例|软件架构维护)
帅次的博客
07-23 1568
根据演化过程是否已知可将评估过程分为:演化过程已知的评估和演化过程未知的评估。 演化过程已知的评估其目的在于通过对架构演化过程进行度量,比较架构内部结构上的差异以及由此导致的外部质量属性上的变化,对该演化过程中相关质量属性进行评估。 当演化过程未知时,我们无法像演化过程已知时那样追踪架构在演化过程中的每一步变化,只能根据架构演化前后的度量结果逆向推测出架构发生了哪些改变,并分析这些改变与架构相关质量属性的关联关系。
计算机软件体系结构 ——大型网站架构演变和知识体系
01-11
软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理
参与评论 您还未登录,请先 登录 后发表或查看评论
vim E213: Cannot convert (add ! to write without conversion)
sxtobj的专栏
03-09 3899
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 6320
u不 ubuntu E172只允许一个文件名
vim保存时报错:E382: Cannot write, 'buftype' option is set
热门推荐
xuemeilu的博客
08-20 3万+
解决方法: 可用下面的命名查看buftype的设置,当buftype=nofile时,不能保存文件,只有当buftype=空时,才可以保存 :verbose set buftype   vim切换至ex模式,输入 {优快云:CODE::setlocal buftype=}
大型网站系统架构演化(Web)
qq_45731464的博客
11-26 645
数据库与缓存数据是否有可能不一致?大体思想如下:先写入数据库、再更新缓存。
从编程小白到架构总监:大型网站系统架构演化之路
帐前卒 专栏
10-26 3205
前言一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的
大型网站架构演化
贾欣晓的博客
06-05 1338
网站技术是为业务而存在的,除此毫无意义。在技术选型和架构设计中,脱离网站业务发展的实际,一味追求时髦的新技术,可能会将网站技术发展引入崎岖小道,架构之路越走越难。
软考高级架构 —— 10.6 大型网站系统架构演化实例 + 软件架构维护
欧唯薇
12-12 1229
10.6 大型网站系统架构演化实例10.6 大型网站系统架构演化实例大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,主要解决这类问题。
大型网站系统架构演化之路.pdf
11-16
大型网站系统架构演化之路.pdf
大型网站系统架构的演化
03-03
一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也...
考虑可再生能源出力不确定性的商业园区用户需求响应策略(Matlab代码实现)
最新发布
12-15
考虑可再生能源出力不确定性的商业园区用户需求响应策略(Matlab代码实现)内容概要:本文围绕“考虑可再生能源出力不确定性的商业园区用户需求响应策略”展开,结合Matlab代码实现,研究在可再生能源(如风电、光伏)出力具有不确定性的背景下,商业园区如何制定有效的需求响应策略以优化能源调度和提升系统经济性。文中可能涉及不确定性建模(如场景生成与缩减)、优化模型构建(如随机规划、鲁棒优化)以及需求响应机制设计(如价格型、激励型),并通过Matlab仿真验证所提策略的有效性。此外,文档还列举了大量相关的电力系统、综合能源系统优化调度案例与代码资源,涵盖微电网调度、储能配置、负荷预测等多个方向,形成一个完整的科研支持体系。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及从事能源系统规划与运行的工程技术人员。; 使用场景及目标:①学习如何建模可再生能源的不确定性并应用于需求响应优化;②掌握使用Matlab进行商业园区能源系统仿真与优化调度的方法;③复现论文结果或开展相关课题研究,提升科研效率与创新能力。; 阅读建议:建议结合文中提供的Matlab代码实例,逐步理解模型构建与求解过程,重点关注不确定性处理方法与需求响应机制的设计逻辑,同时可参考文档中列出的其他资源进行扩展学习与交叉验证。
多微电网含多微电网租赁共享储能的配电网博弈优化调度(Matlab代码实现)
12-15
【多微电网】含多微电网租赁共享储能的配电网博弈优化调度(Matlab代码实现)内容概要:本文介绍了基于Matlab代码实现的含多微电网租赁共享储能的配电网博弈优化调度方法,旨在通过共享储能资源提升多微电网系统的运行效率与经济性。文中结合博弈论思想,构建了多主体间的优化调度模型,考虑各微电网在储能租赁机制下的竞争与协作关系,实现了配电网中能量的合理分配与成本优化。该资源不仅提供了完整的Matlab代码实现,还涵盖了模型构建、算法设计及仿真分析全过程,适用于电力系统优化领域的科研与工程实践。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、储能优化等相关领域的工程技术人员。; 使用场景及目标:①研究多微电网系统中共享储能的租赁机制与调度策略;②应用博弈论方法解决多主体能源优化问题;③通过Matlab仿真验证优化模型的有效性,提升配电网运行的经济性与稳定性。; 阅读建议:建议读者结合代码与理论模型同步学习,重点关注博弈模型的构建逻辑与Matlab实现细节,可进一步扩展至不同场景(如考虑可再生能源不确定性、需求响应等)进行二次开发与实验验证。
Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件:legacy aarch64包
12-15
Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件:legacy aarch64包。
编译原理大作业:3-非递归预测分析-实验源码
12-15
本资源是文章《编译原理大作业:3-非递归预测分析》的对应源码资源,包含一个非递归预测分析器的完整实现代码,用于分析表达式语言。该分析器基于LL(1)文法设计,采用自上而下的语法分析方法,能够判断输入串是否为文法定义的句子。 资源内容主要为: LL(1)文法的数据结构表示,包括产生式数组Yy_pushtab[]和分析表数组Yy_d[] 预测分析器总控程序实现,使用分析栈进行语法分析 输出栈内容功能,便于与手工模拟分析过程比较 对输入串"1+2;"的分析示例,验证分析器正确性 该实现完整展现了预测分析器的工作原理,包括文法转换、分析表构建、栈操作等关键环节,可作为编译原理课程中语法分析部分的参考实现。
【未发表】基于鹈鹕优化算法POA优化支持向量机SVM实现故障诊断附matlab代码.zip
12-15
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
【未发表】基于向量加权平均算法INFO优化支持向量机SVM实现故障诊断附matlab代码.zip
12-15
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
大型网站系统架构的演进之路:从单机到集群
"大型网站系统架构的演化" 大型网站系统架构的演化是一个复杂而逐步的过程,随着业务的增长和技术的进步,架构也需要不断优化以应对新的挑战。最初,网站可能采用简单的架构,所有应用、数据和文件都部署在同一台...
sxtobj

博客等级

码龄14年
2
原创
16
点赞
72
收藏
4
粉丝
关注
私信

TA的精选

  • 新 Linux select 文件描述符1024限制

    3248 阅读

  • 新 select真的有限制吗

    1496 阅读

  • 热 oracle向PostgreSQL迁移

    8576 阅读

  • 热 “bash: fork: Resource temporarily unavailable”的解决方案

    8315 阅读

  • 热 TUXEDO配置参数详解 远程客户端配置

    7476 阅读

查看更多

大家在看

  • [Python实战] 解决Outlook同步中的字符编码问题:表情符号也能正确处理了! 2
  • 湖南网安基地:湖南地区口碑最好的网络安全培训机构深度测评
  • 【全面实战】从DVWA搭建到全漏洞复现(1) 77
  • 彻底搞懂AI Agent框架!主流框架超详细总结,看这篇就够!
  • 2026年Java程序员转型必备:AI大模型6个月从零到精通生存指南,掌握未来职场密码!

TA的历史创作历程

2016年 12篇
2015年 8篇
2014年 13篇
2013年 33篇
2012年 18篇

分类专栏

  • UNIX/linux
    22篇
  • tuxedo
    8篇
  • linux shell
    5篇
  • vim
    2篇
  • 编译
    8篇
  • AIX
    2篇
  • oracle
    22篇
  • DOS
    2篇
  • 人文
    2篇
  • 架构
    2篇
  • 数据结构与算法
    1篇
  • Redis
    1篇

展开全部 收起

上一篇:
MySQL的sequence解决方案
下一篇:
tuxedo 常见问题总结

目录

展开全部

收起

目录

展开全部

收起

上一篇:
MySQL的sequence解决方案
下一篇:
tuxedo 常见问题总结

分类专栏

  • UNIX/linux
    22篇
  • tuxedo
    8篇
  • linux shell
    5篇
  • vim
    2篇
  • 编译
    8篇
  • AIX
    2篇
  • oracle
    22篇
  • DOS
    2篇
  • 人文
    2篇
  • 架构
    2篇
  • 数据结构与算法
    1篇
  • Redis
    1篇

展开全部 收起

目录

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
表情包 代码片
  • HTML/XML
  • objective-c
  • Ruby
  • PHP
  • C
  • C++
  • JavaScript
  • Python
  • Java
  • CSS
  • SQL
  • 其它
 条评论被折叠 查看
被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值