美文网首页
Presto的整体架构

Presto的整体架构

作者: liuzx32 | 来源:发表于2020-06-18 17:47 被阅读0次

    Presto采用典型的master-slave模型:

    1. coordinator(master)负责meta管理,worker管理,query的解析和调度
    2. worker则负责计算和读写。
    3. discovery server, 通常内嵌于coordinator节点中,也可以单独部署,用于节点心跳。在下文中,默认discovery和coordinator共享一台机器。

    image.png

    Presto是一个运行在多台服务器上的分布式系统。 完整安装包括一个coordinator和多个worker。 由客户端提交查询,从Presto命令行CLI提交到coordinator。 coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker。

    在worker的配置中,可以选择配置:

    discovery的ip:port。
    一个http地址,内容是service inventory,包含discovery地址。
    一个本地文件地址

    {
    "environment": "production",
        "services": [
        {   
            "id": "ffffffff-ffff-ffff-ffff-ffffffffffff",
            "type": "discovery",
            "location": "/ffffffff-ffff-ffff-ffff-ffffffffffff",
            "pool": "general",
            "state": "RUNNING",
            "properties": {
                "http": "http://192.168.1.1:8080"
            }   
        }   
    ]   
    }
    

    2和3的原理是基于service inventory, worker 会动态监听这个文件,如果有变化,load出最新的配置,指向最新的discovery节点。

    在设计上,discovery和coordinator都是单节点。如果有多个coordinator同时存活,worker 会随机的向其中一个汇报进程和task状态,导致脑裂。调度query时有可能会发生死锁。

    discovery和coordinator可用性设计。由于service inventory的使用,监控程序可以在发现discovery挂掉后,修改service inventory中的内容,指向备机的discovery。无缝的完成切换。coordiantor的配置必须要在进程启动时指定,同一个集群中无法存活多个coordinator。因此最好的办法是和discovery配置到一台机器。 secondary机器部署备用的discovery和coordinator。在平时,secondary机器是一个只包含一台机器的集群,在primary宕机时,worker的心跳瞬间切换到secondary。

    image.png

    相关文章

      网友评论

          本文标题:Presto的整体架构

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