写点什么

Presto 设计与实现系列(二):一切从 0 开始?

作者:冰心的小屋
  • 2023-08-17
    上海
  • 本文字数:569 字

    阅读完需:约 2 分钟

Presto 设计与实现系列(二):一切从 0 开始?

纵观 Presto 的实现:


从数据源连接器实现的角度看,Presto 为了方便管理各种数据源的连接,对数据源连接器进行了统一的抽象,定义了连接器实现的一系列标准:


  • 连接器如何创建;

  • 事务处理方式;

  • 库表等元数据信息的获取;

  • 任务划分;

  • 节点选择;

  • 数据获取;

  • 资源评估。


每个数据源的连接器都需要按照此标准实现,运行时通过 Java SPI 服务发现提供机制加载预先配置的连接器,这样 Presto 借助于各种连接器,就有了整合数据的能力。


从集群启动的角度看,每个节点首先加载本地配置标识自己的身份信息,向 coordinator 发送 http 请求在 header 中附带标识信息,经过一定时间 coordinator 会收集到所有节点发送的标识信息,进行汇总后,同步一份给所有节点,这样每个节点都了解了彼此,集群才真正意义上建立起来。


而对于上面的实现,Presto 不是从 0 开始,相反借助了很多开源项目:


  • 像开箱即用快速部署 RESTful 服务的 airlift;

  • 依赖注入框架 Guice;

  • 字节码工具 asm 和 net.bytebuddy;

  • 快速生成 JMX MBean 的 org.weakref.jmxutils;

  • 缓存 guava;

  • http 客户端 okhttp;

  • Java 集合扩展的 fastutil。


如果我们能够理解这些开源项目原理作用,Presto 又是如何使用,可以加深我们对 Presto 实现的理解,同时也可以将有价值的开源项目应用到实际项目中。

接下来我们一起从原理、具体用法和 Presto 集成的角度,分别对上面主要的开源项目进行分析。

发布于: 刚刚阅读数: 3
用户头像

分享技术上的点滴收获! 2013-08-06 加入

一杯咖啡,一首老歌,一段代码,欢迎做客冰屋,享受编码和技术带来的快乐!

评论

发布
暂无评论
Presto 设计与实现系列(二):一切从 0 开始?_数据湖_冰心的小屋_InfoQ写作社区