一、货拉拉云台是什么

货拉拉云台是货拉拉内部自研BI(Business Intelligence(商业智能),简称:BI)可视化渠道。

截至2022年12月,货拉拉事务范围已掩盖352座中国内地城市,月活司机达66万,月活用户达950万,随着公司事务不断扩张,对数据剖析和数据价值转化的需求更加显着,原先供给的数据剖析渠道在必定程度上现已无法满意事务的多样化需求,且无法直接与公司现有的权限办理体系、事务使用体系打通,更存在必定的数据权限管控和数据走漏危险,此刻打造自研BI渠道的迫切性越来越强,货拉拉云台便应运而生。

二、货拉拉云台体系架构介绍

其实“商业智能”(BI)一词最早出现在1865年,当时理查德米勒德文斯(Richard Millar Devens)在《商业趣闻百科全书》(Cyclopaediaof Commercial and Business Anecdotes)中用它来描绘银行家亨利福尼斯爵士(HenryFurnese)通过搜集并运用数据信息,先于竞争对手采纳举动,从而到达获利的方针。时至今日,BI经过了历史沉淀,被咱们重新定义为:运用技能手段或办法,将数据转化为知识,用以支撑企业决议方案、开掘商业价值的一套解决方案。以数据为中心,BI的核心功用首要有 数据仓库 、数据ETL、数据剖析、数据挖掘和 数据可视化

跟事务信息化对各个事务体系不同事务之间的用户数据处理不同的是,数据信息化是跨事务、跨体系之间的数据剖析洞悉与整体目标产出,它能够反向推动事务智能化建造,提高决议方案科学度,所以往往更依靠框架、模型和算力,而这也决议了企业数据信息化的高度。随着自然语言处理、人工智能、湖仓一体等技能的发展,现已有人提出了AI+BI的概念,Databricks(由 Apache Spark 创立者建立的大数据处理渠道公司)也认为同时支持 BI 和 ML 的数据渠道根底设施才是数据剖析的未来。未来的BI只需求你对着核算机说出问题,即可取得答案。可是从“现在”和“国内”来说,真实地完结商业“智能”还是有很遥远的距离。

货拉拉云台系统架构设计

接下来咱们看一下货拉拉大数据体系架构,简略划分如下:

根底层、渠道层:通过数据仓库,算力渠道等根底设施(包含数据接入,运算引擎和管理开发等)为公司供给数据存储、数据处理、数据开发等才能。

服务层、使用层:首要倾向数据价值挖掘类渠道,充分运用根底层和渠道层的才能,完结公司数据财物价值最大化。

除此之外,货拉拉大数据体系中还建立了数据安全防护体系,如:数据权限管控体系、数据安全审计、数据加密脱敏等。

能够看到整个云台可视化剖析是数据与用户最直接的一个衔接之一,在大数据事务体系中起到一个承上启下的效果。以数据为中心,向上直接对事务用户担任,向下依靠数据仓库、数据ETL、数据剖析、数据挖掘等。

货拉拉云台系统架构设计

云台 体系的设计方针:让用户在几分钟内就能制造出专业的场景化的数据报表。

运用流程:增加数据源 → 创立数据模型(模型装备&自定义SQL剖析)→ 可视化报表制造(报表制造&仪表盘制造)→ 发布(多事务体系同享&报表权限管控)

报表制造进程中运用了可视化开源组件Apach Echarts,用户仅需求通过拖拽图表组件以及数据字段就能十分容易地制造出一个报表。

货拉拉云台系统架构设计

对接多种数据源:

在数据源层面,云台能够对接的数据源首要以内部自用类型为主,比方MYSQL、PostgreSQL,Phoenix、Doris、Hive等,也能够支持Excel/CSV数据文件的上传,同时对接了公司内部体系快速报表、目标库,对公司内部数据源用户无需知道详细的账号暗码也能够衔接运用。

货拉拉云台系统架构设计

数据模型:

前边咱们介绍到用户创立数据模型有两种方法,分别是模型装备和编写自定义SQL,模型装备对非技能人员比较友爱,云台已抹平不同数据源查询句子之间的差异,能够做到零代码,用户不需求懂SQL句子的书写,通过拖拽的方法即可创立一个数据集和报表。自定义SQL的方法,除了一些必要的限制,用户能够十分灵敏的创立数据模型。

货拉拉云台系统架构设计

货拉拉云台系统架构设计

报表制造:

在报表制造工作台,也便是制造报表的首要修改页,现在支持14种图表类型,如目标卡、漏斗图、穿插表、散点图、堆叠图等。

用户能够运用拖拽维度和衡量字段的方法进行数据绑定、全界面化的增加和修改图表组件,还能够进行自定义排序、算计、分组、topN、同环比剖析等操作,简略灵敏易用。

货拉拉云台系统架构设计

仪表盘制造:

在仪表盘界面,用户运用拖拽式选取一些现已修改好的图表和过滤组件,即可生成交互式的可视化页面完结自助剖析。

完结的报表支持数据下载,且通过发布后能够与大数据数据安全管控体系对接,完结报表权限的统一办理,对一些敏感数据要求比较高的用户比较友爱,还能够同享到多个事务体系。

货拉拉云台系统架构设计

三、货拉拉云台可视化技能设计

数据源衔接:

市面上可视化渠道大多有个通病,便是数据源衔接一般都需求填用户名和暗码,因为许多商业智能BI东西考虑更多的是通用化,这点对事务用户来说其实不太好,因为数据源的用户名和暗码只要技能开发才知道,用户每次运用都要向开发拿,其间沟通本钱和数据安全无法避免。

作为内部自研体系,就能很容易地避免这种状况,用户甚至都不需求知道数据源衔接串、暗码等,仅知道所需数据在哪个库哪张表即可,这样也便利针对用户进行权限操控,而不是创立许多衔接账号。

货拉拉云台系统架构设计

数据模型:

前面架构介绍也有提到,学习了业界可视化渠道,云台也能够通过模型装备和写SQL的方法,创立数据模型,包含多表Join,通过拖拽的方法将SQL句子查询的成果绑定到可视化图表上。

数据模型会依据查询的字段属性主动生成维度和衡量,主动识别字段类型,比方整数、小数、字符串、日期,其间数值类型默认识别为衡量,用户也能够自行调整维度或许衡量以及字段类型、字段备注等,衡量能够进行惯例的聚合操作,其间包含Sum、Count、Avg、Max、Min,去重计数等,维度和衡量均能够修改字段表达式对字段进行仿制(Copy)、删去(Delete)和转化(Transform)等函数操作。对详细的运用字段,咱们也供给了列级和行级的权限管控。

货拉拉云台系统架构设计

查询的灵敏多样性:

可视化渠道的查询需求十分灵敏且多样化,比方SQL的Where查询,数据需求层层过滤,数据的格式转化,比方小数位/百分比,日期时刻的年/月/日聚算核算,维度的分组,维度和衡量的排序、图表与图表之间的下钻/联动,过滤器之间的联动等。

云台交互式的数据过滤现在首要分为单个图表的过滤和仪表盘的大局过滤两种,单个图表的过滤比较简略,便是数据模型的单一维度Set集合。而仪表盘的大局过滤就相对比较复杂了,每个挑选器之间都或许存在联动关系。

比方a联动bcd、a+b联动c,a+c联动d,只是这3种过滤联动关系,乍一看估计不太容易理解,但举个例子就非清晰了:假定a是大区、b是省份、c是城市、d是区域,那么广东省对应华南,a+b联动c便是华南区/广东省下一切的城市,a+c联动d实际上便是a+b+c联动d,那么d就等于华南区/广东省/深圳市下的一切区域。

货拉拉云台系统架构设计

当然除了数据的挑选和过滤器之间的联动以外,还有图表之间的联动、下钻。例如点击图表里的中山市,想让下边的某一个组件展现中山市的详细数据。而下钻有点相似多层级过滤器,这些都是过滤器之间的灵敏交互运用。

货拉拉云台系统架构设计

数据核算:

用户详细能够做的核算操作包含:字段表达式转化、日期时刻聚算核算、维度分组、算计、TopN等,这些最终都会转为SQL句子在数据库层面核算成果。

还有一种是根据SQL的查询成果,在内存中进行二次核算。比方穿插表,单次SQL恳求得不到最终成果,需求在内存中进行二次核算。

功用优化:

页面查询依靠底层数据库引擎,比方查询Hive咱们运用了Presto,功用方面就有了很大的提高,还有Doris、ClickHouse、ElasticSearch等。除了查询引擎,体系层面也有许多当地能够优化,比方以下几点:

  1. 源数据缓存 因为可视化渠道的特殊性,除了报表的最终数据成果以外,整个报表制造进程中用户其实不太关注一切数据,所以只需对其间一部分数据查询即可,到了真实展现报表的时分才显现全部数据。比方一个日期维度的报表,在拖拽修改时显现1个月的数据,而不是1年,这样对制造报表体会比较好,查询也比较快,云台这里首要运用了H2
  2. SQL查询成果缓存:运用了Redis缓存了SQL执行成果,能够到达较好的功用效果
  3. 挑选器下拉选项值的缓存:下拉选项值一般都变化较少,耐久化到数据库,定时更新,对查询功用有很大协助
  4. 衔接池遇到并发高:当衔接数打满且慢查询比较多时,新建衔接池处理新恳求,确保不影响新进来的查询,但需注意别超越数据库max_user_connections
  5. 穿插透视表的查询:因为行排序后前n条数据是固定的,那就能够把当前页行的成果作为查询条件,去查询匹配小的部分数据,这样功用提高比较大
  6. 中止大数据量查询:运用google concurrent SimpleTimeLimiter中止查询时刻过长的线程,这种十分耗CPU和内存
  7. 异步多线程:比方异步下载数据

四、结语以及下一步规划

本文首要从开发人员的视点介绍了货拉拉云台可视化产品的架构设计思路。作为一个自研的可视化渠道,云台在货拉拉仍处于内部孵化阶段,存在许多不足之处,比方有些数据源查询速度不够快、操作流程太繁琐、提示不够友爱等等。但随着接入体系的增加以及用户量增加,咱们会尽力完善体系功用、优化用户体会,确保体系稳定,力求让云台成为企业降本增效的利器。

技能层面的下一步规划,大概有两点:

  1. 体系稳定性管理:体系稳定性名列前茅。老子曾说,“治大国若烹小鲜”,管理体系也相似,要掌握火候,精选食材,用料恰当,辅以煎炒烹炸煮,方能出一盘好菜。咱们知道体系稳定性管理除了代码健壮性,首要有3个方面:监控告警、压测和演练,下一步方案会聚焦在体系代码的健壮性建造和监控告警降级等。
  2. 代码设计整合:随着体系功用越来越丰富,代码设计方面很难做到十全十美,功用与可读性之间往往是选择题,如何在多个选择之间权衡取舍,并不是一件简略的工作。所幸有一些这方面的书籍可供参考,比方《代码整洁之道》《设计模式》等。

笔者介绍:黄书劲 | 高档大数据工程师,曾就职于腾讯全资子公司,现任职于货拉拉大数据使用组,首要担任数据云台、实时剖析等渠道的开发设计以及维护工作。在大数据使用建造方面有着丰富的实战经验和较强的问题解决才能。