当前位置:网站首页>应用实践 | 蜀海供应链基于 Apache Doris 的数据中台建设
应用实践 | 蜀海供应链基于 Apache Doris 的数据中台建设
2022-07-04 20:36:00 【SelectDB】
导读:蜀海供应链是集销售、研发、采购、生产、品保、仓储、运输、信息、金融为一体的餐饮供应链服务企业,因其业务比较复杂,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 官方网站:
Apache Doris Github:
https://github.com/apache/doris
Apache Doris 开发者邮件组:
边栏推荐
- Difference between ApplicationContext and beanfactory (MS)
- WGCNA分析基本教程总结
- Embedded TC test case
- 华为ensp模拟器实现通信安全(交换机)
- nmap扫描
- Jerry's ad series MIDI function description [chapter]
- Le module minidom écrit et analyse XML
- The video sound of station B is very low - solution
- [buuctf.reverse] 151_[FlareOn6]DnsChess
- 网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??
猜你喜欢
How was MP3 born?
华为ensp模拟器 实现多个路由器的设备可以相互访问
WGCNA analysis basic tutorial summary
ApplicationContext 与 BeanFactory 区别(MS)
解析steam教育中蕴含的众创空间
SolidWorks工程图添加材料明细表的操作
Huawei ENSP simulator enables devices of multiple routers to access each other
Jerry added the process of turning off the touch module before turning it off [chapter]
Huawei ENSP simulator configures DHCP for router
admas零件名重复
随机推荐
SolidWorks工程图添加材料明细表的操作
redis事务
TweenMax表情按钮js特效
How was MP3 born?
maya灯建模
Minidom module writes and parses XML
Difference between ApplicationContext and beanfactory (MS)
Advantages of RFID warehouse management system solution
华为模拟器ensp的路由配置以及连通测试
Arcgis 10.2.2 | arcgis license server无法启动的解决办法
Huawei simulator ENSP common commands
数十亿公民信息遭泄漏!公有云上的数据安全还有“救”吗?
杰理之AD 系列 MIDI 功能说明【篇】
解读创客教育中的各类智能化组织发展
Maidong Internet won the bid of Beijing life insurance
OMS系统实战的三两事
刘锦程荣获2022年度中国电商行业创新人物奖
华为模拟器ensp常用命令
ApplicationContext 与 BeanFactory 区别(MS)
y56.第三章 Kubernetes从入门到精通 -- 业务镜像版本升级及回滚(二九)