开发者

58集团 x DorisDB:全面升级数据分析能力,满足多场景业务分析需求?

58集团是中国互联网生活服务领域的领导者,拥有国内最大的生活服务平台,复盖汽车业务、房地产业务、当地服务、招聘业务、金融业务等各种业务场景。随着业务的快速发展,越来越多的分析需求出现,如安全分析、商业智能分析、数仓报告等。这些场景的数据体很大,对数据分析平台提出了很高的要求。为了满足这些分析业务的需求,DBA团队从2021年初开始调查各种分析数据库,包括DorisDB、TiFlash、ClickHouse等,评价其性能和功能。

总体评价,DorisDB全面,在单表/多表查询性能、物化视图、SQL支持等方面能力符合集团业务需求。目前,我们已经落地了两套DorisDB集群,还有1-2套正在测试阶段,后续会进行进一步推广和落地更多应用。

一、评价信息

我们从两个方面评价以上分析型数据库。一个是功能,另一个是性能。每个数据库都有自己的特点。

1.功能方面

<.性能方面

2021年初,我们完全比较了3个数据库的性能,包括TiFlash(4.0.10)、ClickHouse(20.3.53)、DorisDB(1.1)、多个数据库的性能。TiDB5.0的TiFlash已经支持MPP里4.0版本,无MPP。

测试使用行业流行的StarSchema、Benchmark星模测试集。结论如下:

单表/多表查询,DorisDB整体时间最短。

单表查询:DorisDB速度最快,ClickHouse次。

多表查询:DorisDB的所有执行都最快。

TiDB/TiFlash

TiDB/TiFlash整体时间表/多表查询最长。

TiDB执行计划多走TiKV,执行时间长,数据量多,执行时间长。

TiDB强制执行TiFlash,单表多加快速度,多表慢,但4.0.10版本的执行计划多不去。

关于Clickhouse

Clickhouse多表查询,需要更改SQL,使类型一致,区分段名、表名的大小写。

ClickHouse单体性能强,性价比高。

ClickHouse大表查询方式效率好,多表相关效率明显降低。

关于DorisDB

DorisDB表相关查询速度非常快。

【单表查询结果】

【多表关联查询结果】

二、业务需求及应用

1.安开发者_StackOverflow社区全分析相关业务

每天,内部服务器上的各类操作和运行情况,是内部安全人员比较关心的。然而,服务器上每天都有大量的信息。如何快速收集和统一实时分析是这个数据分析场景的挑战。具体来说,安全分析业务应对

数据量大,每天需要数亿数据落地

实时快速分析支持。例如,最近15分钟,机械信息的情况如何

需要定期整理数据

数据量不断累积,数据总量规模增加快。

综合评价后,选择DorisDB支持安全分析相关业务。在使用初期,我们使用了DorisDB的详细模型(即保留所有历史数据),20天左右,数据行数总量为800亿人,磁盘空间占有8T左右,详细数据量庞大,查询性能也受到影响。

后与内部研发人员讨论,业务分析不需要详细的历史细节,数据可以根据指定时间的粒度汇总。便将数据模型改成聚合模型,设置日期、小时和15分钟三个时间维度,指标数据按照这个级别的时间维度进行聚合,聚合后每天新增的数据在10亿左右,数据量降低了75%,查询性能也得到大幅提升。且采用kafka routine load的方式在DorisDB中进行导入聚合,避免了引入冗余的组件,统一了技术栈。

2.DBA内部业务

MySQL中间我们使用的ProxySQL,ProxySQL支持展示SQL。但是,操作很麻烦,每次重置都要重新开始统计。如何分析指定时间的SQL情况,是困扰我们的另一个问题。

每个ProxySQL都有自己的全日志,我们可以分析全日志来获取所需的信息。第一个结构方案是使用ES、ProxySQL全日志ndashgtfilebeat采集ndashgtkafkandashgtlogstashndashgtess。但是,在实际使用中,可以看到流水,但是分析的时候很麻烦,写SQL比较方便。

之后,结构变更为ProxySQL全日志ndashgtfilebeat采集ndashgtkafkandashgtdorisDB,可以迅速分析。

另一个问题,因为线上的ProxySQL的日志量特别大,不能所有集群都开,我们设置了可以选择开启,这样有需要的集群才进行分析。降低存储的压力。

举例:分析某30分钟某集群的SQL执行情况,按照次数排序,查询很快。

除了上述两个场景之外,DorisDB还被用在了销售使用的报表系统等场景中,包含实时数据分析等业务场景,共50 张表,占用约100T存储空间,查询并发量100-500 。

三、系统运维

1.数据接入

DorisDB支持的数据导入方式很丰富,例如本地文件、HDFS、Kafka(支持csv、json格式)、外表、批量SQL等。数据访问时需要注意的问题如下:

HDFS导入需要提供Namenode的信息,如果提供不方便就无法支持。

外表模式,创建外表后,可以使用insert into select的方式,循环导入到DorisDB的本地表,能比较方便的从MySQL、TiDB导入数据。

日常最常用的是KafkaJson格式的数据,需要开发提供

表格段、段落类型和模型(详细模型、聚合模型和更新模型)。

kafka信息:kafka_broker_list、kafka_topic、client.id等。

Kafka的方式,DBA制作表和导入任务可以导入数据,日常需要注意的是写小工具,看Kafka的数据信息,指出字段,保证成功率。

查看导入任务:SHOWW-ROUTINE-LOADG;关注Statistic、ErrorLogUrls。

2.集群结构

目前为单集群,3个FE、3个BE、Broker按需设置,建立1套监视PrometheusGrafana),建议使用kafka访问数据。

3.运输和自动化

因为DorisDB标准版没有管理部件,所以DBA自己需要制定

标准。例如,运输标准、开发访问标准等

自动配置

自动扩张容量

自动升级

展示、登录

构筑开源监视

自动配置的

自动配置警报、性能警报、

自动配置的

相关运输情况、磁盘状况、集体状况、集体状况等

目前,我们自己已经实现了一些运输规范的制定。例如群端口、目录、开拓结构等,开发了开拓工具:qdorisdb,可以看到所有集群、指定集群、注册、监视节点信息等。

后期我们开发相关的自动化管理工具,整合到我们内部的CDB平台,开发相关报表、工单等,开发人员使用方便。

【看指定集群拓扑】:

【看所有集群】:

4.服务器

现在我们使用以下机器进行配置,后期考虑使用虚拟机配置FE节点。

四、发现的问题和注意事项

如果想混合配置的话,需要事先计划好端口,集团之间需要一定的间隔

DorisDB升级速度快,如果遇到bug,可以咨询官方,及时升级回避

查询报告错误:2021-05-0911:38:56-WARN/p>

mysql.jdbetc.p>

<但还有不少业务场景需要用其他数据库来服务,目前58DBA提供了多种数据库,方便业务方根据自身的场景进行选择。

总结

目前,我们已经落地了两套DorisDB集群,还有1-2套正在测试阶段,后续会进行进一步推广和落地更多应用。最后,十分感谢DorisDB鼎石科技团队专业的支持服务,希望我们能一起把DorisDB建设得更好。(作者:刘春雷 负责58同城MySQL、TiDB数据库、DorisDB的运维工作,主要从事数据库自动化、平台化的建设)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜