存算分离降本增效,StarRocks 助力聚水潭 SaaS 业务服务化升级

作者:聚水潭数据研发负责人 溪竹

聚水潭是中国领先的 SaaS 软件服务商,核心产品是电商 ERP,协同350余家电商平台,为商家提供综合的信息化、数字化解决方案。公司是偏线下商家侧的 toB 服务商,员工人数超过3500,线下网点超过100个,每天要承载大概2亿包裹量的 ERP 发货流程,产生的数据量超过10TP。

公司数据智能产品的定位是将数据融入到服务流程中,在 ERP 这个大的体系里,帮助商家进行数据提效。从整体分层来说,包括智能报表、智能经营、智能分析,其中智能分析包括实时大屏、渠道分析等。

今年3月,聚水潭将 StarRocks 引入到数仓架构中,针对数据智能产品中的多个服务进行了升级。在 StarRocks Summit 2023 上,公司数据研发负责人溪竹结合应用场景分享了在 StarRocks 使用过程中的许多经验和感受。

我们将溪竹的精彩演讲整理出来,希望对你有所帮助。

数仓架构演进

聚水潭数仓经历了大约 10 年的发展,早期跟很多公司一样采用的是 SQL Server 集群,在数据规模较小的情况下 SQL Server 的在线服务和 OLAP 能力都能满足业务需求。随着业务发展,SQL Server 在复杂查询场景下,无法提供丰富的多维统计指标计算能力。所以从 2018 年开始自建 GreenPlum 作为 AP 分析集群,至 2021 年集群数量已经超过 70 个集群。另外在线的 SQL Server 集群也在不断增加,现在已经超过了 1000 套。从 2020 年开始,我们接入了实时链路,从偏数据库的场景转向了偏计算和存储能力的场景。

至此我们只是在不断的扩展集群规模,增加服务数量,导致了数据是隔离的,服务是分散的。为此我们希望有一款产品具有更强的在线化服务能力和实时数据处理能力,能够帮我们整合数据存储,统一数据服务。经过充分的调研和验证,今年 3 月,我们将 StarRocks 引入进来,逐步形成了现在的统一在线服务架构。目前我们的 StarRocks 集群规模约 10 个,整体 CPU 约 1000 个。

alt

StarRocks 大规模集群的构建及验证

今年 3 至 11 月份,我们一直跟着 StarRocks 在迭代,这个过程中我们根据不同系统和服务的要求总结了三种模式,分别服务于不同业务。

存算分离模式之快递揽收报表

alt

存算分离模式是基于 3.1 的新的湖仓范式探索对于湖能力的一些补充。从 ERP 视角来看,在线业务 10 多年积累下来的庞大的数据之前没有做分级的存储,这块存在很大的资源优化空间。经过统计,我们查询数据的范围超过近三年的都不到 1% ,所以我们通过存算分离的方式将全量数据存储到价格较低的 OSS,本地只 cache 近期的热数据。这样的方式不仅满足了 99% 以上的查询性能要求,同时存储成本也约等于原先的 1/8。

今年 7 月份左右,我们在快递揽收报表业务场景上对 StarRocks 3.1 存算分离进行了完整测试。从业务场景来说,快递揽收属于物流场景,一个单子被揽收掉以后,历史数据就没有意义了,所以我们就默认做了 105 天的本地数据清理策略,完全自动化地管理数据清理动作。这个测试当时在 StarRocks 社区还产生了一些影响力。测试表明,在开启本地 cache 的情况下,查询性能和存算一体基本持平,响应基本上都是毫秒级别,另外让我们有一点惊喜的是,内存管理变得更高效了,存算分离的内存使用相比存算一体减少了 50%,计算资源性价比更高。

alt

下图中为针对 StarRocks 存算分离版本查询性能的测试,我们从一款商业化产品 OLAP 外表切流到 StarRocks 内部表,使用本地盘加速 OSS 的效果非常好,延迟直接从秒级降到了毫秒级,这对于我们基于 StarRocks 3.1 建立湖仓模式是一个信心的基础。

alt

高可用模式之订单全链路分析

alt

在高可用模式下,最重要的就是服务不可以中断,异常情况下服务可以快速恢复。此时 StarRocks 计算节点为单独购买,存储主要依靠云盘,在节点出现故障时,无论是本身基于容器弹性的逃逸能力,还是副本数据迁移的能力,都能够快速恢复服务,保证了服务的高可用。

订单全链路分析业务采用了高可用模式的的部署方式。通过出库单得到拣货、验货、播种、打包等各阶段操作人和操作时间,进行订单的全链路分析。业务方最主要的诉求就是服务稳,查询快。

alt

我们采用了主键模型对事实明细分类存储,仅保留有效记录,通过 colocate group 的方式加速查询效率并优化了查询逻辑,最后 SQL 平均耗时从 7 秒降到了 50 毫秒,性能提升 8 倍!

高性能模式之售后预警

alt

以售后预警中的发货监控服务为例,需要支持六七千的商家同时访问,且对查询访问的时延要求很高。这类业务模式下我们采用高性能模式的部署方案。我们把存储从云盘改到了本地盘。这套架构是一个很经济的架构,3 年 4 折去买 ECS 的机器,然后去部署这套架构,性能很好,成本又很低。

售后实时预警监控如下图所示:

alt

这其中包含了订单/售后单/物流单查询,分类型风险提醒,多店铺/长周期/多维度组合筛选,明细筛选/排序/处理/导出-外部业务对接,智能识别退货物流异常/无信息件,拦截提醒防资损,供分销、三方仓业务等多个业务。主要为售后提效,资损监控提供服务保证。

采用高性能模式我们做到了百亿级数据秒级计算,100MB/s 的写入吞吐,300QPS ,RT 350ms。大家可以在评估自己业务的时候,大概能有一个体感,现在一个 300 core 的 StarRocks 集群能达到什么样的能力?基于本地盘的部署,是可以实现百亿级数据、毫秒级延迟的。

alt

未来展望

我们每天要 load 的数据超过百亿,目前架构下还存在着 load 数据耗时长,多计算引擎数据孤岛、存储浪费等问题,StarRocks 无论是加速 OSS,还是帮助我们去加速阿里云 ODPS 的数据,都可以有效简化我们的数据加工、降低存储成本,这一块非常值得期待。另外,我们从 0 到 1000 core的规模只用了不到一年,我觉得在 StarRocks 使用上还有很大想象空间,未来一年我们希望用 StarRocks 来探索真正的湖仓新范式的落地。

alt

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu安装K8S(1.28版本,基于containrd)

原文网址:Ubuntu安装K8S(1.28版本,基于containrd)-CSDN博客 简介 本文介绍Ubuntu安装K8S的方法。 官网文档:这里 1.安装K8S 1.让apt支持SSL传输 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certi…

计算机图形学光线追踪大作业C++基于Optix为框架实现的光线追踪算法合集,含直射光阴影效果、漫反射阴影效果、镜面反射效果等示例

MineRay 使用Optix为框架实现的光线追踪算法。 包含4个示例,直射光阴影效果、漫反射阴影效果、镜面反射效果、折射效果 环境需求 本项目在Windows 10中测试,以下环境为Windows中的环境 CUDA 10.1 OptiX 7 SDK cmake 编译方式 使用cmake编译 打开Mi…

nbuntu 18.04 终端打开后无内容

1. 问题 2. 删除bash并重新安装 删除: sudo rm /bin/bash (https://blog.csdn.net/u011128515/article/details/22896837) 再安装: bash文件电脑中是有下载的deb文件的,按上图路径找到了并下载了出来 ar t bash_4.4…

反转链表、链表的中间结点、合并两个有序链表(leetcode 一题多解)

一、反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 思路一:翻转单链表指针方向 这里解释一下三个指针的作用: n1&#xff1…

如何在无公网IP环境下远程访问Serv-U FTP服务器共享文件

文章目录 1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装 3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 科技日益发展的今天,移动电子设备似乎成了我们生活的主角,智能…

【Electron】富文本编辑器之文本粘贴

由于这个问题导致,从其他地方复制来的内容 粘贴发送之后都会多一个 换行 在发送的时候如果直接,发送innerHTML 就 可以解决 Electron h5 Andriod 都没问题,但是 公司的 IOS 端 不支持,且不提供支持(做不了。&#xff…

Unity 旋转跟随

Unity 使用任意一个局部轴指向目标 效果: 主要用于在编辑器中可视化对象的朝向,同时提供了选择不同轴向的功能。在运行时,物体将根据所选择的轴向朝向目标,并在 Scene 视图中绘制一个带箭头的圆环。 定义轴向枚举:…

一起玩儿物联网人工智能小车(ESP32)——13. 用ESP32的GPIO控制智能小车运动起来(一)

摘要:本文更深入的讲述了GPIO的相关知识,并完成了导线连接工作,为下一步的软件开发做好了准备。 通用输入输出端口(GPIO:General Purpose Input/Output Port),在前面已经有了初步的介绍&#xf…

三天吃透Spring面试八股文

目录: Spring的优点Spring 用到了哪些设计模式?什么是AOP?AOP有哪些实现方式?Spring AOP的实现原理JDK动态代理和CGLIB动态代理的区别?Spring AOP相关术语Spring通知有哪些类型?什么是IOC?IOC的…

svn外网打不开url地址怎么解决

在家或者出差在外经常会有连接到公司内部SVN服务器的需求, 但是 svn外网打不开url地址怎么解决?如何才能连接到公司内部SVN服务器?今天小编教你一招,在本地SVN服务的内网IP端口用快解析软件添加映射,一步就可以提供让公…

缺失的第一个正数(LeetCode 41)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路4.1 暴力4.2 排序4.3 哈希表4.4 空间复杂度为 O(1) 的哈希表4.5 置换 参考文献 1.问题描述 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级…

WPF Button使用漂亮 控件模板ControlTemplate 按钮使用控制模板实例及源代码 设计一个具有圆角边框、鼠标悬停时颜色变化的按钮模板

续前两篇模板文章 模板介绍1 模板介绍2 WPF中的Button控件默认样式简洁,但可以通过设置模板来实现更丰富的视觉效果和交互体验。按钮模板主要包括背景、边框、内容(通常为文本或图像)等元素。通过自定义模板,我们可以改…

会议室占用时间段 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 现有若干个会议,所有会议共享一个会议室,用数组表示各个会议的开始时间和结束时间, 格式为: [[会议1开始时间,会议1结束时间],[会议2开始时间,会议2结束时间]] 请计算会议室占用时间段。 输入描述 [[会议1开始时间,…

this和static和const关键字

1. this指针 1.1 基本认识 C中成员函数的特性,在类的非静态成员函数中都会存在一个this指针,来指向当前类,它是隐式的不可见的,是作为函数的第一个参数可以通过this指针来解决二义性的问题 是的,this指针是与类的实例相…

最快速度与最简代码搭建卷积神经网络,并快速训练模型,每日坚持手撕默写代码

大家好,我是微学AI,今天给大家介绍一下最快速度与最简代码搭建卷积神经网络,并快速训练模型,每日坚持手撕默写代码。随着人工智能的快速发展,去年有强大的大模型ChatGPT横空出世,国内的大模型也紧追其后的发…

基于ssm西安旅游管理系统论文

摘 要 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对西安旅游信息管理的提升&#x…

Mediapipe绘制实时3d铰接骨架图——Mediapipe实时姿态估计

一、前言 大约两年前,基于自己的理解我曾写了几篇关于Mediapipe的文章,似乎帮助到了一些人。这两年,忙于比赛、实习、毕业、工作和考研。上篇文章已经是一年多前发的了。这段时间收到很多私信和评论,请原谅无法一一回复了。我将尝…

Redis缓存与数据库如何保证一致性

数据库和缓存如何保证一致性? 目录 数据库和缓存如何保证一致性?背景方案先更新数据库,还是先更新缓存?先更新数据库,再更新缓存先更新缓存,再更新数据库 先更新数据库,还是先删除缓存&#xff…

安装 PyQt5 保姆级教程

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 博主之前做应用层开发用的一直是 Qt,这次尝试一下在 python 中使用 Pyqt5 模块来开发 UI 界面,这里做一些…

certum的ip证书购买流程

Certum是成立于欧洲的CA认证机构,经过二十几年的发展Certum已经成为欧洲知名的CA认证机构之一,拥有广泛的客户群体和合作伙伴。IP证书是Certum为只有公网IP地址的网站准备的数字加密服务。今天就随SSL盾小编了解购买Certum旗下的IP证书流程。 第一步&am…