The open source, in-memory data store used by millions of developers as a database, cache streaming engine, and message broker.
一、Redis 概述与定位
Redis 是一种开源、内存型数据存储系统,广泛被开发者用作数据库、缓存、流处理引擎和消息代理。
最初定位为'消息中间件'(消息队列),但目前在生产环境中较少直接使用 Redis 作为消息队列,因为有更专业的替代方案。
Redis 本质是在内存中存储变量,适用于分布式系统,在单机环境下直接使用变量存储通常更优。
二、Redis vs MySQL
Redis 优势
访问速度快,适用于对性能要求高的场景。可作为数据库使用,读写性能远高于 MySQL。
Redis 劣势
存储空间有限,不如 MySQL 可扩展。更多互联网产品对性能要求并不极端,MySQL 仍能满足需求。
结合使用场景
可采用 Redis + MySQL 组合方案,利用'二八原则'(20% 热点数据满足 80% 访问需求)。需注意数据同步问题,系统复杂度会提升。
三、分布式系统概念
单机架构
只有一台服务器,负责所有业务与数据存储。许多公司的产品仍采用单机架构,现代单机性能已足够支撑高并发与大数据存储。
分布式系统出现原因
当业务增长导致单机资源(CPU、内存、硬盘、网络等)不足时,需引入多台主机。资源瓶颈可能导致请求处理变慢或出错。
扩展方式
开源:增加硬件资源(简单粗暴,但有上限)。 节流:软件优化(需定位性能瓶颈,对开发能力要求高)。 主板扩展能力有限,最终需引入多台主机,此时系统成为'分布式系统'。
分布式系统带来的影响
系统复杂度大幅提升。出现 Bug 的概率增加,维护成本随之上升。需进行服务分离(如应用服务与数据库服务分离)。需引入负载均衡机制,将请求分发到多个应用服务器节点。
分布式系统是'无奈之举',应在单机无法满足需求时再考虑。引入多台主机需软件架构相应调整,如负载均衡、服务拆分、数据同步等。系统设计需权衡性能、复杂度与维护成本,避免过度设计。
数据库主从架构
- 主服务器:通常只有一个,负责写操作。
- 从服务器:可以有多个,负责读操作。
- 负载均衡:从数据库通过负载均衡的方式让应用服务器访问,分担读压力,提高系统并发能力。
数据库采用一主多从架构。
分布式存储与数据扩展
- 分布式系统不仅为应对高并发,也需应对大数据存储问题。
- 单台服务器的存储容量有限(即使可达几十 TB),在某些场景(如短视频存储)仍可能无法满足需求。
- 解决方案:引入多台主机进行分布式存储,将数据分布在不同服务器上。
是否可能会出现一台服务器已经存不下数据了呢?当然会存在。虽然一个服务器存储的数据量可以达到几十个 TB,即使如此也可能会存不下。短视频场景下,一台主机存不下就需要多台主机来存储。
四、微服务架构
- 背景:传统单体应用服务器业务复杂、代码臃肿,难以维护。
- 微服务定义:将一个复杂的服务器按功能拆分为多个功能单一、独立部署的小型服务。
之前应用服务器,一个服务器程序里面做了很多的业务,这就可能会导致这一个服务器的代码变得非常复杂。为了更方便于代码的维护,就可以把这样的一个复杂的服务器,拆分成更多的、功能更单一、但是更小的服务器(微服务)。服务器的种类和数量就增加了。
微服务的优势
- 解决人的问题:便于团队按功能模块分工,提升开发与维护效率。


