GaussDB(DWS) 逻辑集群系列一:逻辑集群简介
GaussDB(DWS)为什么要支持逻辑集群
传统的基于MPP的分布式数据仓库采用的是全对等架构,每个表数据平均分布到所有节点中,这样能保证足够的并发度以及节点间协同,保证性能SLA。只要保证数据在所有节点上是均衡的,数据查询会将计算平均分配到所有节点上,结构简单,扩展性好 。
随着业务越来越大,这种简单的数据分布方式可能会带来一些问题。具体表现为:
- 用户不断把各种业务数据集成到一个数仓中,不同业务逻辑访问同一个数仓,这减少了维护多个数仓的成本,运维方便。但也会导致数仓的数据规模越来越大,表越来越多。不同业务访问数仓过程中会带来资源的竞争,比如CPU、内存、磁盘IO、网络的竞争。虽然通过配置资源池可以一定程度解决资源竞争,但所有业务执行逻辑仍然同时在每个节点上执行,无法做到资源完全隔离。事实上,同一业务的不同作业总是倾向访问本业务相关的表,对其他业务的表访问较少,如果能做到业务内数据“高内聚”,业务间“低耦合”无疑是更好的选择。
- 数据库表无论大小都被切分到所有节点,对小表来说,数据过于分散。当节点规模达到一定程度后,通过增加更多节点,提高查询并行度的方式可能就无法带来理想的扩展性了。如果为了避免集群变大,将不同业务数据拆分成独立集群,集群间数据互访就需要从应用层解决,或者需要跨集群导数。
逻辑集群实现了一个大集群按节点拆分,将大集群中所有节点分组,每个节点组构建一个逻辑集群,可以很好的解决上面所述的问题。
企业可以根据不同业务的数据规模为其创建不同节点数的逻辑集群,由于不同节点属于不同的逻辑集群,这样可以做到不同业务之间物理资源彻底隔离。在一个逻辑集群内部,所有节点是对等的,数据保持均衡,确保逻辑集群内部作业高效运行。同时,由于所有业务仍然在一个统一的大集群内,有统一的元数据管理和节点管理,跨逻辑集群数据互访非常容易和高效,这样就可以做到高内聚,低耦合。
逻辑集群的能力
逻辑集群实现了三种隔离:
- 数据隔离:不同业务的表创建在不同逻辑集群上,表数据物理上隔离;
- 资源隔离:不同逻辑集群的CPU,内存,IO资源是隔离的;跨逻辑集群数据访问的资源是受控的;同一逻辑集群内部还可以通过负载队列进行作业资源管控;
- 权限隔离:访问其他逻辑集群的表和数据库对象需要授权;
逻辑集群支持弹性计算,一个逻辑集群的作业可以利用其他逻辑集群计算资源。
逻辑集群间可以异构部署,一个逻辑集群内部节点间配置应该是完全相同的,不同逻辑集群间节点配置可以不同(包括CPU、内存、IO等硬件配置,但操作系统配置需要相同)。
每个逻辑集群可以独立扩缩容,业务迁移后不用的逻辑集群可以删除,释放的节点可以用于创建新的逻辑集群。
逻辑集群典型场景
多子业务拆分:将一个大业务拆分为多个子业务,每个子业务创建一个独立逻辑集群;子业务之间资源隔离,同时也可以方便地进行跨子业务查询。
数据加工和数据查询作业分离:将数据加工和灵活查询作业分开到两个逻辑集群,数据加工结果写入灵活查询逻辑集群中,保证两类作业资源隔离,且可以根据需要独立扩容。
- 点赞
- 收藏
- 关注作者
评论(0)