当前位置:首页 > 科技  > 软件

Doris到底有多牛,为什么大厂都在使用它?

来源: 责编: 时间:2024-01-19 17:25:14 368观看
导读今天给各位分享一个非常牛的实时分析型数据库Apache Doris,几乎国内的一二线大厂都在使用它做数据分析,如下图,这只是一小部分图片同时我司也在使用它,它目前支撑了我们亿级业务数据的多维实时查询分析,而且性能很不错Dori

今天给各位分享一个非常牛的实时分析型数据库Apache Doris,几乎国内的一二线大厂都在使用它做数据分析,如下图,这只是一小部分9TH28资讯网——每日最新资讯28at.com

图片图片9TH28资讯网——每日最新资讯28at.com

同时我司也在使用它,它目前支撑了我们亿级业务数据的多维实时查询分析,而且性能很不错9TH28资讯网——每日最新资讯28at.com

Doris 介绍

官方地址:https://doris.apache.org/9TH28资讯网——每日最新资讯28at.com

Apache Doris源于百度2008年启动的产品Palo在2018年捐献给Apache基金会,是一个基于 MPP 架构的高性能、实时的分析型数据库,它非常简单易用,而且性能还不错,仅需亚秒级响应时间即可获得查询结果,不仅支持高并发的查询场景,也可以支持高吞吐的复杂分析场景,比如你可以基于它做用户行为分析、日志检索平台、用户画像分析、订单分析等应用。9TH28资讯网——每日最新资讯28at.com

Doris的架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集9TH28资讯网——每日最新资讯28at.com

特性

图片图片9TH28资讯网——每日最新资讯28at.com

这里特性很多,但是如果没接触过大数据的同学,可能不是特别了解,但是注意这个特性,支持SQL 语言,兼容MySQL,比如:通过Mybatis 写好 sql,就可以调用查询,而且它能支持亿级数据检索响应,以前想分库分表,现在有了它可以考虑还有必要吗,但是这里要注意下,它是一个 OLAP 引擎与 OLTP还是有点区别,如果业务场景,新增多后期更新少,同时查询场景多,那么可以在 mysql 中保存一段时间的热点数据,来进行相关业务操作,而报表查询都走Doris9TH28资讯网——每日最新资讯28at.com

这里可能有些人员不懂什么是 OLAP,下面是一个OLAP与OLTP对比图9TH28资讯网——每日最新资讯28at.com

图片图片9TH28资讯网——每日最新资讯28at.com

架构9TH28资讯网——每日最新资讯28at.com

Doirs只有两个主进程模块。一个是 Frontend(FE),另一个是Backend(BE)9TH28资讯网——每日最新资讯28at.com

图片图片9TH28资讯网——每日最新资讯28at.com

Frontend(FE)

主要负责用户请求的接入、查询计划的解析、元数据的存储和集群管理相关工作, Doris采用Paxos协议以及Memory + Checkpoint + Journal的机制来确保元数据的高性能及高可靠。9TH28资讯网——每日最新资讯28at.com

图片图片9TH28资讯网——每日最新资讯28at.com

Leader、follower和 observer它们三个构成一个可靠的服务,保证单节点宕机的情况下,元数据能够实时地在线恢复,而不影响整个服务,与zookeeper角色一样。9TH28资讯网——每日最新资讯28at.com

Backend(BE)

BE主要负责数据存储、查询计划的执行。9TH28资讯网——每日最新资讯28at.com

  • BE管理tablet副本, tablet是table经过分区分桶形成的子表, 采用列式存储。
  • BE受FE指导, 创建或删除子表。
  • BE接收FE分发的物理执行计划与其他BE共同协作完成执行。
  • BE读本地的列存储引擎, 获取数据, 通过索引和谓词下沉快速过滤数据。
  • BE后台执行compact任务, 减少查询时的读放大。

以上FE和 BE支持动态弹性扩容,而且在扩容过程中对应用无影响,同时Doris 不依赖zk、hdfs等,所以架构很简单,这种架构设计极大的简化了运维成本,其实一个好的产品就应该这样,把复杂留给自己,把简单留给用户9TH28资讯网——每日最新资讯28at.com

OLAP对比

在我们解决大数据查询分析时,也调研了比较知名的一些产品,下面是一个对比9TH28资讯网——每日最新资讯28at.com

图片图片9TH28资讯网——每日最新资讯28at.com

TIDB

TIDB 是一个非常优秀的国产分布式数据库,他的主要优势OLTP处理上,但是也支持OLAP,但是在我们调研过程中,抱着使用一个TIDB 完全替代掉Mysql 想法,我们进行了测试,我们使用的版本是v5.3.3,但是在测试过程中效果不理想,因为 TIDB 解析引擎会对SQL进行分析,来决定走 OLTP 还是OLAP,比如我们期望走OLAP 但是走了OLTP导致性能有所降低9TH28资讯网——每日最新资讯28at.com

ClickHouse

提到 Doris 不得不提ClickHouse,CK是由俄罗斯IT公司Yandex为Yandex.Metrica网络分析服务开发的开发的实时数仓,以性能著称,但是经过测试,与 Doris在不同场景各有优劣,  但是它的架构复杂、运维成本高,同时对 sql 语法兼容性没有Doris好,因此没有选择,不过国内也有不少公司在使用9TH28资讯网——每日最新资讯28at.com

Doris

运维成本低、兼容Mysql 语法、架构足够简单、社区支持性好(非常活跃),同时经过百度内部长达10 多年的大规模使用,成熟度不容置疑,没有理由不选它9TH28资讯网——每日最新资讯28at.com

性能测试报告

Doris 版本:0.15.0,目前最新版本是:2.039TH28资讯网——每日最新资讯28at.com

  • 1 FE + 3 BE 独立部署
  • CPU:8core 16G Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
  • 内存:16GB
  • 硬盘:1块机械硬盘
  • 网卡:万兆网卡

测试1

图片图片9TH28资讯网——每日最新资讯28at.com

6亿数据进行多表查询,响应1.98s9TH28资讯网——每日最新资讯28at.com

SELECT SUM(lo_revenue), d_year, p_brand FROM lineorder, date, part, supplier WHERE lo_orderdate = d_datekey AND lo_partkey = p_partkey AND lo_suppkey = s_suppkey AND p_category = 'MFGR#12' AND s_region = 'AMERICA' GROUP BY d_year, p_brand ORDER BY d_year, p_brand;

图片图片9TH28资讯网——每日最新资讯28at.com

测试2

ods_test_mysql_test_record_s数据量:148399619,67 个字段9TH28资讯网——每日最新资讯28at.com

ods_test_mysql_test_barrier_s数据量:1385,12个字段9TH28资讯网——每日最新资讯28at.com

执行以下 sql,耗时:0.277s9TH28资讯网——每日最新资讯28at.com

SELECT    i.a1 AS p_code,    IFNULL(IFNULL(i.a56, b.a2), '0') AS gateway_no,    1 AS inout_type,    DATE_FORMAT(i.a2, '%Y-%m-%d') AS report_date,    DATE_FORMAT(i.a2, '%Y') AS report_year,    DATE_FORMAT(i.a2, '%c') AS report_month,    1 AS total_num,    (CASE WHEN i.a6 = 1 THEN 1 ELSE 0 END) AS big_car_num,    (CASE WHEN i.a6 != 1 THEN 1 ELSE 0 END) AS small_car_num,    (CASE WHEN i.a44 REGEXP '[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_car_num,    (CASE WHEN i.a61 = 2 OR i.a61 = 3 THEN 1 ELSE 0 END) AS reserve_num,    (CASE WHEN i.a61 = 1 THEN 1 ELSE 0 END) AS white_list_num,    (CASE WHEN i.a6 = 1 AND (i.a61 = 2 OR i.a61 = 3) THEN 1 ELSE 0 END) AS big_car_reserve_num,    (CASE WHEN i.a6 = 1 AND i.a61 = 1 THEN 1 ELSE 0 END) AS big_car_white_list_num,    (CASE WHEN i.a6 != 1 AND (i.a61 = 2 OR i.a61 = 3) THEN 1 ELSE 0 END) AS small_car_reserve_num,    (CASE WHEN i.a6 != 1 AND i.a61 = 1 THEN 1 ELSE 0 END) AS small_car_white_list_num,    (CASE WHEN (i.a61 = 2 OR i.a61 = 3) AND i.a44 REGEXP '[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_reserve_num,    (CASE WHEN i.a61 = 1 AND i.a44 REGEXP '[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_white_list_num,    CURRENT_TIMESTAMP() AS update_timeFROM    ods_test_mysql_test_record_s i    LEFT JOIN ods_test_mysql_test_barrier_s b ON i.a22 = b.a1WHERE    i.a67 = 0    AND i.a1 = '100280023213'    AND i.a2 < '2021-11-20 00:00:00'    AND (        i.a2 BETWEEN DATE_FORMAT(i.a2, '%Y-%m-%d 00:00:00') AND FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_FORMAT(i.a2, '%Y-%m-%d 00:00:00')) + 90000, '%Y-%m-%d %H:%i:%s')    )LIMIT 1000;

图片图片9TH28资讯网——每日最新资讯28at.com

测试3

只查询小于2022-12-30 00:00:00数据,响应时间:0.241s9TH28资讯网——每日最新资讯28at.com

SELECT    i.a1 AS p_code,    IFNULL(IFNULL(i.a56, b.a2), '0') AS gateway_no,    1 AS inout_type,    DATE_FORMAT(i.a2, '%Y-%m-%d') AS report_date,    DATE_FORMAT(i.a2, '%Y') AS report_year,    DATE_FORMAT(i.a2, '%c') AS report_month,    1 AS total_num,    (CASE WHEN i.a6 = 1 THEN 1 ELSE 0 END) AS big_car_num,    (CASE WHEN i.a6 != 1 THEN 1 ELSE 0 END) AS small_car_num,    (CASE WHEN i.a44 REGEXP '[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_car_num,    (CASE WHEN i.a61 = 2 OR i.a61 = 3 THEN 1 ELSE 0 END) AS reserve_num,    (CASE WHEN i.a61 = 1 THEN 1 ELSE 0 END) AS white_list_num,    (CASE WHEN i.a6 = 1 AND (i.a61 = 2 OR i.a61 = 3) THEN 1 ELSE 0 END) AS big_car_reserve_num,    (CASE WHEN i.a6 = 1 AND i.a61 = 1 THEN 1 ELSE 0 END) AS big_car_white_list_num,    (CASE WHEN i.a6 != 1 AND (i.a61 = 2 OR i.a61 = 3) THEN 1 ELSE 0 END) AS small_car_reserve_num,    (CASE WHEN i.a6 != 1 AND i.a61 = 1 THEN 1 ELSE 0 END) AS small_car_white_list_num,    (CASE WHEN (i.a61 = 2 OR i.a61 = 3) AND i.a44 REGEXP '[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_reserve_num,    (CASE WHEN i.a61 = 1 AND i.a44 REGEXP '[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_white_list_num,    CURRENT_TIMESTAMP() AS update_timeFROM    ods_test_mysql_test_record_s i    LEFT JOIN ods_test_mysql_test_barrier_s b ON i.a22 = b.a1WHERE i.a2 < '2022-12-30 00:00:00' LIMIT 10000;

图片图片9TH28资讯网——每日最新资讯28at.com

测试 4

最新官方性能测试报告:https://doris.apache.org/zh-CN/docs/benchmark/ssb/9TH28资讯网——每日最新资讯28at.com

高可用测试

如下图FE3台组建一个高可用集群,分别为:9TH28资讯网——每日最新资讯28at.com

  • 172.17.0.3   FOLLOWER
  • 172.17.0.4  FOLLOWER
  • 172.17.0.5  MASTER

图片图片9TH28资讯网——每日最新资讯28at.com

下面对会对常见一些异常场景进行测试验证,以下部分测试案例9TH28资讯网——每日最新资讯28at.com

MASTER下线测试

测试结果

成功,所有操作符合预期9TH28资讯网——每日最新资讯28at.com

测试过程

登录172.17.0.5 服务器杀掉FE节点9TH28资讯网——每日最新资讯28at.com

图片图片9TH28资讯网——每日最新资讯28at.com

9TH28资讯网——每日最新资讯28at.com

查看FE节点状态是否正常, 登录172.17.0.3服务器查看状态,执行以下命令9TH28资讯网——每日最新资讯28at.com

SHOW PROC '/frontends';

可以看到172.17.0.4成为了master,而172.17.0.5显示已经不在线了 Alive=false9TH28资讯网——每日最新资讯28at.com

图片图片9TH28资讯网——每日最新资讯28at.com

执行插入数据操作,可以看到执行成功。9TH28资讯网——每日最新资讯28at.com

图片图片9TH28资讯网——每日最新资讯28at.com

启动172.17.0.5,查看是否能加入集群9TH28资讯网——每日最新资讯28at.com

sh /root/fe/bin/start_fe.sh 172.17.0.3:9010 --daemon

通过日志可以看到启动成功,并成为了FOLLOWER节点9TH28资讯网——每日最新资讯28at.com

图片图片9TH28资讯网——每日最新资讯28at.com

修复缺失或损坏副本

测试结果

成功,所有操作符合预期9TH28资讯网——每日最新资讯28at.com

测试过程

1.执行如下命令看到分区10099的副本损坏,需要对它进行恢复创建空白副本9TH28资讯网——每日最新资讯28at.com

ADMIN SHOW REPLICA STATUS FROM table2 PARTITION (p201706, p201707,p201708);

图片图片9TH28资讯网——每日最新资讯28at.com

2.登录master fe9TH28资讯网——每日最新资讯28at.com

ADMIN SET FRONTEND CONFIG ("recover_with_empty_tablet" = "true");

3.查看数据副本状态9TH28资讯网——每日最新资讯28at.com

ADMIN SHOW REPLICA STATUS FROM table2 PARTITION (p201706, p201707,p201708);

图片图片9TH28资讯网——每日最新资讯28at.com

4.恢复设置9TH28资讯网——每日最新资讯28at.com

ADMIN SET FRONTEND CONFIG ("recover_with_empty_tablet" = "false");

系统Down机重启副本测试

测试结果

成功,所有操作符合预期9TH28资讯网——每日最新资讯28at.com

测试过程

1.停止0.5服务9TH28资讯网——每日最新资讯28at.com

2.查询副本状态9TH28资讯网——每日最新资讯28at.com

ADMIN SHOW REPLICA STATUS FROM table4;

图片9TH28资讯网——每日最新资讯28at.com

3.重启服务,副本状态恢复正常9TH28资讯网——每日最新资讯28at.com

图片 图片 9TH28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-65365-0.htmlDoris到底有多牛,为什么大厂都在使用它?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 自动化测试再升级,大模型与软件测试相结合

下一篇: 单体架构、微服务和无服务器架构

标签:
  • 热门焦点
  • 红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈

    前言在使用SpringBoot开发中或者在求职面试中都会使用到很多注解或者问到注解相关的知识。本文主要对一些常用的注解进行了总结,同时也会举出具体例子,供大家学习和参考。注解
  • 线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 服务存储设计模式:Cache-Aside模式

    Cache-Aside模式一种常用的缓存方式,通常是把数据从主存储加载到KV缓存中,加速后续的访问。在存在重复度的场景,Cache-Aside可以提升服务性能,降低底层存储的压力,缺点是缓存和底
  • 重估百度丨“晚熟”的百度云,能等到春天吗?

    &copy;自象限原创作者|程心排版|王喻可2016年7月13日,百度云计算战略发布会在北京举行,宣告着百度智能云的正式启程。彼时的会场座无虚席,甚至排队排到了门外,在场的所有人几乎都
  • 本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页&ldquo;充值中心&rdquo;入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之&ldquo;想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!&rdquo;曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 朋友圈可以修改可见范围了 苹果用户可率先体验

    近日,iOS用户迎来微信8.0.27正式版更新,除了可更换二维码背景外,还新增了多项实用功能。在新版微信中,朋友圈终于可以修改可见范围,简单来说就是已发布的朋友圈
Top