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

前言

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

前置概念

应用 / 系统

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

模块 / 组件

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

分布式

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

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

集群

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

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

主 / 从

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

中间件

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

例如我们的 Redis 、 RabbitMQ

评价指标

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

可用性

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

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

响应时长

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

吞吐 / 并发

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

架构演化

单机架构

将所有的服务部署到一台服务器上的架构就是单机架构

应用数据分离架构

当访问量上来的时候,我们会将数据库剥离出来,单独部署到一个服务器上。

应用服务集群架构

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

读写分离 / 主从分离架构

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

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

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

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

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

分库分表

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

微服务

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

相关推荐
qq_12498707532 小时前
基于Hadoop的信贷风险评估的数据可视化分析与预测系统的设计与实现(源码+论文+部署+安装)
大数据·人工智能·hadoop·分布式·信息可视化·毕业设计·计算机毕业设计
Coder_Boy_4 小时前
基于Spring AI的分布式在线考试系统-事件处理架构实现方案
人工智能·spring boot·分布式·spring
袁煦丞 cpolar内网穿透实验室5 小时前
远程调试内网 Kafka 不再求运维!cpolar 内网穿透实验室第 791 个成功挑战
运维·分布式·kafka·远程工作·内网穿透·cpolar
人间打气筒(Ada)5 小时前
GlusterFS实现KVM高可用及热迁移
分布式·虚拟化·kvm·高可用·glusterfs·热迁移
xu_yule5 小时前
Redis存储(15)Redis的应用_分布式锁_Lua脚本/Redlock算法
数据库·redis·分布式
難釋懷10 小时前
分布式锁的原子性问题
分布式
ai_xiaogui11 小时前
【开源前瞻】从“咸鱼”到“超级个体”:谈谈 Panelai 分布式子服务器管理系统的设计架构与 UI 演进
服务器·分布式·架构·分布式架构·panelai·开源面板·ai工具开发
凯子坚持 c11 小时前
如何基于 CANN 原生能力,构建一个支持 QoS 感知的 LLM 推理调度器
分布式
飞升不如收破烂~11 小时前
Redis 分布式锁+接口幂等性使用+当下流行的限流方案「落地实操」+用户连续点击两下按钮的解决方案自用总结
数据库·redis·分布式