专栏首页大数据成神之路Druid SQL和Security在美团点评的实践

Druid SQL和Security在美团点评的实践

来源:美团点评高大月的分享

作者:大数据技术与架构整理

场景描述:虽长久以来,对SQL和权限的支持一直是Druid的软肋。虽然社区早在0.9和0.12版本就分别添加了对SQL和Security的支持,但根据我们了解,考虑到功能的成熟度和稳定性,真正把SQL和Security用起来的用户是比较少的。

关键词:Durid 实践

本文是来自美团点评高大月的分享,大数据技术与架构做了整理和补充。

本次分享主要讲述了社区SQL和Security方案的原理,以及美团点评在落地这两个功能的过程中所遇到的问题、做出的改进、和最终取得的效果。

Druid 是一个分布式的支持实时分析的数据存储系统(Data Store)。美国广告技术公司MetaMarkets 于2011 年创建了Druid 项目,并且于2012年晚期开源了Druid 项目。Druid 设计之初的想法就是为分析而生,它在处理数据的规模、数据处理的实时性方面,比传统的OLAP 系统有了显著的性能改进,而且拥抱主流的开源生态,包括Hadoop 等。多年以来,Druid 一直是非常活跃的开源项目。

Durid在美团的现状和挑战

现状:

  • 2个集群,70多个数据节点(物理机)
  • 0.12版本,数据摄入主要采用Tranquility
  • 500多张表,100TB存储,最大的表日摄入消息量在百亿级别
  • 日查询量1700万次,TP99响应低于1秒的表占到80%
  • 支撑外卖、酒店、旅游、金融、广告等主要业务线

挑战:

易用性

  • 新用户花多长时间能用Druid实现他的业务需求?
  • 遇到问题后用户能不能自己定位和解决问题?

安全性

  • 数据是业务最重要的资产之一,如何保障业务的数据安全?

稳定性

  • 面对不熟悉的业务逻辑,如何在一个多租户环境中定位和解决问题?
  • 能给业务提供什么样的SLA承诺?

Druid SQL的应用和改进

我们来看一段正常的Druid SQL怎么写:

现在我们可以这样写:

Druid SQL简介

  • 0.10新增的核心模块
  • 基于Calcite实现的SQL到JSON翻译层

简单、稳定、性能开销低

功能受限于JSON查询的能力

  • 支持 HTTP 和 JDBC 两种调用方式
  • 几乎能表达所有JSON查询能实现的逻辑

例如:嵌套GroupBy,union all,近似TopN

自动选择最适合的queryType

一个Druid SQL的例子:

美团对SQL的优化

DruidSchema性能优化

添加SQL的请求日志和监控指标

强制用户指定__time条件

Druid Security需求

背景

- Druid(0.10)所有API都没有访问控制,业务数据安全得不到保障

需求&目标

- 所有API都要经过认证

- 实现DB粒度的权限控制

- 所有数据访问都有审计日志

- 业务能平滑升级到安全集群

- 对代码的改动侵入性小

社区的权限认证架构

一般配置:

社区方案的不足之处包括:

  • Web控制台对BA认证的支持较差
  • 未认证用户的权限不能修改 (0.13修复)
  • 权限管理只提供了low-level API,使用不方便
  • 缺少审计日志

改进措施:

  • 基于DB的访问控制
  • 自动管理权限DB
  • 支持SSO认证和非认证访问

总结

关于SQL

关于Security

本文分享自微信公众号 - 大数据技术与架构(import_bigdata)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用vue技术栈,作为一个前端架构师是必须掌握这些知识点的

    一.对于mvvm的理解 1.MVVM 是 Model-View-ViewModel 的缩写 2.Model代表数据模型,也可以在Model中定义数据修改和操作的...

    前端老鸟
  • Python | Python学习之常用项目代码(一)

    本篇是咸鱼日常撸视频的时候记录的一些代码实例,可以直接运用到项目中但是有些代码的可用性没有那么好,旨在分享思路,不喜勿喷~

    咸鱼学Python
  • Dubbo 序列化协议 5 连问,你接得住不?

    上一个问题,说说 dubbo 的基本工作原理,那是你必须知道的,至少要知道 dubbo 分成哪些层,然后平时怎么发起 rpc 请求的,注册、发现、调用,这些是基...

    Java技术栈
  • SAP云平台里的三叉戟应用

    海皇波塞冬(Poseidon),奥林匹斯十二神中地位仅次于宙斯的大神,海界的统治者,他的威严与大地无穷无尽的生命力及洪水相匹敌。三叉戟是海皇波塞冬的武器,外型似...

    Jerry Wang
  • Python | 其实爬虫也有套路(附赠书获奖名单)

    在刚刚接触Python爬虫的时候常常会有无从下手的感觉,于是咸鱼整理了简单爬虫的通用套路,没有思路的时候看一下吧。

    咸鱼学Python
  • 掌握这些 Redis 技巧,百亿数据量不在话下!

    实际上NewLife.Redis是一个完整的Redis协议功能的实现,但是Redis的核心功能并没有在这里面,而是在NewLife.Core里面。

    Java技术栈
  • Python | 关于Requests与Json的使用小结

    在学习Scrapy爬虫的过程中,发现需要总结一些东西来避免自己遗忘。这是咸鱼的第19篇原创。

    咸鱼学Python
  • 【Webpack】373- 一看就懂之 webpack 高级配置与优化

    所谓打包多页面,就是同时打包出多个 html 页面,打包多页面也是使用 html-webpack-plugin,只不过,在引入插件的时候是创建多个插件对象,因为...

    pingan8787
  • Python 中那些令人拍案叫绝的功能!

    链接:www.oschina.net/translate/python-functions

    Rocky0429
  • Android 利用泛型优雅的解析数据

    以上代码笔者bean的主类,笔者公司的服务器会传如上3个参数为固定参数,其中data的类容会因为类容的变化而变化,因此将其作为泛型传递。在我们不知道其内容的时候...

    饮水思源为名

扫码关注云+社区

领取腾讯云代金券