本文来自3月24日举办的 PrestoCon Day 2021。作者 Hitarth Trivedi,Uber 的软件工程师。

Prism 是 Uber 所有 Presto 查询的网关服务(gateway service)。它解决了 Uber 在四个主要领域的具体需求——资源管理、查询控制、监控和安全。它负责为 Uber 每周6000多名活跃用户的300多万次查询提供代理。由于 Uber 的多租户关系,Presto 作业的执行时间是可变的。Prism 通过使用诸如查询路由、负载均衡、查询控制、会话参数检查、故障转移等特性克服了这些挑战,这些特性有助于在 Uber 上为 Presto 维持99.9%的可用性和可靠性 SLA。

本文的 PPT 请关注 过往记忆大数据 微信公众号,并回复 uber_presto 获取。

Presto 在 Uber 的使用情况

上面是 Presto 在 Uber 的使用情况:

•每月1.2W的活跃使用用户;•每天40W的查询;•每天处理50PB的 HDFS 数据;•拥有2个数据中心;•4500个节点;•12个集群。

主要使用的 Presto 工具包括:presto-go-client、pyhive 以及 JDBC 客户端,比如 tableau 等。

Presto 处理的工作负载主要为交互式查询和批处理;这两种负载是分别使用不同的 Presto 集群处理的:交互式查询是使用交互式 Presto 集群处理的;批处理是发到批处理 Presto 集群处理,不同负载使用不同集群处理可以使得作业之间不受影响。

为什么会要引入 Presto 网关服务

在 Uber 存在多种不同的客户端,这些客户端需要把不同的查询发到不同的 Presto 集群。

但是客户端可能存在无效的映射配置,比如批处理查询客户端把查询发到交互式 Presto 集群,这样就会存在一些问题。而且由于客户端比较多,非常不好控制。

引入了 Prism 之后,整个 Presto 集群的入口就只有一个,所以比较比较好做一些控制。

Presto 网关服务服务的架构设计

下面我们来简要介绍一下 Prism 网关服务的主要功能。

从上图可以看出,Presto 网关服务 主要提供了六大功能:

•查询运行;

•路由功能;•负载均衡;•故障转移;•查询控制;•速度限制。

Prism 主要使用 presto-go-client 客户端和 Presto 集群进行交互;Prism 主要提供两种模式的查询代理:

•异步执行 API 返回数据流

•异步执行 API 返回文件描述符

返回数据流这种模式的整个流程如下:

•用户把查询提交到客户端;

•客户端通过 presto-go-client 调用 Prism;•Prism 识别出最合适的 Presto 集群来运行这个查询;•Prism 通过 HTTP 重定向返回响应,以使 presto-go-client 可以直接在 presto 群集上继续执行。•一旦查询完成,执行结果将直接返回客户端。

返回文件描述符这种模式的整个流程如下:

•用户把查询提交到客户端;•客户端将 Presto 查询发送到 Prism,并且得到一个 query-id;•Prism 通过 presto-go-client 把查询发送到 presto 集群;•当查询运行完成,Prism 将结果写到 HDFS 上,客户端这时候可以拿到这个 HDFS 路径;•客户端通过调用 Prism 获取查询查询的状态;•一旦查询完成,客户端通过 HDFS 获取到查询的结果,并返回给用户。

在 Uber 内部,Presto 根据工作负载将集群分为两个类型:

•交互式集群:处理 Ad hoc 查询;

•批处理集群:处理定时查询(Scheduled queries)

路由功能的实现主要是,Prism 里面存储了从特定源到工作负载类型的映射关系:

•Prism 从 HTTP 请求头识别提交的客户端来源。

•Prism 将查询转发到正确的集群类型。

负载均衡功能的实现思想如下:

•Prism 从 Presto coordinators 中拿到不同集群的当前负载情况;

•负载是由运行中的查询数、排队的查询数以及 worker 数决定;•使用负载统计,它将用户提交的查询路由到最佳的集群。

故障转移的实现如下:

•Prism 可以将流量从一个集群转移到另一个集群;•这个功能在以下场景下是非常有用的:部署 Presto 集群、重启 Presto 集群以及 Presto 集群维护。

Prism 其他功能主要有:

•可以将一些用户或者一些来源的查询屏蔽;•Prism 仅允许用户设置一些确定的会话属性;一些会话属性的值被限制;•基于每个源和每个用户运行的查询数量进行速率限制。

Prism:Uber 的 Presto 查询网关服务相关推荐

  1. 快速搭建一个网关服务,动态路由、鉴权看完就会(含流程图)

    [文章来源]https://sourl.cn/tcbSPi 前 言 本文记录一下我是如何使用Gateway搭建网关服务及实现动态路由的,帮助大家学习如何快速搭建一个网关服务,了解路由相关配置,鉴权的流 ...

  2. Spring Cloud GatewayAPI网关服务

    一.Gateway 简介 Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和 Project Reactor等技术.Gateway旨在提 ...

  3. 美团技术:百亿规模API网关服务Shepherd的设计与实现

    在微服务架构下,服务拆分会让API的规模成倍增长,使用API网关来管理API逐渐成为一种趋势.美团统一API网关服务Shepherd就是在这种背景下应运而生,适用于美团业务且完全自研,用于替换传统的W ...

  4. Spring Cloud微服务之网关服务创建(十四)完结篇

    网关服务 1.在parent父工程中创建一个空的Maven项目infrastructure 2.在infrastructure模块下创建api_gateway模块 3.编写application.pr ...

  5. 百亿规模API网关服务Shepherd的设计与实现

    在微服务架构下,服务拆分会让API的规模成倍增长,使用API网关来管理API逐渐成为一种趋势.美团统一API网关服务Shepherd就是在这种背景下应运而生,适用于美团业务且完全自研,用于替换传统的W ...

  6. 美团:百亿规模API网关服务Shepherd的设计与实现

    一.背景 1.1 API网关是什么? API网关是随着微服务(Microservice)概念兴起的一种架构模式.原本一个庞大的单体应用(All in one)业务系统被拆分成许多微服务(Microse ...

  7. 基于Eureka的网关服务(gateway)配置

    在做项目的时候,用户身份认证最开始用的是web拦截器来实现的,原理很简单,可以参考这篇文章:springboot拦截器配置_酷乐丶是只猫的博客-CSDN博客 使用Eureka后可以将用户身份认证功能单 ...

  8. 秒杀项目之网关服务限流熔断降级分布式事务

    目录 一.网关服务限流熔断降级 二.Seata--分布式事务 2.1 分布式事务基础 2.1.1 事务 2.1.2 本地事务 2.1.3 分布式事务 2.1.4 分布式事务场景 2.2 分布式事务解决 ...

  9. java造轮子:快速搭建一个网关服务,动态路由、鉴权看完就会(含流程图)

    前言 本文记录一下我是如何使用Gateway搭建网关服务及实现动态路由的,帮助大家学习如何快速搭建一个网关服务,了解路由相关配置,鉴权的流程及业务处理,有兴趣的一定看到最后,非常适合没接触过网关服务的 ...

最新文章

  1. mogileFS 分布式存储-安装手记
  2. Python中如何使用构造方法定义类
  3. 【01背包的k值问题 HDU2639 HDU2126】
  4. 10月末周网络安全报告:应用程序漏洞占比93.1%
  5. 钽电容极性 钽电容极性判断图解
  6. linux桌面环境 mac os,在Windows或Linux桌面上使用Mac OS Dashboard Widget | MOS86
  7. 盐城工学院计算机基础试卷,大学计算机基础及实用软件/大学计算机基础
  8. ZZULIOJ 1139: 输出最短字符串
  9. PTA—考试座位号(C语言)
  10. Atitit mybatis返回多个数据集总结 目录 1.1. 配置handleResult接受,但是只有第一个select语句的结果 1 2. 配置resultMap ok 1 2.1. 调
  11. Tomcat 7 安装教程 + eclipse配置Tomcat
  12. 建模与计算机应用,数学建模与计算机应用竞赛.doc
  13. 3650m5设置u盘启动_联想启天M425台式机设置u盘启动两种模式(支持uefi/bios双启动)...
  14. 苹果id怎么注册?老果粉教你创建新的Apple ID
  15. Pubg九月十六日服务器维护,9月16日绝地求生更新时间公告 绝地求生9月16日更新维护...
  16. python排名差怎么改,2017中国大学排名爬虫代码修改
  17. su oracle和su - oracle的区别
  18. 【Java8 环境安装】Java1.8JDK环境安装jdk-8u361-windows-x64
  19. 滴滴程序员被亲戚鄙视:年薪八十万不如二本教书的……
  20. NE555使用的一些心得

热门文章

  1. 基业长青 -- 段永平总经理在企业文化培训课上的讲解
  2. ERP管理系统名词含义是什么?
  3. 机器学习-周志华-课后习题-模型选择与评估
  4. 哈工大计算机系统2022年秋程序人生大作业
  5. 棋盘覆盖(java实现)
  6. 企业估值指标-每股收益、稀释每股收益、市盈率、市净率、息税前利润、息税折旧及摊销前利润...
  7. 2021 互联网大厂“凡尔赛”年终奖大赏(不含年终奖金)
  8. 2018 蓝桥杯省赛 B 组模拟赛(一)G. 数列求值(第一次见这种递推.)
  9. 特斯拉降价最高64万原来是为了它,马斯克宣布三月份发布新品Model Y特斯拉电动车
  10. 外置网卡 Mac os 11.0 Big Sur 驱动解决方案