导读:蜀海供应链是集销售、研发、洽购、生产、品保、仓储、运输、信息、金融为一体的餐饮供应链服务企业,因其业务比较复杂,2020 年底实现了以 Apache Doris 为外围的架构降级,并在 2021 年开始建设以 Apache Doris 为外围的数据中台。本文将从数据接入,数据服务编排,数据安全,Doris 利用等方面进行介绍。
作者 | 蜀海供应链大数据团队负责人 王永绪
业务背景
蜀海供应链是集销售、研发、洽购、生产、品保、仓储、运输、信息、金融为一体的餐饮供应链服务企业,为宽广餐饮连锁企业及批发客户提供整体食材供应链解决方案服务。因其业务比较复杂,2020 年底实现了以 Apache Doris 为外围的架构降级,并在 2021 年开始建设以 Apache Doris 为外围的数据中台。
在应用 Doris 之前,咱们采纳了 CDH 这套数据平台,用了很多组件,但其链路过长,并且开发和保护老本比拟大,最初没有引入一个很好的 OLAP 零碎。
因为咱们的数据历史包袱比拟轻,通过对 Apache Doris 的调研和测试,决定 应用以 Apache Doris 为外围建设数据平台,它有以下劣势:
- 同时反对高并发点查问和高吞吐的 Ad-hoc 查问。
- 同时反对离线批量导入和实时数据导入。
- 同时反对明细和聚合查问。
- 兼容 MySQL 协定和规范 SQL。
- 反对 Rollup Table 和 Rollup Table 的智能查问路由。
- 反对较好的多表 Join 策略和灵便的表达式查问。
- 反对 Schema 在线变更。
- 反对 Range 和 Hash 二级分区。
- 高可用,能容忍局部节点挂掉。
- 运维简略,部署,保护,降级都比较简单,不依赖内部组件。
架构图如下:
因为之前曾经对元数据,数据服务,接入数据品质,血缘关系的建设做过介绍,本文将从数据接入,数据服务编排,数据安全,Doris 利用等方面进行介绍。
数据接入
数据接入性能是数据开发的重要一环,咱们开发了一套数据接入零碎,在 Web 端操作,实现零代码数据接入到 Doris,以下为次要性能介绍:
- 订阅 MySQL Binlog,入仓到 Doris 表。
- 订阅 Kafka Topic,入仓到 Doris 表。
- 数据动静荡涤,在页面编写代码即可实现数据入仓之前的转换。
- 接入工作合并,为节俭资源,反对分库分表在一个工作接入,反对多个 TOPIC 在一个工作接入。
- 动态数据品质校验,配置字段品质规定,进行接入数据品质校验。
- 入仓加密,再接入过程中,能够对敏感数据进行加密后再入到 Doris 表。
- 谬误数据管理,因为网络或者数据谬误等起因,在页面可实现数据的从新入仓。
- 数据接入链路监控,比方谬误数据监控,数据生产链路异样监控,数据生产链路异样监控,工作数据接入趋势图,集群数据接入趋势图等。
数据接入工作列表:
数据接入工作配置:
数据接入动静代码解决:
数据服务编排
数据服务是供业务零碎调用 API 获取数据的一个零碎。能够在页面进行 API 新建、编辑、在线开发调试、设置限流、高低线等操作。因为 API 之间可能存在业务逻辑关系,并且不能在配置同一个 API,咱们开发了数据服务编排性能,通过利落拽的形式,让 API 之间可能进行编排并进行数据传递,对外提供 API 时,依然裸露的是一个 API。
举例:用户和用户所属的城市保留在一个 MySQL 数据源,每个城市的销售额保留在 Doris 数据源。要开发的 API 的性能是用户只能查看他所属城市的销售额。那么能够通过服务编排性能来实现,Node1 节点通过用户 ID 获取到城市,Node2 节点获取上游节点的输入 (城市) 作为输出,获取城市销售额作为 API 的输入。
每个节点的输出和输入都能够自定义配置,输出能够来自 API 申请参数,也能够来自上游某个节点的输入,能够来自全局参数,比方用户 ID,分页参数等;
数据安全建设
数据安全是一个很大的话题,波及到方方面面,这里从数据加密,数据权限和数仓数据备份几个方面进行简略介绍。
数据入仓加密
在数据接入过程中,能够抉择对字段进行加密,当接入到 Doris 表后,就曾经是加密的数据,后续的数据分析,能够利用密钥进行解密。
数据接入加密配置:
数据权限
因为公司查看报表的人员散布很广,对于同一个数据模型,每个城市每个区域的销售,经营,工厂人员,管理人员等人员查看到的数据是不一样的,须要准确管制到行权限和列权限,所以 咱们在 Doris 下层开发了一套数据权限零碎,通过配置化的形式,实现数据权限配置,能够准确到行权限和列权限。BI 报表零碎作为一个接入方,引入数据权限客户端并实现相应形象办法即可。
举例 1:对一个报表模型,张三只能查看区域为华北区域或者东南区域的数据;李四,王明只能查看城市为西安或者北京,并且销售额大于 10000 的数据;张四,张五不受限制,其他人无任何权限。
模型行级权限规定列表:
行级别赋权规定编辑:
举例 2: 所有人都能查看报表数据,然而每个人只能查看本人所在城市,并且金额大于 200 或者金额小于 100 的数据。
自由组合规定条件和规定关系:
人员标签治理:
举例 3:列权限规定,能够针对用户设置禁止查看,数据脱敏等规定
列级别权限配置:
数仓数据备份
咱们以 Dori 作为存储和计算的外围,Doris 自身数据曾经是多正本存储,然而思考到容灾,咱们还是会对外围接入数据进行备份到 HDFS,为此开发了一套数仓数据备份零碎,把 Doris 表依照全量或者分区,定时备份到 HDFS。
备份打算配置:
备份打算工作列表
Doris 的利用
咱们用 Doris 承载了数据分析的计算和存储。此外,还存在一个这样的场景:业务的 MySQL 数据库数据始终在增长,大量的历史数据影响业务线上性能,而且不能间接删除,因为还有低频的历史数据查问,为此,咱们基于 Doris 开发了一套业务历史数据归档零碎,能够定时把不再变更的历史数据进行增量归档,通过数据服务零碎提供数据查问,把归档的数据推送给业务方,业务方进行校验,并删除历史数据。
归档打算列表:
归档打算配置:
数据推送打算配置:
收益
目前以 Doris 为外围的数据平台,曾经撑持了公司几十个业务零碎的数据查问和数据分析需要。为 BI 智能剖析,各业务零碎提供了优异的查问性能,并且极大缩小了数据平台保护,数据开发,数据中台建设的老本。
- 数据实时接入稳固牢靠,通过 Stream Load,实时接入了数千张表,每天接入数据总条数在亿级别,十分稳固牢靠;
- 反对高并发高性能的数据在线剖析查问,每天对 Doris 的在线剖析查问次数在百万级别,大部分 SQL 在毫秒级别,慢 SQL 也有很大优化空间,并且 Doris 会主动做一些场景下的查问优化;
- 通过间接查问原始接入表,建设物化试图,建设索引,撑持了多个低延时高并发的实时查问需要。并且多表 Join 性能优异;
其余:
- Doris 的整体架构简略,运维老本很低,可在线滚动降级,可节俭人力专一于数据中台的建设以及业务开发;
- Doris 高度兼容 MySQL 协定,交互式查问剖析,提供高效的数据开发体验;
- 高可用,数据分区多正本存储,不会因为局部节点的异样导致整体服务不可用;
- 宽泛生态兼容,社区提供了和 Flink,Datax 等大数据交互的 Doris 插件,通过 Broker 导入导出数据简略快捷;
- 社区沉闷,Doris 性能和性能在一直的裁减和晋升,遇到问题可能失去社区的亲密帮忙。
退出社区
欢送更多酷爱开源的小伙伴退出 Apache Doris 社区,参加社区建设,除了能够在 GitHub 上提 PR 或 Issue 之外,也欢送大家积极参与到社区日常建设中来,比方:
加入社区 征文活动,进行技术解析、利用实际等文章产出;作为讲师参加 Doris 社区的线上线下流动;积极参与 Doris 社区用户群的发问与解答等。
最初,欢送更多的开源技术爱好者退出 Apache Doris 社区,携手成长,共建社区生态。
SelectDB 是一家开源技术公司,致力于为 Apache Doris 社区提供一个由全职工程师、产品经理和反对工程师组成的团队,凋敝开源社区生态,打造实时剖析型数据库畛域的国内工业界规范。基于 Apache Doris 研发的新一代云原生实时数仓 SelectDB,运行于多家云上,为用户和客户提供开箱即用的能力。
相干链接:
SelectDB 官方网站:
https://selectdb.com (We Are Coming Soon)
Apache Doris 官方网站:
http://doris.apache.org
Apache Doris Github:
https://github.com/apache/doris
Apache Doris 开发者邮件组:
dev@doris.apache.org