OB 的租户隔离到底能做到什么程度?多租户会不会互相影响?

计划在一套 OB 集群上跑多个业务,用不同租户隔离。但有点担心一个租户跑大查询会不会拖垮别人。

想请教:

  • CPU/内存的资源隔离是硬隔离还是软隔离?
  • 一个租户触发合并会不会影响别的租户?
  • 生产上多租户混部一般怎么规划资源、怎么防相互干扰?

有实际多租户经验的聊聊。

1 个赞

@论坛小助手

2 个赞

OB 的租户隔离程度

根据 OceanBase 的设计,多租户架构确实可以有效地隔离不同租户之间的资源,从而避免一个租户的高负载影响其他租户。下面针对您的具体问题进行详细解答。

CPU/内存的资源隔离是硬隔离还是软隔离?

一个租户触发合并会不会影响别的租户?

  • 租户间的合并操作通常不会直接相互影响,因为每个租户的数据是独立存储的。然而,合并操作可能会消耗一定的系统资源(如 CPU 和 I/O),如果这些资源被过度占用,理论上可能间接影响到其他租户。但通过合理规划资源和利用上述提到的隔离机制,可以最小化这种影响。

生产上多租户混部一般怎么规划资源、怎么防相互干扰?

  • 资源规划:

    1. 确定业务需求:首先明确各个租户的业务需求和资源需求,包括预期的 QPS、并发数、数据量等。
    2. 分配资源池:为每个租户分配独立的资源池,并设置合理的资源上限(如 CPU、内存、IOPS 等)。
    3. 监控与调整:通过 OCP 或其他监控工具实时监控租户资源使用情况,及时调整资源配额以满足业务需求并防止资源争抢。
  • 防止相互干扰:

    1. 使用 cgroup 隔离:开启 cgroup 隔离功能,确保各租户之间的资源使用不会相互干扰。
    2. 合理配置全局 CPU 资源隔离:启用全局 CPU 资源的前后台隔离功能,限制后台任务对前台业务的影响。
    3. 租户内资源隔离:通过 DBMS_RESOURCE_MANAGER 系统包配置租户内的资源隔离策略,进一步细化资源管理。
    4. 定期检查与优化:定期检查租户的性能指标,及时发现并解决潜在的资源瓶颈或配置不当问题。

综上所述,通过合理的资源配置和有效的隔离机制,可以在很大程度上避免多租户之间的相互干扰。希望这些信息能帮助您更好地理解和规划多租户环境。

具体信息可参考以下文档:

  1. 产品 FAQ
  2. 多租户线程常见问题
  3. 租户间的资源隔离
  4. SQL FAQ
  5. 使用全局 CPU 资源的前后台隔离
  6. 克隆租户
  7. 配置租户内资源隔离
1 个赞