Redis——了解分布式

分布式介绍

单机架构就是提供的所有服务都运行在同一台机器上(应用服务、存储服务等)。而当用户数量变多,服务器同一时刻需要处理的请求也会变多,就可能导致CPU,内存,磁盘,网卡中的某一种或者某几种资源不够用,影响用户体验甚至造成服务直接崩溃。而分布式架构主要就是通过引入更多的硬件资源(服务器)来解决资源不足的问题。

具体来说,分布式可以是将数据库服务和应用服务分别部署在不同的服务器上,再进一步的,除了将数据库服务部署在单独的服务器上,也将应用服务部署在不同的服务器上负载均衡(使用一个另外的服务器做分发器,这个服务器也可叫网关)

但是,分布式并不是一个替代单机架构的更好选择,因为分布式往往会引入更多问题,比如提高系统复杂度,降低响应速度,维护成本更高(出bug的可能更大)。所以分布式其实是因为单机资源有限的无奈之举。

几种分布式技术方案

应用数据分离架构

应用服务和存储服务分离,单机资源压力减小,管理更方便。

应用服务集群架构

把应用服务部署在多个服务器上实现负载均衡,可以让服务处理更多请求,也可以提升服务器的容错率(某个机器挂了之后还可用其他机器处理请求)

主从分离架构

还可以把数据库服务进行负载均衡,主服务器写,多个从服务器负责读(从服务器可以有多个,因为读的频率一般比写高得多)。可以减轻单个存储服务的压力(查询次数太多)。

冷热分离架构

数据库读访问比较慢,再加上网络通信就更慢了。所以可以在数据存储系统中增加一个缓存服务器,它把热点数据(被高频访问的)组织起来存储在内存中,用户读取数据首先从缓存服务器中查找,而内存访问速度比IO快很多。

这个架构有效是因为二八原则:20%的数据可以解决80%的请求,也就是说内存中只要存储20%的数据即可,也不会存不下。

其实这个缓存服务器就是redis常常被用到的位置。

垂直分库

如果数据量太大,一台数据库服务器不够存储下所有的数据那么就会把多个数据库(database)或者数据表分别存储在不同的服务器下,不同的数据库存储服务也可以使用上述的主从分离架构,所以单个数据库或者数据表的服务也形成了存储集群。

业务拆分

**把一个服务按照功能拆分成不同的微服务。分组管理有利于人员配置和模块专精,也便于功能复用。**坏处就是多个功能之间的调用依赖网络通信,会导致性能下降并且系统度上升复杂,维护成本更高。

所以微服务解决的就是一种管理问题,当然他也让单机压力进一步减小


中间件是什么

中间件就是与具体业务无关,功能比较通用的一种服务,比如说数据库服务,缓存服务,以及消息队列等。Redis就可以做这些中间件服务。

相关推荐
东北小狐狸-Hellxz1 小时前
Redis 哨兵搭建+ACL权限控制
数据库·redis
yh弓长12 小时前
Redis的list类及基础指令
redis·list
智脑API平台12 小时前
Codex 国内使用会封号吗?账号安全、中转站和合规边界说明
数据库·redis·缓存
迷途呀14 小时前
新闻头条后端:新闻缓存模块
前端·redis·python·缓存·fastapi
记忆停留w1 天前
从单体到微服务:Redis 协同 MySQL、Milvus、MinIO 搭建企业级RAG/AI Agent脚手架架构
大数据·人工智能·redis·微服务·ai·架构·milvus
吴声子夜歌1 天前
Redis 5.x——布隆过滤器
数据库·redis·缓存
程序员佳佳1 天前
模型网关灰度不是调百分比:把放量、观测和回滚做成账本
java·数据库·人工智能·redis·gpt·aigc·embedding
Devin~Y1 天前
电商场景下的Java面试实战:从Spring Boot微服务到Kafka、Redis与AI RAG
java·spring boot·redis·elasticsearch·spring cloud·微服务·kafka
风若飞1 天前
Tomcat 9.0.118 分布式 Redis Session 配置指南
redis·分布式·tomcat
宠友信息1 天前
Spring Boot与异步审核构建仿小红书源码内容发布全流程
java·数据库·spring boot·redis·mysql·oracle·uni-app