Redis 企业版多租户架构

在多租户架构中,单个软件实例可为多个不同的用户群(或“租户”)提供服务。每个租户的数据都会被安全隔离,确保其对其他租户不可见且无法访问。这类似于一栋公寓楼,每位住户都在共享建筑内的独立单元中生活,彼此互不干扰。

在 Redis 中,多租户意味着单个服务器能够高效管理多个租户的需求,同时确保每个租户的数据都安全且独立存储。这种方法的主要优势包括运营效率和成本效益。因为它能够最大化资源利用率,而无需为每个新租户增加额外的物理基础设施,从而简化并提升业务扩展的能力。

使用 Redis,你可以在本地部署或任何受控的云基础设施上创建多租户环境。这一特性对于采用微服务架构的内部应用开发尤为重要。通过多租户模式,你可以避免为每个开发、测试或生产环境单独构建和维护基础设施的复杂性和高成本,使得并行构建和测试更加轻松高效,且大幅减少工作量。

多实例部署中的 Redis

CRDB(无冲突复制数据库) 是一个跨多个 Redis Enterprise 集群创建的数据库,这些集群通常位于全球不同的数据中心。每个参与集群中的数据库称为 “CRDB 实例”。只要 CRDB 数据集的大小适配 CRDB 实例的内存,每个 CRDB 实例都可以采用不同的配置——它们可以由不同数量的分片组成,并运行在不同数量或类型的集群节点上。

1. 多实例部署

多租户架构和多实例架构存在显著差异。在多实例架构中,每个租户都会安装一个新的软件实例。下图展示了 Redis 的多实例架构示例。在这种情况下,每个租户都会部署一个新的 Redis 实例,以满足数据隔离的需求。然而,随着租户数量的增长,部署、监控、维护和升级多个软件实例的复杂性也随之增加。

2. 通过虚拟化/容器化实现多租户

在这种模式下,Redis 作为容器或虚拟机进行部署,由底层管理系统根据需要启动新的 Redis 实例。多租户的管理在服务器或基础设施层面完成,确保每个租户的操作都保持隔离和安全。

这种方法与多实例架构类似,尽管管理层简化了 Redis 服务的供应和启动流程,但需要监控和管理的 Redis 实例数量并未减少。

许多常见的云服务(如 Amazon ElastiCache)都采用了这一模式。这些服务的收费方式通常基于使用的 Redis 实例数量。虽然这类服务的可扩展性可以带来一定的规模效应,但这类优势往往更有利于服务提供商,而非最终用户。

3. Redis 的多租户架构

Redis 提供软件层面的多租户能力,在单次部署(通常是一个节点集群)中高效支持数百个租户。每个租户都会被分配一个独立的 Redis 端点,确保与其他租户完全隔离。这种方式不仅提高了资源利用率,同时也增强了数据库的安全性和性能。

在数据中心、私有云或虚拟私有云(VPC)中部署 Redis,可以充分利用多租户架构的经济优势。通过一个包含少量 Redis 节点的集群,就能支持从开发和测试到正式生产的各种需求。这种架构使得企业能够在同一基础设施上,高效满足不同租户的多样化需求。

多租户架构的运作形式

我们的架构通过多个抽象层来实现多租户、高可用性、线性扩展和高吞吐量等能力。以下是主要组件的解析:

节点(Node)

节点是 Redis 软件运行的基础硬件单元,可以是物理服务器、虚拟机、容器或云实例。

数据层(Data Plane)

  • 分片(Shard):Redis 的核心组件是分片,它是运行在单个 CPU 核心上的独立 Redis 实例。每个分片管理整个数据集的一部分,并独立运行,以提升性能和可扩展性。
  • 数据库(Database):数据库是租户数据的逻辑端点,可根据数据规模和吞吐需求分配多个分片。此外,持久化、复制、数据淘汰策略以及通过闪存扩展 RAM 等功能均可在数据库级别进行配置。数据库通过在不同节点间分布主数据库和副本数据库来确保高可用性。

数据库类型

  • 简单数据库(Simple Database):仅包含一个主分片。
  • 高可用(HA)数据库:包含一个主分片和一个或多个副本分片。

  • 集群数据库(Clustered Database):包含多个主分片,每个分片管理部分数据集。
  • 高可用集群数据库(HA Clustered Database):包含多个主-副本分片对,提供更高的容错能力。

控制层(Control Plane)

零延迟代理(Zero Latency Proxy):集成于每个节点的多线程代理,负责将客户端的 Redis 操作路由到正确的数据库分片。它确保请求被精准地定向至相应的分片,从而保持高效运行。

集群管理器(Cluster Manager):由一组分布式进程组成,负责整个集群的生命周期管理。该组件独立于数据路径(Data Path)部分,承担以下关键任务:

  • 数据库的创建与删除:确保资源得到最优利用。
  • 自动扩展(Automatic Scaling):根据负载需求自动调整资源,以应对峰值工作负载。
  • 自动分片重组(Automatic Resharding):优化数据分布,确保高吞吐量和低延迟性能。
  • 自动负载均衡(Automatic Rebalancing):维护实时性能,并优化资源利用率。
  • 资源管理(Resource Management):持续监控整个系统的健康状态。
  • 节点监控(Node Watchdog):监测每个 Redis 节点上的进程,并在检测到分片故障时触发故障转移事件。
  • 集群监控(Cluster Watchdog):确保 Redis 集群节点的健康状态,并在检测到节点故障时触发恢复操作。

Redis 提供了丰富的部署能力,唯一的限制是整个集群的可用内存总量。每个数据库端点都被分配了一个完全限定域名(FQDN),并且所有节点上的零延迟代理(Zero Latency Proxy)会高效地将客户端请求重定向到正确的主分片(Primary Shard)。

降低成本,高效运作

Redis 多租户架构的价值

Redis 的多租户解决方案带来了显著的优势:

  • 降低基础设施成本:Redis 通过在单个集群中运行多个 Redis 数据库端点,最大化基础设施利用率。例如,在一个三节点集群上,你可以运行数百个数据库端点。得益于底层的时间分片机制,数据库实例的数量可以远超可用 CPU 核心数量。Redis 在使用所有可用的物理资源后,才会发出扩展资源的信号。而相比之下,其他方案(如 ElastiCache)通常每个节点或集群只能提供一个数据库端点,导致更高的额外成本。
  • 无缝扩展:如果需要,Redis 允许你通过增加分片来扩展数据库,并将其分布到多个节点上。Redis 架构确保这一过程不会影响其他租户(即数据库)。

  • 灵活调整 HA、持久化、数据淘汰和数据大小:不同的应用对数据持久性和高可用性的要求各不相同。在 Redis 中,你可以独立调整每个数据库的配置,而不会影响运行在同一节点上的其他数据库。
  • 开发、测试、生产环境的敏捷性:一旦 Redis 集群搭建完成,开发人员可以按需创建 Redis 数据库端点,而无需考虑底层的物理或云端基础设施。

Redis 作为经过市场验证的多租户解决方案,驱动着 Redis Cloud 的运行,确保所有数据库既能满足性能需求,又能避免“邻噪效应”,并在分布式环境中保持高可用性。目前,Redis 已在 AWS、Azure 和 Google Cloud 等主要云平台上运行超过 50,000 个数据库端点,全球近 10,000 家企业信赖 Redis 来支持其核心应用。

Redis 的无共享架构优势

Redis 采用无共享架构(Shared-Nothing Architecture),将数据路径组件(如代理和分片)与控制和管理组件(如集群管理进程)彻底分离。这种架构提供了以下优势,解决了多租户架构中的关键挑战:

  • 性能:数据路径组件专注于处理用户请求,提高整体性能。每个分片都像一个独立的 Redis 实例运行,不需要监控其他实例或管理网络分区,从而最大程度减少来自其他租户的干扰。
  • 高可用性:即使在分片、重分片和负载均衡过程中,应用仍能持续访问数据。Redis 会自动管理数据可用性,无需人工干预,确保业务不中断。

  • 安全性与数据隐私:Redis 通过受限的 CLI、UI 或 API 进行基于角色的访问控制,确保所有配置命令的安全性。基于代理的架构确保每个分片仅与经过身份验证的实体交互,并处理经过验证的请求,从而防止未经授权的访问,增强租户间的数据隐私保护。
  • 可管理性:数据库的创建、配置更改和软件更新可以通过 UI 或 API 统一管理,并且不会影响用户流量,确保系统平稳运行和资源高效分配。
  • 可扩展性与资源分配:无共享架构支持横向扩展,能够将数据集合理分布到多个节点、服务器和集群。这不仅能满足业务增长需求,还能合理分配资源,避免单个租户占用过多系统资源,确保所有租户都能公平使用系统资源。

真实案例:Redis 在企业中的应用

Redis 的多租户架构已被众多企业成功部署,例如:

  • 大型电商企业:该企业利用 Redis 多租户架构管理不同部门(如销售、市场、库存)的数据,每个部门作为独立的租户运行,确保数据隔离和高效利用资源。
  • SaaS 服务商:某 SaaS 企业使用 Redis 来管理不同客户的数据,每个客户都是一个独立的租户,数据完全隔离。这种架构确保数据隐私,同时优化基础设施成本。

  • Redis 作为内部 PaaS 服务(RaaS):许多公司在内部部署 Redis 作为服务(Redis-as-a-Service),为不同团队提供标准化、集中管理的 Redis 资源,提升运营效率。

Redis 多租户架构的安全保障

安全性是多租户环境中的核心问题。Redis 采用多重安全措施,确保数据隔离,每个租户的数据对其他租户完全不可见、不可访问。此外,Redis 还部署了强大的安全机制,如:

  • 严格的访问控制,确保只有授权用户能够访问数据库
  • 定期安全审计,排查潜在漏洞

  • 最新的加密标准,确保数据在传输和存储过程中的安全性

这些安全措施为企业提供了额外的保障,确保多租户环境下的数据安全,建立客户信任。

Redis企业版
将更多设想变为现实