惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
C
CERT Recently Published Vulnerability Notes
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
Jina AI
Jina AI
S
SegmentFault 最新的问题
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
J
Java Code Geeks
V
Visual Studio Blog
腾讯CDC
博客园 - 【当耐特】
博客园 - 司徒正美
小众软件
小众软件
宝玉的分享
宝玉的分享
博客园 - Franky
量子位
有赞技术团队
有赞技术团队
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
美团技术团队
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
N
News | PayPal Newsroom
D
Docker
Google Online Security Blog
Google Online Security Blog
博客园 - 聂微东
A
About on SuperTechFans
S
Security Affairs
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Securelist
T
The Exploit Database - CXSecurity.com
爱范儿
爱范儿
MyScale Blog
MyScale Blog
V
Vulnerabilities – Threatpost
S
Security @ Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Application and Cybersecurity Blog
Application and Cybersecurity Blog
P
Palo Alto Networks Blog

博客园 - 古道轻风

分布式亿级流量整体架构设计原则 架构师必备的37项技能清单 ChatGPT是如何产生心智的? 如何保障MySQL和Redis的数据一致性? 用惨痛教训换来的156条MySQL设计规约 浅谈MySQL读写分离的坑以及应对的方案 架构应用总结 架构设计如何绘图? 高可用架构之异地多活 单体到微服务架构服务演化过程 电商系统架构演进 使用try-convert将.NET Framework项目迁移到.NET Core .netframework迁移到.netcore方法 拆解零售商品架构的底层逻辑 你真的了解TDD和BDD吗 一文搞懂业务架构、技术架构、数据架构、运维架构、物理架构理清不同视角的架构 数仓建设七大规范指南 ​如何一步步让MySQL支撑亿级流量 架构师必须掌握的架构设计原则
大型网站架构演进过程
古道轻风 · 2023-10-08 · via 博客园 - 古道轻风

架构演进

大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得很棘手。大型网站架构主要就是解决这类问题。

架构选型是根据当前业务需要来的,在满足业务需求的前提下,既要有足够的扩展性也不能过度设计,每次的架构升级都是为了解决系统瓶颈而做的。

初始阶段的网站架构

初始阶段都比较简单,通常一台服务器就可以搞定一个网站了,看图。

图片

应用服务和数据服务分离

随着网站业务的发展,一台服务器逐渐不能满足需求;这时候就需要将应用和数据分离,如图。

图片

使用缓存改善网站性能

毫无疑问,现在的网站基本上都会使用缓存,即:80%的业务访问都会集中在20%的数据上。

图片

使用应用服务器集群改善网站的并发处理能力

因为单一应用服务器能够处理的请求连接有限,在网站访问高峰时期,应用服务器会成为整个网站的瓶颈。因此使用负载均衡处理器势在必然。通过负载均衡调度服务器,可将来自浏览器的访问请求分发到应用的集群中的任何一台服务器上。

图片

数据库读写分离

当用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。而目前主流的数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库的数据更新同步到另一台服务器上。网站利用数据库这一功能实现数据库读写分离,从而改善数据库负载压力。

图片

使用反向代理和CDN加上网站相应

提高网站的访问速度,主要手段有使用CDN和反向代理。

CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,而反向代理是部署在网站的中心机房,当用户请求到达中心机房后,首先访问的反向代理,如果反向代理缓存着用户请求的资源,则直接返回给用户。

图片

使用分布式文件系统和分布式数据库系统

任何强大的单一服务器都满足不了大型网站持续增长的业务需求。

分布式数据库时网站数据库拆分的最后手段,只用在单表数据规模非常大的时候才使用。不到不得已时,网站更常用的数据库拆分手段是业务拆分,将不同业务的数据部署在不同的物理服务器上。

图片

使用NoSQL和搜索引擎

搜索引擎也基本已经形成现在大型网站必须提供的功能了,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。

图片

业务拆分

大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将真个网站业务拆分成不同的产品线。

具体到技术上,也会根据产品线话费,将一个网站拆分成许多不同的应用,每个应用独立部署维护。应用之间可以通过超链接建立管理,也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。

图片

分布式服务

由于每一个应用系统都需要执行许多相同的业务操作,比如用户管理,session管理,那么可以将这些公用的业务提取出来,独立部署。

图片

作者|顶尖架构师栈