综合架构的发展
大型网站架构特点
- 高并发,大流量:需要扛得住高并发,大流量的用户访问。Google日均PV数35亿,日均IP访问数3亿;腾讯QQ同时在线用户数过亿;淘宝双11当天活动交易额过百亿,活动开始的第一分钟独立访问用户数达千万
- 高可用:网站系统需要7*24小时不间断提供服务,大型网站的宕机事件通常都会成为新闻焦点,例如百度域名曾被黑客劫持无法访问。
- 海量数据,高可用数据库:需要存储,管理海量数据,使用大量的服务器
- 世界各地用户分布广泛,网络环境复杂:大型网站都是为全球用户提供服务,全球各地网络环境千差万别,即使国内也有多个运营商网络互通难的问题,面对海外用户还得假设海外数据中心。
- 服务器安全问题:互联网的开放性,很容易受到黑客攻击,需要保护服务器安全,保证数据安全。
- 需求快速变更,发布频繁:和传统应用比较不同,互联网产品为了快速满足市场需求,产品发布率很高,一天内网站发布几十次已是正常。
- 渐进式发展:即使是世界级大型网站,也都是由小型架构慢慢演变而来,如阿里巴巴本是在马云家中客厅诞生。
单体架构
单机模式,所有业务全部写在一个项目上,都在一个根目录下,所有的业务都由一台服务器除了,(开发代码,运维部署),简单粗暴,但是当业务增长到一定程度,这一个服务器将会奔溃,无法满足业务
集群结构
当单机模式到达奔溃时,就需要将单体的变成集群的,集群中的每台服务器就叫做这个集群的一个节点,每个节点都提供相同的服务,处理能力也是翻倍的,就算有一个节点掉线,也不影响整体
集群的特点
扩展性好:集群只是单机的多个复制,没有改变单机的原有的代码结构,每次部署新节点只需要复制部署即可。
负载均衡
用户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。
负载均衡:协调集群里的每个节点均衡地接受业务请求
淘宝架构成长史
1、单体架构
随着用户数的增长,Tomcat和数据库之间竞争资源,单机性能不足以支撑业务
2、第一次升级
随着网站业务的发展,用户量增多,一台服务器逐渐支撑不住,就要把应用发布在不同配置的服务器上运行
三个服务器的特点
应用服务器需要处理大量的业务逻辑,需要更强大,更快的CPU处理器
数据库服务器需要更快速的读写数据,因此需要更强大的磁盘和大内存
文件服务器要存储大量用户上传的文件,因此需要更大容量的硬盘。
第二次升级
网站的数据,就有热数据,冷数据之分,就要增加读取数据库内容的性能,所以要引进本地缓存,分布式缓存
布式缓存可以采用集群的方案,部署较大内存的服务器作为专门的缓存服务器,可以在理论上实现内存不受限的扩容服务,但是价格昂贵
第三次升级
通过上面的升级,数据库的压力得到了缓解,但随着用户越来越多,应用服务器的并发压力就会越来越大,解析能力就越来越慢,就要通过负载均衡集群的方式来改善
第四次升级
通过负载均衡工具,创建集群,解决了应用服务器的高并发,但数据库此时还处于单机模式,在网站达到一定程度,数据库就会负载压力过大
目前主流的数据库软件都提供了主从热备功能 ,配置两台数据库的主从关系,可以将一台数据库的数据,同步更新到另一台机器上。实现数据读写分离,减轻数据库负载压力。
数据库规划为读库(从库);写库(主库);
第五次升级
nginx负载均衡,已经可以支撑很高的并发了,但是如果时大型网站,每天都会有几十万,几百万的用户访问,nginx负载均衡就不够了。
因此依然是采用负载均衡的理念,运行多个nginx来分摊这个集中式的请求压力;
入口此时发现被修改为了叫做LVS、或是F5这样的软件,它俩也是提供负载均衡能力的软件,但是性能上比nginx更强悍,支持更高的并发,单机的F5就能扛得住支持几十万的用户请求,但是价格昂贵,是一台硬件负载均衡设备,需要企业估值成本;
第六次升级,DNS负载均衡
在DNS服务器中可以配置一个域名、解析到多个IP地址,每个IP地址对应不同地区的机房服务器IP。
用户在不同的地区访问www.taobao.com时,DNS服务器会自动判断该用户所在地区,然后选择离他最近的淘宝服务器,返回其IP地址提供访问。
实现了DNS负载均衡,让用户可以访问离自己最近的淘宝网服务器,这样的话,只要增加机房,扩大服务器规模,无论你是千万、千亿级别的并发量,都可以负载均衡、分发给在全国各地的机房了
第N次升级
到第六次升级,解决流量的的问题已经是基本解决了,在升级就是要进行微服务模式
业务以微服务模式运行后、不仅开发工作更细化了、运维部署也更加频繁,且细化了
容器时代
最主流的就是通过docker容器技术管理微服务应用,每一个微服务也就是一个个应用程序,全部运行在docker容器里,当容器数量过多后,你必须进行容器编排管理。
目前最主流的docker管理平台肯定是Kubernetes了。
云平台承载系统
使用容器化技术后服务动态扩缩容问题得以解决,但是物理机器还是需要公司自身来管理
在非大促的时候,还是需要闲置着大量的机器资源来应对大促,机器自身成本和运维成本都极高,资源利用率低,所以就促进了云平台的发展
云平台,就是把海量机器资源,通过统一的资源管理,抽象为一个资源整体,在之上可按需动态申请硬件资源(如CPU、内存、网络等)
提供通用的操作系统,提供常用的技术组件(如Hadoop技术栈,MPP数据库等)供用户使用
IaaS:基础设施即服务。对应于上面所说的机器资源统一为资源整体,可动态申请硬件资源的层面;
PaaS:平台即服务。对应于上面所说的提供常用的技术组件方便系统的开发和维护;
SaaS:软件即服务。对应于上面所说的提供开发好的应用或服务,按功能或性能要求付费。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 易语言 —— 开山篇
· Trae初体验