综合架构的发展

大型网站架构特点

  • 高并发,大流量:需要扛得住高并发,大流量的用户访问。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:软件即服务。对应于上面所说的提供开发好的应用或服务,按功能或性能要求付费。
posted @   张开嘴  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 易语言 —— 开山篇
· Trae初体验
点击右上角即可分享
微信分享提示