业务并发度不够,数仓的 CN 可以来帮忙
本文分享自华为云社区《CN与业务并发度的关系-业务并发度不够?CN来帮忙》,作者:闻鲜生 。
一、CN 的作用是什么?
CN 全称协调节点(Coordinator Node)。是和用户关系最密切也是 DWS 内部非常重要的一个组件,它负责提供外部应用接口、优化全局执行计划、向 Datanode 分发执行计划,以及汇总、处理执行结果。
集群中,CN 有多个并且 CN 的角色是对等的(执行 DML 语句时连接到任何一个 CN 都可以得到一致的结果)。只需要在 CN 和应用程序之间增加一个负载均衡器,使得 CN 对应用是透明的。DWS 通过 CCN(Control Coordinator Node)负责集群内的资源全局负载控制,以实现自适应的动态负载管理。CM 在第一次集群启动时,通过集群部署形式,选择编号最小的 CN 作为 CCN。若 CCN 故障之后,由 CM 选择新的 CCN 进行替换。
一次简单的查询流程如下所示:
1. 用户通过应用程序发出查询本地数据的 SQL 请求到 Coordinator。
2. Coordinator 接收用户的 SQL 请求,分配服务进程,向 GTM 请求分配全局事务信息。
3. GTM 接收到 Coordinator 的请求,返回全局事务信息给 Coordinator。
4. Coordinator 根据数据分布信息以及系统元信息,解析 SQL 为查询计划树,从查询计划树中提取可以发送到 Datanode 的执行步骤,封装成 SQL 语句或者子执行计划树,发送到 Datanode 执行。
5. Datanode 接收到读取任务后,查询具体 Storage 上的本地数据块。
6. Datanode 任务执行后,将执行结果返回给 Coordinator。
7. Coordinator 将查询结果通过应用程序返回给用户。
二、CN 与业务并发度的关系
CN 是外部应用的接口,CN 的并发能力直接决定了业务的并发度。单 CN 的并发能力受如下几个参数控制:
max_connections: 允许和数据库连接的最大并发连接数。此参数会影响集群的并发能力。CN 节点默认值为 800,DN 节点默认值为 5000。
max_active_statements:设置全局的最大并发数量。此参数只应用到 CN,且针对一个 CN 上的执行作业。默认值 60。
CN 的 max_connections 和 max_active_statements 参数支持用户根据业务并发度诉求修改,详细操作流程如下图:
点击集群详情的“参数修改”页面,搜索需要修改的参数,会显示对应参数和当前值,参数值框里面输入修改值,点击“保存”按钮保存配置。“是否重启集群”栏显示“是”的参数说明需要重启集群生效,请寻找业务空闲期修改。
三、CN 不够怎么办?
单 CN 的并发能力会受到硬件资源和拓扑结构的限制,不能无限制调大。DWS 是分布式架构集群,此时就要考虑横向扩展,增加更多的 CN 来提升业务并发度,充分利用分布式架构的优势。
下发集群时配置更多的 CN
CN 数量在下发 DWS 集群时可以配置。默认值 3 个,最少 2 个,最多不超过“节点数量”,如果节点数量大于 20,则 CN 数量最多可配置 20 个。如下图所示,在“创建数据仓库集群”的购买页面的“高级配置”选择“自定义”,“CN 部署量”即为 CN 的初始部署数量。
下发集群后在线添加 CN
集群下发后,如果由于业务并发度高导致 CN 不够用,可以在线添加 CN,具体操作如下图所示。增加 CN 耗时与用户表数量有关,大概 10 分钟左右,增加 CN 过程中间有一段时间会锁集群,阻塞 DDL 语句执行。
四、如何做到多个 CN 负载均衡?
如果集群部署了多个 CN,但是怎么做到 CN 的负载均衡,保证业务并发度和性能最大化呢?DWS 提供了弹性负载均衡(Elastic Load Balance,简称 ELB)服务。弹性负载均衡可以通过流量分发扩展应用系统对外的服务能力,同时通过消除单点故障提升应用系统的可用性。
ELB 的配置原理介绍
ELB 的绑定方法
五、CN 故障了怎么办?
由于 DWS 的 CN 角色是对等的,同时对外提供服务,因此必须保证其元数据的强一致性,因此外部应用连接任一个 CN 执行涉及元数据变更的操作(如 DDL,DCL)必须分发到所有的 CN 同时完成。 如果单个 CN 故障,会影响所有 CN 的 DDL 和 DCL 操作。目前 DWS 提供了两个解决方案:
自动剔除 CN
如果集群绑定了弹性负载均衡(ELB),则会自动打开自动剔除 CN 功能,DWS CM 周期性检测 CN 的状态,如果发现 CN 连续故障 600s,则会立即从整个集群剔除该故障 CN,保证其余 CN 的业务不受到影响。再配合弹性负载均衡服务,会自动把发送到故障 CN 的作业转发到其他正常 CN。
删除 cn 介绍
如果发现集群部分 CN 故障,或存在亚健康状态,可以选择手动删除故障 CN,具体操作流程如下。手动删除 CN 耗时固定,1 分钟左右。
总结:希望通过此文,让你能够对 CN 作用,CN 运维操作,业务并发度有进一步的了解!
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/d6dc644276063761af7690f03】。文章转载请联系作者。
评论