58同城敏捷BI系统的设计与实践

导读: 本次分享题目为 58 敏捷 BI 系统的设计与实践,由来自 58 同城负责星火可视化分析产品自研团队的张自博老师带来经验分享, 主要围绕四个方面展开介绍:

  • 背景介绍:敏捷 BI 平台介绍
  • 架构设计:敏捷 BI 技术架构介绍
  • 难点攻关:核心功能技术探究
  • 未来展望:敏捷BI平台迭代方向

分享嘉宾|张自博 58同城 资深研发工程师

编辑整理|李挺 上海琢学

出品社区|DataFun

01

背景介绍

星火是 58 同城自研的新一代具备 SaaS 能力的数据分析可视化产品,提供敏捷BI、可视化报告、Dashboard 服务、数据大屏等能力,以数据洞察为导向,从数据接入到终端展现,提供数据生态全链路解决方案。

58同城敏捷BI系统的设计与实践

1. 星火功能介绍

结合产品功能具体认识一下:星火主要包括分析工作台、运营工作台、开放服务、驾驶舱、星图等五大功能模块。用户在星火的核心工作区集中在分析工作台,提供接入数据源、新建数据集、开展数据处理、仪表板制作——如下图右所展示的为“超市销售数据报表”示例场景仪表板,其中包括时间过滤器、城市筛选过滤器、相关指标卡、畅销商品词云图、每日销量和净利润趋势图、销售额对比排行榜、商品销量与销售额的雷达图等展示组件效果,以及仪表板操作(编辑、预览、导出、发布)。

58同城敏捷BI系统的设计与实践

下面,我们详细讲一下看板制作页面,主要分为数据集展示区(待分析字段)、工作台(拖拽设计)、设置区(组件属性配置)等三部分。

58同城敏捷BI系统的设计与实践

2. 敏捷 BI 行业背景

对敏捷 BI 的行业现状,成熟的 BI 产品包括国外的 Tableau、网易的有数 BI、字节的 DataWind、阿里的 QuickBI、BDP、FineBI 等,星火在设计研发过程中,充分借鉴了主流产品的特点,包括数据安全、数据处理、可视化等。

58同城敏捷BI系统的设计与实践

3. 星火功能架构

下面主要介绍一下星火的架构设计特点。

针对功能架构:

(1)在数据接入层 ,支持非常丰富的数据源接入,包括本地数据源 CSV、Excel;关系数据源 MySQL;MPP 数据源 Kylin、ClickHouse、StarRocks 等;大数据数据源 Tidb、Hive、58Hive 等。

(2)在数据处理层 ,提供数据集管理、字段管理、数据集抽取等核心功能。

(3)在可视化分析层 ,主要支撑用户开展仪表板制作,包括图表制作、过滤器设置、联动跳转、下钻分析、自定义图标等,还支持图标预览与导出功能。

(4)在数据展示层 ,将制作好的仪表板发布到驾驶舱,支持用户访问查看;还同时支持数据大屏、定时邮件服务、以及开发者服务(OpenAPI、外嵌报表)等功能。

58同城敏捷BI系统的设计与实践

星火同时也支持 SAAS 服务。SAAS 服务支持基于 RBAC 的细化到行列的权限控制,支持丰富的数据源接入以及基于 ClikcHouse 的极速缓存查询能力,提供基于域名的资源隔离以及物理级别的服务隔离,同时在 SAAS 版和内部版星火保持同步迭代,外部用户也可以第一时间体验全新功能。

58同城敏捷BI系统的设计与实践

4. 星火推广效果

覆盖集团内部、外部用户,星火目前的内部服务支撑 17 个 BG,合计 365 个项目,在线仪表板 8600+ 个,用户规模超过 2500 人。

58同城敏捷BI系统的设计与实践

--

02

架构设计

从访问层入手,在流量产生后,静态资源会通过 CDN,其他流量会通过代理层到网关层,星火的网关基于 Springcloud gateway 实现,会同星火后端云服务,都以微服务的方式注册到 Nacos 中,网关提供了服务路由、灰度上线、以及链路日志等功能;访问请求经过网关层进行负载均衡,同星火后端云集群进行交互,云集群主要由 BI 服务、星火生态两部分服务节点组成,BI 服务包括工作台和驾驶舱;星火生态服务包括开放服务、NPS 服务、星图、星火活动等;借助星河的大数据任务调度能力,实现邮件订阅服务、定时抽取等,也支持用户直接在星河进行 ETL 开发工作。

同时星火也将星火公共服务,抽象成 SCF 微服务,如截图服务、数据查询服务等,支持其他业务线使用。

在数据层,选取 MySQL 作为系统库,Ridis 作为缓存,ClickHouse 作为 MPP 加速层。

58同城敏捷BI系统的设计与实践

通过这套架构,实现了灰度发布、链路日志、异构查询、MPP 加速、数据 ETL 及域流量隔离等功能。

--

03

难点攻关

星火平台的核心功能技术探究——下面围绕权限体系、查询性能、缓存加速、可视化资源库、开发者服务等方面展开介绍。

58同城敏捷BI系统的设计与实践

1. 完备的权限体系

作为 BI 平台的基础功能,一套完善的权限体系,是保障数据安全、用户千人千面权限控制的基础。星火基于主流的 RBAC 模型思想,实现了一套覆盖系统功能权限和数据权限的严密高效的权限体系。

58同城敏捷BI系统的设计与实践

RBAC 模型思想的核心在抽象出权限拥有者、权限资源、资源操作等三个主要因素。鉴权过程就是对“Who”是否对“What”进行“How”操作的逻辑判断。

星火权限分为功能权限和数据权限。用户权限由用户本身的权限、所属用户组的权限、所拥有角色的权限,共同决定。

58同城敏捷BI系统的设计与实践

功能权限可直接赋给用户,也可以赋给角色,一个用户可以拥有多个角色。数据权限包括行权限和列权限,星火可给用户、用户组进行数据权限设置。支持用户可同时拥有多个用户组。

功能权限包括用户能否新建数据源、数据集,能否对数据集进行编辑;数据权限即可访问、可查看等,例如针对一张全国业务数据表,行权限是指可查看区域数据范围,列权限是指哪些列可见,哪些列不可见。

下面逐项介绍一下功能权限构成:

(1)功能权限下的菜单权限 :星火角色体系包括域管理员、项目组管理员、普通用户。每个域有对应的域管理员,域和域之间资源完全隔离;每个域内可以配置多个项目组,每个项目组由项目组管理员进行维护;所有的域共用一个驾驶舱空间。

58同城敏捷BI系统的设计与实践

(2)功能权限下的资源权限 :星火的资源主要包括数据源、数据集、仪表板等三类。每类资源都提供了使用和管理两种权限,可以对应赋给用户或用户组。

58同城敏捷BI系统的设计与实践

资源权限配置界面如下:

58同城敏捷BI系统的设计与实践

下面介绍一下数据权限构成:

(1)数据权限之列权限 ,星火提供三类列权限配置模式——允许查看所有列;允许查看指定列;不允许查看指定列等。

58同城敏捷BI系统的设计与实践

(2)数据权限之行权限 ,星火提供两种行权限配置模式——基于固定值或属性值权限设置。

58同城敏捷BI系统的设计与实践

下面介绍一下资源操作鉴权过程:

星火平台的资源操作权限由“资源”+“操作”构成,底层通过“位”存储,鉴权基于二进制运算实现。

58同城敏捷BI系统的设计与实践

星火资源操作鉴权基于“用户表”、“资源表”、“用户权限表”构成。以是否拥有“报表删除权限”配置为例,将“报表”的“新建”操作对应位设置为“0b00000001”,即十进制的“1”、将“报表”的“删除”操作对应位设置为“0b00000010”,即十进制的“2”。判断某个用户是否具有某张报表的删除权限,就基于“用户权限表”,组织查询语句生成。示例如下:

select operation&2 from user_permission where user_id=1 and resource_id=1

同样的赋权、删除权限,也可以通过二进制方式实现。

2. 高性能 BI 查询引擎

(1)星火查询引擎的设计背景——敏捷 BI 需要解决的问题

  • 问题1:查询慢

对于常规的关系库,如 MySQL 等,查询情况还可以。大数据 Hive 库,查询性能就很糟糕,查询计算运行等待时间较长,短则几分钟,长则 1~2 小时。无法支撑敏捷 BI 分析应用。

  • 问题2:语法多样性

因为敏捷 BI 需要接入的数据源的多样性,不同的库语法多样,甚至引入异构查询等问题。

  • 问题3:异构数据查询

在 BI 分析场景中,存在基于不同数据源的数据进行交叉整合分析,引入异构数据查询的需求。

  • 问题4:二次计算

在 BI 分析过程中,存在大量的如同比、环比、累加占比等功能,引入较多的二次计算需求。

58同城敏捷BI系统的设计与实践

(2)星火查询引擎的设计原理——高性能 BI 查询引擎

数据查询请求生成后,会进行请求解析,若无快速计算,会进入普通取数——请求进入取数引擎——针对不同的数据源,通过方言适配器将相应的方言请求转化为对应的 SQL,进入 SQL 优化引擎,继而通过数据查询服务进行取数,涉及直连取数(直连数据库)和抽取取数(MPP 数据库)两种应用模式。

针对快速计算请求,进入快速计算引擎,通过调用取数引擎将数据读取至内存中,通过内存计算完成相关快速计算任务。

58同城敏捷BI系统的设计与实践

以最简单的同环比计算流程为例:首先获取当期数据;再计算同期日期范围,分普通同环比和范围同环比,实现同期数据获取;再内存中完成同期值、差值、差值百分比等计算;常规计算完成后,还支持进行二次过滤和排序等处理任务。

58同城敏捷BI系统的设计与实践

星火支持的快速计算清单:包括同环比、占比、累加、差值百分比、差值以及同期值等指标计算。

58同城敏捷BI系统的设计与实践

3. MPP 缓存加速

MPP 缓存加速的触发场景:

  • 针对 Hive 数据表,原生的查询性能比较差,不适合 OLAP 分析。从而需要将数据抽取进入中间数据库;
  • 针对 Excel、CSV 等数据源,无法通过 SQL 查询取数;
  • 另外针对内部的云窗文档系统,需要提供数据抽取的能力。

58同城敏捷BI系统的设计与实践

星火缓存加速的配置页面:提供开启抽取开关,也支持手动抽取。

58同城敏捷BI系统的设计与实践

抽取设置:支持原表配置、目标表配置。

58同城敏捷BI系统的设计与实践

星火平台从接入层到展现层的框图如下 :支持数据源包括本地数据源、大数据平台、关系型数据库等;直连模式基于 JDBC 链接方式取数;对于抽取模式,需要通过集成服务配置定时调度,将数据抽取至 MPP 数据库,最后通过查询服务取数提供给分析以及报表服务。

58同城敏捷BI系统的设计与实践

下面,详细讲解一下 星火平台抽取数据的流程图 。用户在平台上新增抽取配置后,星火BI 会在 ClickHouse 中创建一张目标表,通过星河调度系统提供的 OpenAPI 建立抽取任务,继而根据用户配置的定时时间,创建抽取task完成将数据从Hive表抽取到 ClickHouse;用户在访问报表时,星火会自动完成数据源转换(把 Hive 转换为ClickHouse),通过数据查询服务,直接从 ClickHouse 中读取数据。

58同城敏捷BI系统的设计与实践

最后,再具体分享一下 ClickHouse 在星火的应用实践

  • ClickHouse 是一个非常高性能的 MPP 数据库,在单表查询方面性能优越;
  • 基于 Zookeeper 提供的分布式协调能力,也支持分布式表。

可将 ClickHouse 在星火的实践提炼为以下四个方面:

  • 星火使用了副本合并数的表引擎,实现了副本能力;通过创建分布式表,实现了分片能力。通过两种技术方案的融合,保障了集群的高可用和高性能。

具体实现:在新建目标表时,会在本地节点创建 Local 表,表引擎使用 ReplicatedMergeTree;然后创建一张分布式表,即每个节点上本地表的全局代理。

  • 基于分布式表,星火的读写逻辑做了差异化设计实现

读,通过分布式表读取,发挥了 ClickHouse 非常高效的分片和副本能力,实现极速查询。写,由于在写分布式表时,ClickHouse 会在集群节点之间进行数据同步传输,存在写放大的问题,降低了整体效率。星火通过直接轮训批量写本地表的方式,提高了写入性能。

  • 随着业务增长,不可避免的引出磁盘空间不足的问题

星火通过将 ClickHouse 的磁盘挂载到自研的 WFS 分布式文件系统,实现存算分离,解决了存储空间不足的问题。

  • 进一步降低星火运行风险

利用 ClickHouse 的多分组能力,通过集群配置,可以将 ClickHouse 节点配置多个独立的集群。星火在创建表时会进行均匀打散,创建到多个不同的集群,降低单集群运行的风险。

58同城敏捷BI系统的设计与实践

4. 数据可视化资源库

在使用星火过程中,用户提出:

(1)星火通用组件不满足需求,这时有JS能力的用户可以通过自定义方式扩展组件;

(2)用户在实现自定义组件时缺乏统一标准;

(3)需要支持自定义成果的分享?等问题。

综上原因,星火通过联合 58UXD 打造了 58 可视化资源库-星图。

58同城敏捷BI系统的设计与实践

星图包括图表库和 Wcharts 两部分。Wcharts 是星火和 58UXD 合作推出的可靠解决方案。图表库是面向全网的图表开放社区,打通了图表开发和应用的闭环。用户在星火工作台完成自定义组件的创建,可发布至图表库,也可以直接调用其他用户发布的成果。

58同城敏捷BI系统的设计与实践

Wcharts:提供包含折线图、热力图、趋势图等丰富的前端资源。

58同城敏捷BI系统的设计与实践

图表库提供包括和弦图、水波图等,均由用户自定义开发制作并上传提供。

58同城敏捷BI系统的设计与实践

用户若需要使用星图的自定义组件,在工作台图表制作页面右下角的社区图库中,可以一键访问。

58同城敏捷BI系统的设计与实践

5. 星火开发者服务

星火为了解决系统制作数据图表的开发成本高、维护难等问题。提供了丰富的开放接口以及安全便捷的报表嵌入功能,支持将报表无缝集成到企业专有平台中。

星火提供的开发者服务包括 :OpenAPI(资源列表、权限管理、用户体系等)、嵌入服务包括报表嵌入链接生成、认证方式管理、防传播、iframe SDK 等,业务系统通过生成的嵌入链接,方便的将*火报星**表嵌入至业务系统内,通过 OpenAPI 非常高效的实现报表权限管理的功能。

58同城敏捷BI系统的设计与实践

业务系统调用*火报星**表的示例效果:

58同城敏捷BI系统的设计与实践

--

04

未来展望

未来星火将推出更多功能,提供:

  • 更多样的数据源:支持 API 数据源、流式数据、非 SQL 语法数据源等的接入;
  • 更方便的数据处理:轻量化的 ETL 能力、电子表格能力;
  • 更强大的可视化组件:图形语法组件、自定义数据门户;
  • 更智能的星火:包括智能预警、指标归因分析等。

58同城敏捷BI系统的设计与实践

欢迎大家访问星火在线体验。

58同城敏捷BI系统的设计与实践

今天的分享就到这里,谢谢大家。

|分享嘉宾|

58同城敏捷BI系统的设计与实践

张自博|58同城 资深研发工程师

2016年中北大学本科毕业;东方国信NLP团队核心研发;58同城大数据开发平台核心研发,目前负责58同城敏捷BI-星火的后端工作。

|《数据智能知识地图》*载下**|

上下滑动⬆️⬇️,查看《数据智能知识地图》 大数据平台板块 (点击可看大图),关注公众号“大话数智”,*载下**完整版知识地图

58同城敏捷BI系统的设计与实践

58同城敏捷BI系统的设计与实践

|DataFun新媒体矩阵|

58同城敏捷BI系统的设计与实践

|关于DataFun|

专注于大数据、人工智能技术应用的分享与交流。发起于2017年,在北京、上海、深圳、杭州等城市举办超过100+线下和100+线上沙龙、论坛及峰会,已邀请超过2000位专家和学者参与分享。其公众号 DataFunTalk 累计生产原创文章900+,百万+阅读,近16万精准粉丝。