美文网首页大数据
【GP社区】Controller-Worker架构模式在Gree

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

作者: sinwaj | 来源:发表于2020-08-24 19:45 被阅读0次

    序言

    本文是学习和研究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/

    相关文章

      网友评论

        本文标题:【GP社区】Controller-Worker架构模式在Gree

        本文链接:https://www.haomeiwen.com/subject/bfqojktx.html