万家数科:零售业务信息化融合的探索|OceanBase案例

news2024/10/21 16:16:33

本文作者:马琳,万家数科数据库专家。

万家数科商业数据有限公司,作为华润万家旗下的信息技术企业,专注于零售行业,在为华润万家提供服务的同时,也积极面向市场,为零售商及其生态系统提供全面的核心业务系统解决方案及运维服务。核心业务领域涵盖了数据服务与SaaS产品、业务洞察咨询服务、以及精准营销与相关服务。

1728975387

应对零售业务的技术挑战

华润万家是1984年在香港成立了第一家门店,至今已有40年的历史了。在整体零售业务的发展的过程中,系统从最初简单的进销存系统演变为如今多套系统的配合,比如物流供应链,会员系统、线上业务系统。但由于新老系统的交替运行积攒了各种各样的问题,我们总结为以下四类:

  • 多系统并行,导致数据孤岛。
  • 用户体验降低,由于线下门店与线上渠道的联动及业务融合,加上用户需求多样化,系统的响应速度与易用性逐渐难以满足用户要求。
  • 链路复杂,导致故障排查困难,产生性能瓶颈。
  • 系统可扩展性受限。受限于技术架构和成本压力,系统扩展能力较差。

挑战1:多系统并行。

这是一个绕不开的话题,跟随业务发展阶段的演变,系统也从最初的套装系统转变为Java定制开发,使用了多种不同的数据库,如IBM informix、Oracle、MySQL等。不同数据库的差异化非常大,以至于不同团队需要频繁沟通,制定统一交互协议,确保数据流转顺畅,这会耗费大量的时间和精力。

同时,对于各个系统之间的技术架构、数据格式、接口规范差异,也需要定制化开发适配器和中间件,增加了集成难度。长此以往,业务量在增长,各业务系统之间的资源耗费也随之加剧,带来了成本压力,各团队需要合理分配硬件资源、网络带宽,优化系统配置,减少资源冲突,提升整体性能。

挑战2:用户体验降低。

用户体验分为内部用户和外部用户,但总体而言,可以总结为三点要求。

第一,个性化需求。不同用户对系统的功能、界面、操作方式等有不同的需求,满足个性化需求难度较大。

第二,响应速度。用户要求系统的响应速度越来越快,尤其是在高并发情况下,但保证系统的快速响应是一个挑战。

第三,易用性。系统的复杂功能可能导致用户操作困难,降低用户体验。

挑战3:链路复杂。

由于各系统在数据传输过程中存在各种各样的问题。导致故障点难定位,需要经过多环节排查,增加修复时间,而且链路中某环节容易造成瓶颈,影响整体性能,需要优化资源配置。作为运维人员,利用监控手段定位问题,然而某些监控盲点需要一个更强大的运维团队做实时分析,这十分考验监控运维团队对业务的理解能力。

更关键的是复杂链路提升了被攻击的风险,加强安全防护措施,确保系统安全也是需要重点关注的。

挑战4:系统可扩展性受限。

原有的数据库由于其架构特性,难以应对业务增长后带来的性能需求,同时随着系统规模的不断扩展,代码的复杂度增加,导致维护难度加大。如果扩展系统,不仅需要投入大量的资金,还需要大量的人力资源支持,企业要面临的成本压力极大,这也成为了限制企业发展的主要矛盾。

应对策略与具体措施

数科技术团队选择从硬件、操作系统、数据库、开发思想等多方面入手,如硬件选择国产X86、ARM架构;操作系统选择如龙蜥、麒麟等国产可控系统;开发引入领域驱动设计思想(DDD)等,各方面持续优化现有软硬件架构。数据库选择上数科技术团队考察了很多数据库产品。并在调研后选择将原有的数据库替换为原生分布式数据库OceanBase(数据库选型与测评详见博客https://open.oceanbase.com/blog/9690209104)。

1728975466

引入新技术OceanBase的历程与收益

在2022年6月,万家数科引入OceanBase 3.x版本,并开始POC测试、核心系统验证,直至2022年12月。彼时了解到单机分布式一体化的OceanBase 4.0版本即将发布,便等到新版本发布后及时跟进了系统迁移测试,经过几个月生产环境的上线实践,取得的效果让我们非常满意。在2024年将大批系统迁移到OceanBase数据库,将其作为技术底座。

无论是新项目的生产与开发,还是旧项目的迁移,目前万家数科已有五六十个项目使用OceanBase,未来将有更多的项目建立在OceanBase数据库之上。具体收益总结为以下5点。

  • 成本节约:高压缩存储技术,原存储迁移后容量降低约60%,硬件成本节约50%,业务综合成本节约25%左右。
  • 资源有效利用率提高:使用集群汇聚多个实例,多租户资源隔离,减少资源碎片,充分利用资源。
  • 改善业务韧性,开发效率提升:优化业务架构,统一技术栈,降低开发难度,提升开发效率,增强业务稳态和扩展性。相比此前整个运维团队都忙于稳固MySQL集群,现在大家轻松多了。
  • 性能提升与混合分析:解除当前架构中的性能瓶颈,系统性能提升70%,同时支持实时报表查询,减少了数据链路开发与维护的工作,兼备混合分析场景的支持。
  • 运维效率提升:数据库平台化管理,支持DBA白屏化操作,提升了运维效率,降低了运维工具开发和运维成本。

数据库迁移经验解析

使用OMS(OceanBase迁移工具)进行数据库迁移方案。原MySQL集群是基于中间件的多实例分库分表集群迁移OceanBase。从迁移策略来说,使用OMS将多条链路分步汇聚到OceanBase。按照读写分离策略,先迁移读业务,后迁移写业务,这样的优点是系统稳定性较高,业务平滑地过渡至新系统。最大化地保障用户体验,让用户对系统变动无感知。

1728959052

在切割方案中,数科技术团队对读写业务进行应用改造以适配双数据源,设置合理的规则,在整个迁移过程中分批次进行业务迁移,直到迁移完成。

1728959074

这样做的好处是,可以把整个业务的迁移风险降到最低。第一步只是利用小部分流量做迁移测试,确定没问题后再进行后续步骤逐一迁移读写业务。每步迁移过程在10秒内即可完成业务迁移,对业务影响极低。

在迁移过程中,合库合表是较为棘手的问题,这是MySQL 分库分表集群迁移 OceanBase 必须考虑的问题。不仅需要对每张大表检查验证,确认每条数据的唯一性,并配置合适的大表分区键,确认热点 SQL 的性能最优,还要考虑历史数据能够快速卸载,保证运维清理能够简单高效。

该业务大表主键使用雪花算法,这种算法只能保证每一个DB有唯一性,在多个DB中有极小的概率会存在主键冲突。对于这种问题,如果是小表,可以通过查询、排除主键的方式来更改;如果是几十亿上百亿数据量的大表,使用排除主键法是不可行方案,会耗费大量资源,因此我们对主键做了一些改造,抛弃现有基于雪花算法的主键。新增了自增主键,并对所有DB的自增链设置了一个范围的起始值。这样能够保证在一定时间内数据库的主键不会冲突。而在这个时间段内,需要尽快合库合表并完成迁移。

1728959087

FLINK生态与OceanBase的结合

debezium格式是万家数科在推进Flink生态所采用的统一,而当时OMS V3版本不支持此格式,如果改造涉及上下游链路非常多预估改造工作量巨大。经过沟通OceanBase-OMS开发团队针对debezium格式进行了相应的开发与适配,保证项目的顺利进行,在此感谢OceanBase技术团队的倾力支持。

基于 BinLog 日志变更使用 kafka-connector 监听对集群数据进行实时捕获。需对每个 MySQL 节点进行日志监听,维护复杂难度大。任务调度不能保证实时性,推送延时大,业务量庞大时存在推送不及时、可靠性较差。

1728975289

下图基于OMS+Flink调度的流数据实时处理。取代了此前基于MySQL+Kafka的延时较高的任务调度模式。

1728959113

OMS 提供可视化的集中管控平台,界面化操作,可以基于时间点同步,维护成本低。同时使用 Flink 流实现实时数据处理逻辑。通过 Flink 的 StreamSink 和 TableSink 将处理后的数据实时推送到目标系统。确保目标系统支持实时数据的接收和处理。其 checkpoint 机制,实现任务的持续检查和恢复。在任务运行过程中,定期检查 checkpoint 状态,确保任务在异常情况下能够恢复到一致的状态。

OMS+Flink 方案保证了用户操作简单和数据实时性,整个数据流转可在 2s 内完成,保证每一笔数据消费都能准确实时可靠地推送至每一个用户。

优化案例解析

利用OceanBase丰富的生态体系极大地简化了监控运维的工作,不仅提升了运维管理细粒度,还提高了运维效率。

以OCP和ODC的性能优化为例。

问题出现:

某日凌晨,业务人员反馈在程序发布后,新增业务需求执行效率低下,该场景在UAT环境中性能稳定,上线后效率较之前降低几倍,造成业务单据压单,无法实时处理业务单据。

问题分析:

OCP:通过OCP-SQL诊断功能,发现该时间点TOPSQL中无明显慢SQL,通过与开发沟通得知该场景为高频SQL场景,平均响应时间慢几毫秒均会对业务产生影响,随即确定问题SQL。发现其并无相关索引问题呈现。

1728976056

ODC:将问题SQL 在ODC执行查询其实际执行计划,定位问题发现SQL存在较多RPC调用

1728977295

问题解决:

新建表组避免RPC调用。(下图为建立表组后的SQL执行计划基本信息,可见已没有RPC调用)

1728977349

使用中存在的问题

场景:

业务通过 INSERT INTO ON DUPLICATE KEY UPDATE 避免约束冲突

问题点:

此语法对于约束冲突数据处理方式:

MySQL 日志解析为UPDATE

OceanBase 日志解析为DELETE、INSERT

这对于数据传输下游而言是消费逻辑的转变,这种转变可能会使下游数据存在误差。目前没有找到有效的解决方案,只能尽量避免使用这种SQL语句,用其他语句代替,而这会带来额外的处理步骤。


在 OceanBase 2024年的发布大会中,将带来更多零售行业的应用实践分享,欢迎点击参与!

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

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

相关文章

基于DSP+ARM+FPGA的电能质量分析仪的软件设计

软件设计是电能质量设备的核心内容,上述章节详细介绍了电能质量参数的 算法,并且通过仿真实验进行了验证,本章将结合现代电能质量监测设备需求实 现算法在实际电网中应用。根据设计的电能质量分析仪的需求分析,进行总体的 软件…

【Android】Jetpack入门知识总结(LifeCycle,ViewModel,LiveData,DataBinding等)

文章目录 LifeCycle使用Lifecycle解耦页面与组件自定义控件实现LifecycleObserver接口注册生命周期监听器 使用LifecycleService解耦Service与组件使用ProcessLifecycleOwner监听应用程序生命周期 ViewModel用法在 Fragment 中使用 ViewModel LiveDataDataBinding导入依赖基本用…

Redis 性能优化选择:Pika 的配置与使用详解

引言 在我们日常开发中 redis是我们开发业务场景中不可缺少的部分。Redis 凭借其内存存储和快速响应的特点,广泛应用于缓存、消息队列等各种业务场景。然而,随着数据量的不断增长,单节点的 Redis 因为内存限制和并发能力的局限,逐…

FP7127:降压恒流LED芯片 支持双路调色调光 PWM调光

一、降压恒流LED芯片FP7127 FP7127 是平均电流模式控制的 LED 驱动 IC,具有稳定输出恒流的能力,优秀的负载调整率与高精度的电流控制。不用额外增加外部补偿元件,简化 PCB 板设计。输出的LED电流精度为 2%。 如果你想进行PWM数位调光&#…

R语言机器学习教程大纲

文章目录 介绍机器学习算法监督学习Supervised Learning分类Classification回归Regression 无监督学习 Unsupervised Learning聚类 Clustering降纬 Dimensionality Reduction相关Association 强化学习Reinforcement Learning模型自由 Model-Free Methods模型驱动 Model-Based M…

Rancher—多集群Kubernetes管理平台

目录 一、Rancher 简介1.1 Rancher 和 k8s 的区别 二、Rancher 安装及配置2.1 安装 rancher2.2 登录 Rancher 平台2.3 Rancher 管理已存在的 k8s 集群2.4 创建名称空间 namespace2.5 创建 Deployment 资源2.6 创建 service2.7 Rancher 部署监控系统 一、Rancher 简介 Rancher …

curl支持ssl错误:curl: (60) SSL certificate problem: certificate is not yet valid

在测试curl命令的时候发现curl: (60) SSL certificate problem: certificate is not yet valid出现这个错误,已经设置了ssl证书路径,最终发现是板子上时间不对,设置时间后可以正常使用。

论文研读 | End-to-End Object Detection with Transformers

DETR:端到端目标检测的创新 —— 作者 Nicolas Carion 等人 一、背景与挑战 目标检测是计算机视觉领域的一个核心任务,要求模型精确识别图像中的物体类别和位置。传统方法如 Faster R-CNN,因其区域建议网络等复杂结构,使得模型调…

网络安全基础知识点_网络安全知识基础知识篇

文章目录 一、网络安全概述1.1 定义1.2 信息安全特性1.3 网络安全的威胁1.4 网络安全的特征 二、入侵方式2.1 黑客2.1.1 入侵方法2.1.2 系统的威胁2.2 IP欺骗与防范2.2.1 TCP等IP欺骗基础知识2.2.2 IP欺骗可行的原因2.2.3 IP欺骗过程2.2.4 IP欺骗原理2.2.5 IP欺骗防范2.3 Sniff…

数据结构编程实践20讲(Python版)—16有向图

本文目录 16 有向图(Directed Graph)S1 说明特征应用领域S2 示例S3 问题:利用有向图构建贝叶斯网络Python代码代码说明结果S4 问题:有依赖的任务调度Python代码代码说明结果S5 问题:基于有向图的搜索引擎排序算法Python代码代码说明结果往期链接 01 数组02 链表03 栈04 队…

成都睿明智科技有限公司电商服务可靠不?

在这个短视频风起云涌的时代,抖音不仅成为了人们娱乐消遣的首选平台,更是众多商家竞相追逐的电商新蓝海。成都睿明智科技有限公司,作为抖音电商服务领域的佼佼者,正以其独到的洞察力和专业的服务,助力无数品牌在这片沃…

使用redis存储股股票数据及近一个月的行情数据

使用redis存储股票数据及近一个月的行情数据 性能瓶颈redis的使用odoo连接redis股票数据的读写结论 性能瓶颈 股票行情对数据的实时性是有要求的,在数据同步时如果都从数据库中查询数据,对于股票行情数据来说是有些慢了,因此我们使用redis来…

视频网站开发:Spring Boot框架的高效实现

5 系统实现 5.1用户信息管理 管理员管理用户信息,可以添加,修改,删除用户信息信息。下图就是用户信息管理页面。 图5.1 用户信息管理页面 5.2 视频分享管理 管理员管理视频分享,可以添加,修改,删除视频分…

HCIP-HarmonyOS Application Developer 习题(十五)

(判断)1、在HarmonyOs中发布带权限公共事件,发布者首先要在config.json中申请所需的权限。 答案:正确 分析:发布携带权限的公共事件:构造CommonEventPublishInfo对象,设置订阅者的权限。 &#…

基于springboot vue的音乐播放系统设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

【Postman】如何导出导入数据文件?Postman链接分享?

方式一:postman分享链接 1.1 导出 1.2 导入 1.3 导入完成后删除分享的链接 方式二:postman导出导入json 2.1 导出 2.2 post导入json数据

智慧监管:EasyCVR视频汇聚智能分析平台助力有限空间作业实现全天候可视化监控

随着工业化和城市化进程的加快,有限空间作业(如地下管道、储罐、隧道等)在各类企事业单位中日益频繁。然而,这类作业环境复杂、危险系数高,对作业人员的安全管理和实时监控提出了严峻挑战。为了保障有限空间作业的安全…

基于Java的茶叶商城设计与实现(源码+定制+开发)茶叶电商系统开发、茶叶电商平台开发、茶叶在线销售平台设计与开发

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

cocos Creator + fairyGUI 快速入门

版本 Creator 3.8.x,FairyGUI 2022 大部分内容来自 https://en.fairygui.com/docs/sdk/creator 1.新建cocos项目,根目录运行 npm install --save fairygui-cc 引入 fairyGUI库 2.assets目录之外新建fairyGUI项目 3.fairyGUI中编辑UI 完成后发布到Creato…

细数RAG的12个痛点,英伟达高级架构师亲授解决方案

检索增强式生成(RAG)是一种使用检索提升语言模型的技术。具体来说,就是在语言模型生成答案之前,先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程。这种技术能极大提升内容的准确性和相关性&#x…