存算分离降本增效,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.rhkb.cn/news/229247.html

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

相关文章

C++初阶------------------入门C++

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

带大家做一个,易上手的家常糖醋白菜

准备 如果是大白菜就一个 小白菜就要两个 因为白菜炒完之后会变少 将白菜叶剥开每叶分成三个小块 整个剥完之后 放入盆中清洗干净 调一个糖醋汁 一勺料酒 两勺生抽 三勺白砂糖 四勺香醋 起锅烧油 放两个干辣椒 辣椒炒一下 然后倒入白菜 翻炒直到油全部融入白菜 然后倒入…

Windows本地如何部署Apache服务器搭配内网穿透实现无公网IP远程访问?

文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…

自然语言处理1——探索自然语言处理的基础 - Python入门篇

目录 写在开头1. 介绍自然语言处理的基本概念1.1 NLP的核心目标1.2 常见的NLP任务1.3 应用场景详细介绍1.3.1 医疗保健1.3.2 金融领域1.3.3 教育领域1.3.4 社交媒体分析 2. Python中常用的自然语言处理库简介2.1 NLTK (Natural Language Toolkit)2.2 Spacy2.3 Transformers2.4 …

张量操作与线性回归

一、张量的操作:拼接、切分、索引和变换 (1)张量拼接与切分 1.1 torch.cat() 功能:将张量按维度dim进行拼接 • tensors: 张量序列 • dim : 要拼接的维度 torch.cat(tensors, dim0, outNone)函数用于沿着指定维度dim将多个张量…

ES6之生成器(Generator)

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

复兴计划01-lc06

StringBuilder和StringBuffer的区别 1. StringBuffer和StringBuilder都是用于字符串动态拼接,但是StringBuffer拼接的函数方法的实现中用了synchornized上锁,效率较低,不过可以用于多线程以此来维护线程安全;相比之下,StringBuil…

理解SQL中not in 与null值的真实含义

A not in B的原理是拿A表值与B表值做是否不等的比较, 也就是a ! b. 在sql中, null是缺失未知值而不是空值。 当你判断任意值a ! null时, 官方说, “You cannot use arithmetic comparison operators such as , <, or <> to test for NULL”, 任何与null值的对比都将返…

Postman使用

Postman使用 Pre-request Script 参考&#xff1a; Scripting in Postman 可以请求、集合或文件夹中添加Pre-request Script&#xff0c;在请求运行之前执行JavaScript 如设置变量值、参数、Header和正文数据&#xff0c;也可以使用Pre-request Script来调试代码&#xff0…

jupyter notebook打开其他盘的文件

jupyter notebook打开其他盘文件 打开jupyter notebook打开terminal输入&#xff1a;jupyter-notebook 路径打开你想打开的工程的文件 打开jupyter notebook 打开terminal 输入&#xff1a;jupyter-notebook 路径 打开你想打开的工程的文件

TDD-LTE 寻呼流程

目录 1. 寻呼成功流程 1.1 空闲态寻呼 1.2 连接态寻呼 2. 寻呼失败流程 2.1 Paging消息不可达 2.2 RRC建立失败 2.3 eNodeB未上发Initial UE message或达到超时 1. 寻呼成功流程 1.1 空闲态寻呼 寻呼成功&#xff1a;MME发起寻呼&#xff08;S1 接口发送Paing 消息&…

【docker实战】安装tomcat并连接mysql数据库

本节用docker来安装tomcat&#xff0c;并用这个tomcat连接我们上一节安装好的mysql数据库 一、拉取镜像 我们安装8.5.69版本 先搜索一下 [rootlocalhost ~]# docker search tomcat NAME DESCRIPTION …

SpringBoot快速集成多数据源(自动版)

有些人因为看见所以相信&#xff0c;有些人因为相信所以看见 有目录&#xff0c;不迷路 前期准备实现演示参考 最近研究了一下多数据源&#xff0c;这篇博客讲的是简单模式&#xff0c;下篇博客预计写自动切换模式 前期准备 本篇博客基于SpringBoot整合MyBatis-plus&#xff0…

【办公软件】Excel双坐标轴图表

在工作中整理测试数据&#xff0c;往往需要一个图表展示两个差异较大的指标。比如共有三个数据&#xff0c;其中两个是要进行对比的温度值&#xff0c;另一个指标是两个温度的差值&#xff0c;这个差值可能很小。 举个实际的例子&#xff1a;数据如下所示&#xff0c;NTC检测温…

Qt高质量的开源项目合集

文章目录 1.Qt官网下载/文档2.第三方开源 1.Qt官网下载/文档 Qt Downloads Qt 清华大学开源软件镜像站 Qt 官方博客 2.第三方开源 记录了平常项目开发中用到的第三方库&#xff0c;以及一些值得参考的项目&#xff01; Qt AV 基于Qt和FFmpeg的跨平台高性能音视频播放框…

SQL性能优化-索引

1.性能下降sql慢执行时间长等待时间长常见原因 1&#xff09;索引失效 索引分为单索、复合索引。 四种创建索引方式 create index index_name on user (name); create index index_name_2 on user(id,name,email); 2&#xff09;查询语句较烂 3&#xff09;关联查询太多join&a…

计算机组成原理 数据的表示与运算

文章目录 数据的表示与运算数据表示定点数的表示与运算定点数的表示无符号数有符号数定点整数定点小数四码反码补码移码 总结 定点数的运算算术移位原码反码补码总结 逻辑位移循环位移总结 加减运算原码加减法补码加减法 溢出判断采用一位符号位 浮点数的表示与运算表示IEEE 75…

使用拉普拉斯算子的图像锐化的python代码实现——数字图像处理

原理 拉普拉斯算子是一个二阶导数算子&#xff0c;用于图像处理中的边缘检测。它通过计算图像亮度的二阶空间导数来工作&#xff0c;能够突出显示图像中的快速变化区域&#xff0c;如边缘。 图像锐化的原理&#xff1a; 图像锐化是指增强图像中的边缘和细节&#xff0c;使图像…

Linux:apache优化(7)—— 日志分割|日志合并

作用&#xff1a;随着网站访问量的增加&#xff0c;访问日志中的信息会越来越多&#xff0c; Apache 默认访问日志access_log单个文件会越来越大&#xff0c;日志文件体积越大&#xff0c;信息都在一个文件中&#xff0c;查看及分析信息会及不方便。 分割 实现方式&#xff1a…

Linux操作系统极速入门[常用指令]

linux概述&#xff1a; Linux是一套免费使用和自由传播的操作系统 我们为什么要学&#xff0c;Linux&#xff1f; 主流操作系统&#xff1a; linux系统版本&#xff1a; 内核版&#xff1a; 由linux核心团队开发&#xff0c;维护 免费&#xff0c;开源 负责控制硬件 发行版&…