文章目录
- 一、分布式系统知识
-
- [1. 单机架构](#1. 单机架构)
- [2. 分布式系统](#2. 分布式系统)
- [3. 数据库分离](#3. 数据库分离)
- [4. 负载均衡与缓存](#4. 负载均衡与缓存)
- [6. 数据库分库分表](#6. 数据库分库分表)
- [6. 微服务架构](#6. 微服务架构)
- 二、分布式系统基本概念
-
- [1. 应用(Application)/ 系统(System)](#1. 应用(Application)/ 系统(System))
- [2. 模块(Module)/ 组件(Component)](#2. 模块(Module)/ 组件(Component))
- [3. 分布式(Distributed)](#3. 分布式(Distributed))
- [4. 集群(Cluster)](#4. 集群(Cluster))
- [5. 分布式 vs 集群](#5. 分布式 vs 集群)
- [6. 主从架构(Master/Slave)](#6. 主从架构(Master/Slave))
- [7. 中间件(Middleware)](#7. 中间件(Middleware))
一、分布式系统知识
Redis作为现代应用架构中的重要组件,在正式学习前最好先理解其背后的相关概念。
1. 单机架构
单机架构是最简单的系统部署方式,所有组件(应用、数据库、缓存等)都运行在单一服务器上。在这种架构中:
- 部署简单,无需考虑网络通信
- 数据访问快速(本地内存/磁盘)
- 但存在单点故障风险
- 性能受限于单台机器资源
Redis最初就是作为单机内存数据库设计的,即使在单机环境下也能显著提升应用性能,通过内存存储避免磁盘I/O瓶颈。

2. 分布式系统
对于单机架构有一个致命的问题,一台主机的硬件资源是有限的,包括但不限于:CPU、内存、硬盘、网络等,此时我们就需要引入更多的主机(硬件资源),即分布式架构:
分布式系统由多台计算机组成的系统,这些计算机通过网络通信协同工作。Redis在分布式环境中有两种主要形式:
- Redis集群:官方提供的分布式解决方案,数据分片存储在多个节点
- 主从复制:读写分离,提高读取性能
比如我们可以将单机架构中的数据库服务,单独分配给一个服务器:

这样对于存储服务器,需要更大的硬盘与更快的数据访问速度;对于应用服务器,需要配置较高的CPU与内存。就实现了分布式架构/
3. 数据库分离
在实际的应用场景中,一般读的频率是远高于写的频率的,因此我们可以采用数据库读写分离的方式提高整体效率。

这种情况一般是一主多从,即有一个主服务器,多个从服务器,数据库服务器通过负载均衡的方式让从服务器进行访问,主服务器负责派发任务。
4. 负载均衡与缓存
但尽管引入了数据库读写分离的技术,依然存在一个问题:
- 数据库中的数据是存储在硬盘中的,其访问速度是比较慢的。
- 如果我们将数据库中的数据放在缓存中,岂不是解决这个问题了?
- 缓存中的数据访问速度很快,但是其容量很小!!
- 在实际的应用场景中,数据库中的数据只有小部分是会被高频访问的,即20%的数据能够支持80%的访问量。
- 所以只要我们将被高频访问的小部分数据放在缓存中,就能很好的解决这个问题。
- Redis充当的就是整个系统中的"缓存"的功能
负载均衡将工作负载分配到多个计算资源上。Redis在负载均衡中扮演重要角色:
- 集中式会话存储(Session Storage)
- 缓存共享,使多个应用服务器能访问同一缓存池-
- 配合负载均衡器(如Nginx)实现请求分发
例如,用户请求被负载均衡器分配到任意应用服务器,所有服务器都能从同一Redis实例获取用户会话数据。
6. 数据库分库分表
我们针对数据库进行进一步的拆分,即分库分表。
- 对于一个数据库服务器,会有多个数据库(database)
- 我们可以引入多个数据库服务器,每个数据库服务器存储一个或部分数据库。
分库分表是将大数据库/表拆分为小的、更易管理的部分。Redis在这里的作用:
- 减轻查询压力:缓存复杂查询结果
- 掩盖分库分表复杂性:应用层通过统一缓存接口访问
- 提高JOIN操作效率:缓存关联结果
- 全局ID生成:为分片数据库提供唯一ID
例如,电商平台将订单表按用户ID分片,Redis可以缓存用户最近订单,避免跨分片查询。

6. 微服务架构
对于之前的应用服务器、一个服务器程序中有很多业务;
可能会导致服务器的代码变得越来越复杂。
为了方便维护代码与系统,可以把一个复杂的服务器,拆分为多个功能单一、体量更小的服务器;即微服务。
微服务将应用拆分为小型、独立的服务。
Redis的轻量级和高性能使其成为微服务架构的理想中间件。
微服务的优势:

二、分布式系统基本概念
1. 应用(Application)/ 系统(System)
定义 :
为实现特定服务目标而设计的独立程序或一组协同工作的程序集合。
生活类比 :
类似为完成项目任务而组建的团队(单人或多角色协作)。
2. 模块(Module)/ 组件(Component)
定义 :
在复杂系统中,将高内聚、功能明确的逻辑单元抽象为独立实体,以实现职责分离。
生活类比 :
军队执行任务时划分的职能小组(如突击组、爆破组),各司其职且协同运作。
3. 分布式(Distributed)
定义 :
系统的不同组件部署于多个物理主机,依赖网络通信实现协作的架构形态。
关键特征:
- 跨主机部署
- 网络通信依赖
生活类比 :
跨国企业团队分散在不同地区,通过远程协作完成工作。
4. 集群(Cluster)
定义 :
多台服务器上部署的同类组件集合,共同提供特定服务能力的逻辑实体。
典型场景:
- 数据库集群(如多MySQL实例)
- Web服务器集群
生活类比 :
军队集中炮兵部队形成火力打击单元,针对同一目标协同作战。
5. 分布式 vs 集群
核心区别:
维度 | 分布式 | 集群 |
---|---|---|
强调重点 | 物理部署形态 | 逻辑服务目标 |
组件关系 | 异构组件协作 | 同质组件冗余 |
通信要求 | 必须跨网络 | 可同主机或跨网络 |
6. 主从架构(Master/Slave)
定义 :
集群中通过角色划分实现责任分离的架构模式:
- 主节点:承担核心操作(如数据写入)
- 从节点:同步主节点状态并提供衍生服务
典型应用 :
MySQL主库(写操作)与从库(读操作)。
7. 中间件(Middleware)
定义 :
为异构系统提供标准化通信能力的桥梁软件,位于应用与底层资源(数据库/网络)之间。
核心价值:
- 解耦系统组件
- 标准化交互协议
生活类比 :
餐饮集团中央采购部门统一对接供应商与门店。