点 Redis 8 来了——而且它是开源的

了解更多

Redis Enterprise 中的多租户

在多租户架构中,单个软件实例服务于许多不同的用户组(或“租户”)。每个租户的数据都安全隔离,确保对其他租户不可见且无法访问。可以将其比作一座公寓楼,人们居住在共享建筑中独立且隔离的单元里。 

在 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 Software 运行的硬件基础,可以是物理服务器、虚拟机、容器或云实例。 

数据平面:

分片: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 Cloud 提供支持。这确保所有数据库都能满足其性能要求,同时保持与“噪音邻居”的隔离,并在分布式环境中维持高可用性。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 如何在多个方面降低成本并带来更大的业务影响