当前位置: 首页 > news >正文

服务端高并发分布式结构演进之路

前言

在进行 Redis 学习之前,我们先来了解一下服务端高并发分布式演化的过程。

前置概念

应用 / 系统

应用 / 系统 是 为了实现一整套服务的一个程序或者一组相互配合的程序群

模块 / 组件

当应用较为复杂的时候,我们会将其中具有清晰职责、内聚性强的部分拆分出来,这就是 模块 / 组件

分布式

将上述的不同的模块部署到不同的服务器上,那么这个系统就被我们称为 分布式系统。

例如:我们将数据库剥离出来,放在单独的服务器上,该服务器专门提供数据库服务,然后将 Web 服务器部署到不同的服务器上,这个系统就是分布式系统

集群

我们将数据库剥离出来放在一个服务器上,我们会发现,服务器的读写操作使用频率不同,为了更好地李彤数据库,我们继续拆分,使用多个服务器部署数据库,这一群数据库服务器被我们称为集群

集群的概念就是:被部署到多态服务器上的并且是为了实现特定目标的一个/一组特定的组件,整个整体被称为集群

主 / 从

在集群的例子中,我们发现数据库读写操作的频率不同,一般来说,读操作的频率会大于写操作的频率,因此我们可以将数据库服务器划分为主服务器和从服务器,从服务器负责读操作,主服务器负责增删改操作,从服务器的数据会实时同步主服务器的数据。

中间件

中间件是一类提供不同应用程序用户相互通信的软件,即处于不同的技术、工具和数据库之间的桥梁。
例如我们的 Redis 、 RabbitMQ

评价指标

我们评价一个系统的时候,往往会使用下面的指标的进行评价。

可用性

考察单位时间段内,系统可以正常提供服务的概率 / 期望

例如:年化系统可用性 = 系统正常提供服务时长 / 一年总时长

响应时长

用户完成输入到系统输出给用户反应的时长就是响应时长

吞吐 / 并发

吞吐考察单位时间段内,系统可以成功处理的请求的数量,并发指系统统一时刻支持的请求最高量。

架构演化

单机架构

在这里插入图片描述
将所有的服务部署到一台服务器上的架构就是单机架构

应用数据分离架构

当访问量上来的时候,我们会将数据库剥离出来,单独部署到一个服务器上。
在这里插入图片描述

应用服务集群架构

当访问进一步上升,我们的 Web 服务器无法承担,我们就会引入更多的 Web 服务器,同时加上负载均衡,让每台 Web 服务器都能均衡地接收和处理 请求。

在这里插入图片描述

读写分离 / 主从分离架构

该架构针对的是我们数据库服务器,由于请求量的上升,一台数据库服务器可能无法满足需求,于是引入更多的数据库服务器,那么我们就可以将一台服务器作为主数据库服务器,其他作为从服务器,主服务器负责增删改操作,从服务器负责读操作,这就是读写分离,主从分离架构。

在这里插入图片描述

引入缓存 —— 冷热分离架构

我们知道直接操作数据库本质上就是对硬盘进行 IO 操作,这个效率是极低的,如果要提高效率,我们可以引入类似的读内存的数据库,例如 Redis,直接对内存进行读操作,这样效率就会提高很多,大家可能会疑惑,如果将数据库的数据全部转移到内存中,内存不就直接爆炸了吗?

并不会,因为我们的内存只存储热点数据,热点数据就是用户经常会访问的数据,这一部分热点数据相比于整个数据的数据来说,就是冰山一角,内存是完全有能里存储这些热点数据的。

如果用户访问的数据在内存中找不到,就会将请求发送给数据库服务器,再对硬盘进行 IO 操作。
在这里插入图片描述

分库分表

当数据量大到一个数据库无法存储下来的时候,我们会进行分库分表操作,将数据库进一步划分,把这些库表再单独部署到不同的服务器上:

在这里插入图片描述

微服务

微服务是对业务进行拆分,例如一个业务很大的时候,我们可以将不同的需求的处理部署到不同的集群中,这样有利于程序员的管理,一个团队负责业务的其中一个功能,维护其中一个集群。
在这里插入图片描述

相关文章:

  • 51单片机,两路倒计时,LCD1602 ,Proteus仿真
  • ubuntu的虚拟机上的网络图标没有了
  • Go语言中函数 vs 方法
  • STM32项目实战:ADC采集
  • Gartner《如何将生成式人工智能(GenAI)集成到应用架构》学习心得
  • elementplus menu 设置 activeindex
  • 探索用户行为数据分析——从基础查询到高级分析 【GaussDB(for MySQL)】
  • DeepSeek本地部署全攻略:从零搭建到Web可视化及数据训练
  • Java程序员学AI(一)
  • Linux(2)——shell原理及Linux中的权限
  • GLPK(GNU线性规划工具包)中建模语言MathProg的使用
  • MySQL 数据库备份与还原
  • Python训练营打卡 Day29
  • tomcat查看状态页及调优信息
  • 【数据结构】1-3 算法的时间复杂度
  • 掘金欧洲宠物经济新蓝海:比利时天然宠粮市场爆发与跨境新机遇
  • OpenSearch入门:从文档示例到查询实战
  • Linux `touch` 命令深度解析与高阶应用指南
  • 【Linux】第十七章 归档和传输文件
  • 大学量化投资课程
  • 物流网站做代理/seo的优化流程
  • 咸宁网站制作培训/网络营销七个步骤
  • 网站设计怎么做链接/图片外链生成工具在线
  • 电商网站页面布局/百度关键词挖掘工具爱站网
  • 作文网推荐/站长工具seo综合
  • 旅社网站建设/潍坊网站排名提升