计划在一套 OB 集群上跑多个业务,用不同租户隔离。但有点担心一个租户跑大查询会不会拖垮别人。
想请教:
- CPU/内存的资源隔离是硬隔离还是软隔离?
- 一个租户触发合并会不会影响别的租户?
- 生产上多租户混部一般怎么规划资源、怎么防相互干扰?
有实际多租户经验的聊聊。
计划在一套 OB 集群上跑多个业务,用不同租户隔离。但有点担心一个租户跑大查询会不会拖垮别人。
想请教:
有实际多租户经验的聊聊。
根据 OceanBase 的设计,多租户架构确实可以有效地隔离不同租户之间的资源,从而避免一个租户的高负载影响其他租户。下面针对您的具体问题进行详细解答。
CPU 资源隔离:OceanBase 主要通过控制活跃线程数量(实际消耗 CPU 资源的线程)来控制 CPU 消耗。创建租户时会指定租户资源池,资源池定义 max_cpu 可以限制租户级别的最大活跃线程使用,从而实现租户间 CPU 使用的隔离。在最新版本中,OceanBase 还实现了 cgroup 隔离来对 CPU 内存和资源进行有效控制和限制。因此,从技术上讲,CPU 资源隔离可以视为硬隔离,尤其是在开启了 cgroup 隔离的情况下。
内存资源隔离:对于内存资源,SQL work area、memory store 与 kv cache 等资源为租户独享;而 system memory 为多个租户共享。这表明,在某些情况下,内存资源隔离可能是软隔离(如系统内存),但在租户独享的部分,则可以认为是硬隔离。
DBMS_RESOURCE_MANAGER 系统包进一步配置租户内的资源隔离策略。资源规划:
防止相互干扰:
DBMS_RESOURCE_MANAGER 系统包配置租户内的资源隔离策略,进一步细化资源管理。综上所述,通过合理的资源配置和有效的隔离机制,可以在很大程度上避免多租户之间的相互干扰。希望这些信息能帮助您更好地理解和规划多租户环境。
具体信息可参考以下文档: