dot 快速的未来正在您的城市举办的活动中。

加入我们参加 Redis 发布会

Redis 企业版中的多租户

在多租户架构中,单个软件实例为许多不同的用户组(或“租户”)提供服务。每个租户的数据都被安全地隔离,确保它对其他人不可见且不可访问。可以把它想象成一栋公寓楼,人们住在共享建筑物中独立隔离的单元里。

在 Redis 中,多租户是指单个服务器有效地管理各个租户的需求,每个租户都安全地独立地维护其数据。这种方法的关键优势包括运营效率和成本效益。这是因为它提供了最大程度的资源利用率,而无需为每个新租户提供额外的物理基础设施,从而简化业务运营并提高可扩展性。

使用 Redis,您可以在您控制的本地或任何云基础设施中创建多租户环境。如果您使用微服务开发内部应用程序,此功能特别有价值。通过采用多租户方法,您可以避免为每个开发、测试或生产环境构建和维护独立基础设施的复杂性和成本。这意味着您可以并行构建和测试,并显著减少工作量。

Redis 在多实例部署中的应用

  1. 多实例部署

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

multi-instance architecture
  1. 通过虚拟化/容器化实现多租户

在这种情况下,Redis 作为容器或虚拟机部署,底层管理系统负责根据需要启动新的 Redis 实例。多租户是在服务器或基础设施级别处理的,确保每个租户的操作都保持隔离和安全。这种方法与多实例设置非常相似,尽管管理层简化了新的 Redis 服务的配置和启动,但需要监控和管理的 Redis 实例数量没有改变。

许多常见的服务,例如 Amazon ElastiCache,都采用这种模式。这些服务根据使用的 Redis 实例数量收费。虽然这种定价模式和这些服务的可扩展性通常会带来规模经济和范围经济,但这些优势往往有利于服务提供商而不是最终用户。

ElastiCache
  1. Redis 中的多租户

Redis 提供软件多租户功能,其中单个部署(通常是节点集群)有效地支持数百个租户。每个租户都被分配一个独特的 Redis 端点,确保与其他租户完全隔离。这最大限度地提高了效率,同时提高了整个数据库设置的安全性和平。

cluster of nodes

在您的数据中心、私有云或虚拟私有云中部署 Redis 可以利用我们多租户架构的经济优势。使用单个节点集群(包含几个 Redis 节点),您可以支持从开发和测试到全面生产的各种活动。这种设置使您能够在相同的基础设施中有效地满足不同租户的不同需求。

我们的多租户架构的工作原理

我们的架构在多个抽象级别上进行分层,以实现多租户、高可用性、线性扩展和高吞吐量等功能。以下是主要组件的细分。

节点

节点是 Redis 软件运行的硬件基础——无论是物理服务器、虚拟机、容器还是云实例。

数据平面:

分片:Redis 的核心是分片,它是运行在单个 CPU 内核上的 Redis 的核心实例。它管理整个数据集的一个子集,独立运行以提高性能和可扩展性。

数据库:每个数据库充当租户数据的逻辑端点。您可以根据数据大小和吞吐量需求将多个分片分配给一个数据库。诸如持久性、复制、驱逐策略和使用闪存扩展 RAM 等功能可以在数据库级别配置。数据库通过在不同节点上分布主数据库和辅助数据库来确保高可用性。数据库类型包括

  • 简单数据库:单个主分片
  • 高可用性 (HA) 数据库:一个主分片和一个或多个副本分片
  • 集群数据库:多个主分片,每个分片处理数据集的一部分
  • HA 集群数据库:多对主分片和副本分片
databases

控制平面:

零延迟代理:集成到每个节点中,这个多线程代理将来自客户端的 Redis 操作路由到正确的数据分片。它确保请求被定向到适当的分片,保持高效的运行。

集群管理器:此组件由一组分布式进程组成,这些进程管理整个集群的生命周期。与数据路径组件分离,集群管理器负责

  • 数据库配置和取消配置:确保最佳资源利用率
  • 自动扩展:调整资源以处理峰值负载
  • 自动重新分片:确保高吞吐量和低延迟性能
  • 自动重新平衡:保持高吞吐量和实时性能
  • 资源管理:监控整个系统的运行状况
  • 节点监视器:监督每个 Redis 节点上的进程,在必要时触发分片失败事件
  • 集群监视器:确保 Redis 集群节点的运行状况,在必要时触发节点失败事件
cluster paths

有很多部署功能,唯一的限制是整个集群的可用内存。每个数据库端点都被分配一个完全限定的域名 (FQDN),所有节点上的零延迟代理有效地将客户端请求重定向到正确的主分片。

使用多租户降低成本,提高工作效率

Redis 的多租户解决方案带来了巨大的价值

降低基础设施成本:Redis 通过允许您在一个集群中运行多个 Redis 数据库端点来最大限度地利用基础设施。例如,您可以在一个简单的三节点集群上运行数百个数据库端点。由于底层的时间片切,您运行的数据库实例数量可能远远超过可用的内核数。Redis 会在发出需要添加更多资源的信号之前利用所有可用的物理资源。相比之下,像 ElastiCache 这样的其他解决方案每个节点或集群只提供一个数据库端点,这会导致与我们的方法相比有显著的额外成本

无缝扩展:您可以通过添加更多分片并在必要时扩展到多个节点来扩展 Redis 数据库。Redis 架构确保其他租户(在本例中是数据库)在此过程中不会受到影响。

针对 HA、持久性、驱逐和数据大小进行微调:并非所有应用程序对数据持久性和高可用性都有相同的要求。在 Redis 中,您可以调整数据库以满足应用程序的要求,而不会影响在同一节点上运行的其他数据库。

在开发、测试和生产环境中的灵活性:一旦 Redis 集群建立起来,应用程序开发人员就可以根据需要配置 Redis 数据库端点,而无需担心底层物理或云基础设施。

Redis 是一种市场验证的多租户解决方案,为 Redis 云提供支持。这确保所有数据库都满足其性能要求,同时保持与“嘈杂的邻居”隔离,并在分布式环境中保持 HA。Redis 易于扩展,在 AWS、Azure 和 Google Cloud 等主要云平台上运行超过 50,000 个数据库端点,并且近 10,000 家企业信赖我们处理其最重要的应用程序。

您从我们的无共享架构中获益的方式

Redis 使用无共享架构,它将数据路径组件(例如代理和分片)与控制和管理组件(例如集群管理进程)明确分离。

这种架构提供了显著的优势,并解决了多租户面临的关键挑战

性能:我们的架构允许数据路径实体专注于处理用户请求,从而提高整体性能。每个分片都独立运行,类似于独立的 Redis 实例,无需承担监控其他实例或管理网络分区的负担——这种隔离最大限度地减少了来自其他租户的“噪音”。

可用性:在分片、重新分片和重新平衡活动期间,应用程序可以持续访问数据。这种无缝的数据可用性是自动管理的,消除了手动干预的需要,并确保即使在后台活动进行时,操作也不会中断。

安全性和数据隐私:Redis 通过将配置命令限制为具有基于角色的授权的安全 CLI、UI 或 API 接口来增强安全性。我们基于代理的架构确保每个分片只与经过身份验证的实体连接并处理经过验证的请求,防止未经授权的访问,并增强租户之间的数据隐私。

可管理性:数据库配置、配置更改和软件更新等管理任务通过单个命令(通过 UI 或 API 执行)进行简化。这些任务在整个集群中执行,不会影响用户流量,从而确保操作流畅,并有效分配资源。

可扩展性和资源分配: 该架构支持水平扩展,将数据集有效地分布在多个节点、服务器和集群上。这种方法不仅可以适应增长,还可以战略性地分配资源,防止任何单个租户垄断系统功能。结果?所有租户之间的资源公平分配。

实际应用

Redis 已成功部署在众多组织中。例如,一家大型电子商务公司在 Redis 中使用多租户来处理不同部门(如销售、营销和库存)的数据,每个部门充当不同的租户。

类似地,一家软件即服务 (SaaS) 提供商部署了 Redis 来管理每个客户的数据。每个客户都是不同的租户,其数据与其他客户的数据隔离。在这些情况下,Redis 的多租户功能有助于维护数据隐私,同时确保高效的资源利用。这种方法通常被内部部署 Redis 即服务 (RaaS) 的公司使用,为整个组织的不同团队提供标准化和集中管理的 Redis。

多租户,安全

安全性是任何多租户环境中的首要问题。Redis 经过设计,内置多种安全措施。租户之间的数据隔离得到严格执行,确保每个租户的数据对其他人不可见且不可访问。

Redis 还部署安全措施来防御潜在的攻击。这包括强大的访问控制、定期安全审计以及最新的加密标准,以保护传输中和静止状态下的数据。这为企业提供了额外的保证,有助于维护对多租户设置的信任。

总之…

我们的多租户架构提供了巨大的优势,提高了性能、可扩展性和安全性。它有效地管理资源分配和数据隔离,确保运营连续性和高可用性。

对于希望在各种环境中进行强大的数据管理的企业来说,Redis 是一种强大的且经济高效的解决方案。

探索 Redis 提供更低成本和更大业务影响的多种方式