大数据

【GP社区】Controller-Worker架构模式在Gree

2020-08-24  本文已影响0人  sinwaj

序言

本文是学习和研究Greenplum总结,并在社区中分享的文章。这里做了转载,把简书作为近期学习心得一个统一入口。感谢你的阅读,希望你能有所收获,并对文章提出建议。

原文链接:https://cn.greenplum.org/controller-worker/

一.背景

Greenplum的管理功能是由很多独立命令实现,如集群启动命令gpstart、集群状态查看命令gpstate。这些命令大部分都是基于python语言。本文通过gpstate命令的分析,解读其中蕴含的架构思想,为进一步理解Greenplum的管理命令提供帮助。

二.概念介绍

1. gpstate命令

gpstate查看集群的状态,通过gpstate –h可以看到该命令完整的使用帮助说明。

常用参数说明:

   -s 查看集群状态的详细信息。

   -m查看集群mirror的状态信息。

   -f 查看集群standby的状态信息。

更多细节参看:https://gpdb.docs.pivotal.io/6-10/utility-guide/ref/gpstate.html

2. Controller-Worker架构模式

图1 架构模式

辅助说明:

Controller-Worker是一种组合架构模式,Controller基于Client的参数动态生成Woker数量,并控制Woker的生命周期,如创建和终止。

Controller属性

Controller事先知道自身拥有的Woker类型。

Controller依赖一个工作任务池,通过工作任务池Controller监控整体任务执行情况。

Worker属性

Worker并行消费工作任务池中任务,并把执行结果返回到任务池中。

Worker彼此间没有任何耦合。

三. gpstate命令分析

1. gpstate流程

图2 流程图

2. 模块依赖关系

图3 模块关系

辅助说明:

虚框中模块为数据结构的定义。

Command命令最终是通过ssh和host进行交互,如 ssh –o StrictHostKeyChecky=no –o ServerAliveInterval=60 HostName “./usr/local/greenplum-db/greenplum_path.sh;$GPHome/sbin/gpgetstatusUsingtransiton.py  …”,结果采用base64编码。

gpstate为python文件,通过#!/use/bin/env python方式,可以直接执行。

3. 架构模式

图4 架构数据流

辅组说明:

Controller通过WorkerPool和Worker进行命令传递。

Controller通过超时机制,保证最后一定有命令结果返回给Client

Controller通过halt命令,停止所有的Woker

Worker采用Thread方式来实现。

Worker1、Worker2、WorkerN无差别,根据获取的Cmd,通过ssh方式在对应的Host执行命令。

 四.总结

对gpstate命令的分析方法,可以应用到其他集群操作命令。当管理命令出现异常,可以基于日志,精准定位问题所在。命令是python脚本实现,可以临时增加想要的日志辅助理解和问题定位。通过本文的学习,让Greenplum的管理命令变的不在那么陌生。

五.代码链接

https://github.com/greenplum-db/gpdb/blob/master/gpMgmt/bin/gpstate

六.原文链接

https://cn.greenplum.org/controller-worker/

上一篇下一篇

猜你喜欢

热点阅读