您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

大型网站架构演进

时间:2023-07-17 14:30:22  来源:微信公众号  作者:彭彭架构笔记
不同企业,不同用户量的系统在不同发展阶段面临着不同的痛点。一个系统从小往上成长的过程,也就是大型网站架构演进的过程。

如上图。单主机阶段,这个阶段应用和数据库部署在同一个主机里。此时的用户量非常少,通常在1万以内。这个阶段的系统大多处于验证阶段,对高可用需求也是可有可无,对成本控制倒是非常敏感。

如上图。数据库分离单独部署阶段,这个阶段将数据库从原来的共用的那台主机里分离出来部署到数据库专用的主机上。随着用户规模的逐渐发展,单台主机已经逐渐支撑不住并发流量了,而且随着市场验证,数据的价值开始凸显,也有了对数据做备份的需求。于是数据库被单独分离出来部署到性能更好的主机上并做了初步的数据备份。

如上图。负载均衡阶段,这个阶段应用使用集群部署并使用负载均衡转发请求以分散单个主机节点压力。用户规模的持续增加让单个业务系统节点无法支撑高峰期所有的并发流量,于是应用被改造成无状态服务,而且在应用的前面使用了负载均衡器,由负载均衡器转发流量给应用。这个阶段虽偶尔有慢SQL产生,但一般能通过建索引等措施快速解决问题。
 

如上图。分布式缓存阶段,这个阶段增加了分布式缓存或多级缓存来减轻系统流量对数据库的读压力。在上一阶段由于应用无状态化改造后,应用的伸缩变得更容易了,随着应用节点的增多和用户流量的增加,系统的压力明显转向数据库了。此时的表现通常是慢SQL增多,或者虽然单个SQL查询走了索引执行计划也最佳,但架不住请求量太多。于时开始有了分布式缓存服务,将热点数据缓存起来并设置一定的过期策略,这样大量的读请求先到缓存查询没有结果再查数据库,大大减轻了对数据库的读压力。这个阶段大概能支持百万级注册用户了,多数的中小规模系统穷极一生大致也就处于这一阶段。

如上图。分布式文件系统阶段,这个阶段将系统中的图片和其它非结构化的文件单独使用分布式文件系统存取。在前面服务无状态改造时,对于此类附件类的文件一般会有各种共享存储或集中存储的方案,如使用FTP或者NAS共享存储的,但随着业务发展,这部分业务的IO性能和容量瓶颈已经到来,也就产生了将这部分业务剥离出来单独使用分布式文件系统来存取和管理的需求。

如上图。读写分离阶段,这个阶段将数据库分为主库和从库,新增的从库承担非实时读的职能。虽然前面增加了分布式缓存后,对数据库的热点读压力已经大幅度减少,但始终单个数据库的读能力仍然有上限。而且还有管理后台和报表这些非核心服务查询主库也造成了不小的压力,这类报表通常SQL复杂多变又难于添加缓存,对于此类非实时查询的业务,可以通过读写分离再次减轻主库的读压力。如果单个从库遇到读瓶颈了,还可以配置一主多从,提供更多的从库一起来承担非实时读压力。读写分离的架构图如下:

 
 

 
如上图。搜索分离阶段,这个阶段将搜索从数据库和系统中剥离出来使用专业的分布式搜索引擎实现。对于提供了C端搜索功能的业务系统,早期使用数据库实现的搜索效率非常低,在用户并发请求量大时会大幅拖累数据库。数据库对全文索引和地理位置的支持非常有限,所以使用分布式搜索引擎将这部分剥离出去独立实现。搜索分离其实本质是读写分离的一种特殊形式,读写分离是使用从库承担非实时读压力,而搜索分离是使用搜索引擎承担搜索业务读请求压力。

如上图。垂直分库阶段,这个阶段通常会配合子系统或微服务的建设将不同的业务领域的主库分离,形成每个业务领域一个主库多个从库的架构。截止到前面,我们扩展的都是系统的读能力,虽然多数业务是读多写少,但随着海量并发请求的到来,最终的瓶颈始终会出现在主库的写能力上,是时候考虑扩展写能力了。
分表阶段,这个阶段通常是单表的容量或并发服务能力已经遇到了瓶颈,分为垂直分表和水平分表。垂直分表与垂直分库类似,垂直分库是按业务将一个大库垂直分多个小库,而垂直分表就是将一个大表按字段拆成多个字段较少的小表的过程。水平分表则是将一个表的记录按数据范围写到同一个库或者其他库中结构相同的表里,最常见的范围分表和哈希分表,如下图:

 

 
随着分布式数据库的发展,多数的分布式数据库原生就提供了数据分片和强大的伸缩能力。通过这些能力无需应用层的介入就能实现以前需要通过分库分表和读写分离才能达到的效果。虽然目前分布式数据库的技术仍然在发展和完善中,但趋势已经非常明显,技术的发展已经大幅度降低开发人员应对海量并发请求的技术门槛。


Tags:网站架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
大型网站架构演进
不同企业,不同用户量的系统在不同发展阶段面临着不同的痛点。一个系统从小往上成长的过程,也就是大型网站架构演进的过程。如上图。单主机阶段,这个阶段应用和数据库部署在同一...【详细内容】
2023-07-17  Search: 网站架构  点击:(61)  评论:(0)  加入收藏
图文并茂!谈谈网站架构演进
最近在读大型互联网架构这本书,今天想你一起唠嗑唠嗑架构,你可能耳熟能详的高并发、大流量、海量数据、分布式等等这些词汇,但是每个词汇背后其实都是为了解决当前所出现的问题...【详细内容】
2023-05-16  Search: 网站架构  点击:(377)  评论:(0)  加入收藏
跟着架构师学习大型网站架构的技术细节:前端架构需要解决的问题
前端架构需要解决的问题前端网页就是这么简单,除去图片、视频等资源外只有三部分,即标记网页元素的HTML、设置元素样式的CSS和负责交互处理的JavaScript。在软件开发上,普遍认...【详细内容】
2022-10-24  Search: 网站架构  点击:(349)  评论:(0)  加入收藏
 IIS网站架构经常快照被劫持跳转
距离2022年元旦约越来越近,我们发现很多网站用IIS环境尤其是aspx+sqlserver架构的网站总是被攻击,具体症状首先是接到阿里云的通知说是有违规URL通知,然后过了几天发现百度site...【详细内容】
2021-12-21  Search: 网站架构  点击:(155)  评论:(0)  加入收藏
网站架构变迁
网站架构变迁Intro从最早的 html 的学习到现在从单体应用迁移到微服务架构,所经历的网站架构也一直在变化,想写一篇关于网站架构变迁的文章。单服务器最早的我们的网站只有一...【详细内容】
2020-05-08  Search: 网站架构  点击:(317)  评论:(0)  加入收藏
网站架构设计分析及分层架构要素
为了使网站这个虚拟的大建筑能够应对高并发访问,海量数据处理,高可靠运行等一系列问题,架构要素和分层架构是必不可少的,就犹如盖房子要用建筑材料一层一层盖一样。满山红网站...【详细内容】
2020-01-09  Search: 网站架构  点击:(327)  评论:(0)  加入收藏
大型网站架构设计 10 步骤,大流量高并发不用慌
一、大型网站系统的特点高并发,大流量: 需要面对高并发用户,大流量访问,Google日均PV数为35亿,日均IP访问数为3亿,2011年腾讯QQ最大用户在线数1.4亿,淘宝2012年双11活动一天交易额...【详细内容】
2019-10-22  Search: 网站架构  点击:(594)  评论:(0)  加入收藏
十张图带你了解大型网站架构
说道大型网站,就的先说大型网站的特点:高并发,大流量,高可用,海量数据等。下面就说说大型网站的架构演化过程吧。1、初始阶段的网站架构初始阶段都比较简单,通常一台服务器就可以...【详细内容】
2019-10-08  Search: 网站架构  点击:(716)  评论:(0)  加入收藏
大型网站架构设计与方法总结
大型网站架构设计是一个循序渐进的过程,围绕“性能、可用性、伸缩性、扩展性、安全性”展开,下面是个人关于网站架构方面的一些总结,不到之处请大家多多批评。前端 CDN加速:CSS/...【详细内容】
2019-10-08  Search: 网站架构  点击:(744)  评论:(0)  加入收藏
网站架构模式
最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责。网站一般分为三个层次:应用层、服务层和数据层,其具体结构如下图所示:...【详细内容】
2019-09-10  Search: 网站架构  点击:(1042)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(11)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(9)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(115)  评论:(0)  加入收藏
站内最新
站内热门
站内头条