云下到云上,丽迅物流如何实现数据库降本50% | OceanBase案例

在2024年3月20日的首场OceanBase数据库城市行活动中,专注于物流及供应链解决方案的丽迅物流的架构师阳磊,围绕“OB Cloud在丽迅物流的实践”这一主题,进行了精彩的演讲。本文为此次演讲的内容回顾。

在丽迅物流(Lesoon Logistics)的上云进程中,他们接触并评估了国内多款分布式数据库。经过对实际业务需求的深入考量与验证,丽迅物流最终选择了OceanBase的云数据库(OB Cloud),用以升级其多个关键业务系统。截至目前,丽迅物流的仓储、库存、财务等多套关键业务系统已成功迁移到OB Cloud上,整体数据库成本降低了50%,且稳定运行已近一年

1711713474

大家好,我是来自丽迅物流的架构师阳磊,非常荣幸参加这次 OceanBase 数据库城市行活动,接下来我将从数据库升级必要性、如何升级、收益三大方面为大家分享 OB Cloud 在丽迅物流的应用实践。

丽迅物流专注于为鞋服、箱包等时尚产业提供仓储物流服务。目前,丽迅物流业务遍布全国,覆盖了全国 300 多个城市,3000 多个商圈,共 30000 多家门店;自身全渠道实体云仓 70 余个,仓库资源 100 万余平方米、运输车 1000 余辆。

随着公司业务的快速增长,自 2021 年起,丽迅物流开始启动业务系统上云战略,致力于为客户提供更稳定、更灵活、更高效的服务。

一、原有架构难以稳定支撑业务增长

在仓储系统重构之前,丽迅物流的数据库是部署在 IDC 机房,采用的是 shardingJDBC 这种 SDK 分库模式,虽然它有去中心化的优势,但伴随着丽迅物流的业务增长,在实际应用过程中,发现其仍然存在几个问题。

1711713577

○  应用启动慢:在应用启动的时候需要加载元数据,随着业务表增多会越来越慢;

○  性能问题明显:在跨库合并查询分页的时候,也会存在一些性能问题,比如应用内存拉爆、产生分布式慢事务锁表;

○  版本升级复杂:因为分库的逻辑写在应用内部,所以系统上线以后需要伴随组件升级,难度显著增大;

○  弹性能力弱:原有数据库架构想要扩容比较麻烦,除了需要新增一组数据库节点外,应用还要全部改一遍配置后再重新启动,对连接数耗用也较大。

正是由于以上原因,丽迅物流决定对仓储系统进行深度重构、升级。一开始,丽迅物流采用了云数据库+中间件的 Proxy 分库分表模式。最早使用的是更稳定的云数据库+中间件 DBLE,经过一段时间的使用一些问题开始暴露出来。

1711713632

○  开源版本不稳定:DBLE 开源的组件版本稳定性不足,需要专人对分支版本进行维护与调优,升级困难;

○  配置文件结构不合理:数据库账号和分片规则配置在一起,导致各环境需要重复配置,运维复杂度增加;

○  分布式事务问题:比如全局表不一致、分布式事务锁表等问题;

○  运维成本增加:代理中间件增加,导致运维成本的增加。

○  正是在这样的背景下,丽迅物流将目光瞄准了市场上几款成熟的分布式数据库产品,经过多番对比,最终确认了 OB Cloud 云数据库。

二、仓储、财务等多个关键业务系统上线 OB Cloud

在选型 OB Cloud 的过程中,团队认为 OB Cloud 云数据库与丽迅物流业务核心需求匹配度很高,重点考虑了如下因素:

第一,核心语法高兼容。OceanBase 完全自主研发,代码改造成本低;

第二,稳定可靠。经过海量客户场景验证,OceanBase 的安全稳定性有所保障;

第三,支持多基础设施统一管理。OceanBase 支持客户多基础设施业务部署,帮助客户屏蔽底层基础设施技术复杂度;

第四,扩展性好、具备多级弹性能力。根据丽迅物流的业务增长要求,支持实现水平垂直扩容;

第五,高性价比。OceanBase 通过先进的数据压缩技术,可实现 70% 以上的存储节约,为海量数据的规模化降本提供更出色的选择;

第六,支持阿里云 DMS 管理。该平台是丽迅物流团队日常依赖的管理平台,使用 OB Cloud 显著提升运维效率;

第七,支持 Dataworks 抽数到数据平台 Hologres 做数据分析;

第八,适配 Proxy 分片规则。通过 OceanBase 表组对这些分区进行管理,实现分布式数据动态平衡。

除以上优势外,在使用 OB Cloud 之前,丽迅物流进行了基准测试。针对 OB Cloud 和 IDC 自建的 MySQL 进行了随机读写的压力测试,OB Cloud 云数据库表现优异,给了团队极大信心。故此,丽迅物流仓储管理、财务管理、客户、工单、HR 等多个关键业务系统着手上线 OB Cloud。

1711713751

仓储管理系统(WMS)

WMS 仓储管理系统是丽迅物流的核心系统之一,在确认了迁移目标以后,团队内部将 WMS 仓储管理系统进行了一次深度的重构、升级,逐步将业务系统迁移至 OB Cloud。

通过使用两个 30 核 180GB 的分布式节点,替换了 5 组 64 核 128GB 的 MySQL 服务器,上线半年后,原来 5TB 的业务数据压缩到 600GB 左右,业务性能同步提升,至今运行稳定。

财务管理系统(FMS)

丽迅物流的 FMS 财务管理系统有两组 64 核 128GB 的 MySQL 服务器,团队通过对其进行数据合并迁移,去掉 ShardingJDBC,迁移到一个 14 核 70GB 的集群上,迁移后,该系统业务量占比大量缩减,只需简单调整业务代码,原来一年 2.5TB 的数据可以压缩到 350GB。

得益于 OB Cloud 天然具备的分布式能力,丽迅物流的业务系统很容易就可以进行水平、垂直扩容,轻松应对业务流量增长,平稳支撑公司业务周转。

其他:客户系统、工单系统、HR系统、接口平台等

除以上核心系统外,公司内部的客户系统、工单系统、HR 系统、接口平台,也以综合形式部署在 14 核 70GB 的 OB Cloud 上,借助 OB Cloud 的集中式架构优势,充分利用了现有的服务器资源,大大减少了数据库使用率。

三、降本50%,稳定运行近1年

经过 300 余天的使用,OB Cloud 有如下优势:

第一,高压缩比。超高数据压缩比,有效降低存储成本 70% - 80%,进一步节约备份时间;

第二,灵活的弹性能力。OB Cloud可以跟随丽迅物流的业务增长,随时进行扩缩容,包括存储也可以支持快速扩缩容,应对物流行业流量峰值;

第三,高性能。上线 OB Cloud 以后,在一些库存记账,仓库RF扫描等高并发场景下,性能提升 20%,对比之前的模式,硬件成本大幅度下降;

第四,成本优势显著。在丽迅物流迁移上云的过程中,存储成本下降 70%;同时通过多租户共享实例,运维复杂度也下降,DMS 实例数也大大减少;

第五,自我保护能力。ob_query_timeout、ob_trx_timeout 设计非常巧妙,用户可以根据业务场景对查询、事务的最大时间进行控制,防止业务被一些异常语句打满,非常好地保护了数据库;

第六,SQL 诊断。借助诊断工具可以便利地看到 TopSQL、SlowSQL,对业务瓶颈及时进行调优;

第七,服务技术支持专业高效。从选型到上线到后期的运维,都有OceanBase技术团队支持,大到解决方案,小到技术细节,都有老师耐心解答,保障系统稳定运行。

上线 OB Cloud 云数据库之后,丽迅物流获得了同城双活、灵活高效、易观测的数据库体验,整体数据库成本降低 50%,开发和运维效率大大提升。目前,丽迅物流的 TMS 运输管理系统也正在评估上线 OB Cloud 的过程中,现有几大关键业务系统已携手 OB Cloud 稳定运行近一年,期待未来更好的合作!

1711713949

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文精读-SRFormer Permuted Self-Attention for Single Image Super-Resolution

论文精读-SRFormer: Permuted Self-Attention for Single Image Super-Resolution SRFormer:用于单图像超分辨率的排列自注意 Params:853K,MACs:236G 优点: 1、参考SwinIR的RSTB提出了新的网络块结构PAB(排列自注意力…

盘点28个免费域名申请大全

盘点28个免费域名申请大全 免费域名推荐学习使用,免费就意味着没任何保障。 名称稳定时间支持解析模式后缀格式说明地址EU.org28 年NS.eu.org/. 国家简写.eu.org需要审核,稳定性高,限制少,国内访问有问题,可 CFeu.orgp…

反射获取或修改对象属性的值

利用反射既可以获取也可以写入,首先咱们先写几个获取的例子。 一:利用反射修改各数据(利用resultField.set修改) 首先定义实体类 public class Dog {private String dogUser;private int age;把DogUser的"hahaha"改为"geggegegege" Dog dog = new Do…

10个最佳Android数据恢复工具,用于恢复已删除的文件

由于我们现在在智能手机上存储了许多重要文件,因此了解数据恢复工具变得很重要。您永远不会知道何时需要使用适用于Android的数据恢复工具。 由于不乏Windows数据恢复工具,因此从崩溃的计算机中恢复文件很容易。但是,当涉及到从Android恢复数…

adb卸载系统垃圾应用

//获取包名 输入如下代码,然后在打开和关闭要获取包名的app就会打印出该app的包名 adb shell am monitor //卸载系统应用 -k会保留用户数据,不包含-k则不会保留用户数据 adb shell pm uninstall -k --user 0 包名 (包名一般为:c…

机械臂与Realsense D435 相机的手眼标定ROS包

本教程主要介绍机械臂与 Realsense D435 相机手眼标定的配置及方法。 系统:Ubuntu 20.0.4 ◼ ROS:Noetic ◼ OpenCV 库:OpenCV 4.2.0 ◼ Realsense D435:librealsense sdk(2.50.0)、realsense-ros 功能包&…

【map、set】C++用红黑树来封装map、set容器

🎉博主首页: 有趣的中国人 🎉专栏首页: C进阶 🎉其它专栏: C初阶 | Linux | 初阶数据结构 小伙伴们大家好,本片文章将会讲解map和set之用红黑树来封装map、set容器的相关内容。 如果看到最后您…

资料防拷贝该如何实现?数据防拷贝的方法有哪些

数据安全和隐私保护成为企业和个人关注的重点。电脑中存储的资料往往包含了重要的商业机密、个人隐私或其他敏感信息。 因此,如何有效防止他人非法拷贝电脑资料,成为了一个亟待解决的问题。 本文将探讨数据防拷贝的方法,以帮助企业和个人保护…

22-LINUX--多线程and多进程TCP连接

一.TCP连接基础知识 1.套接字 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程…

Map遍历、反射、GC

map的遍历 用foreach遍历 HashMap<Character,Integer> map new HashMap<>();map.put(A,2);map.put(B,3);map.put(C,3);for (Map.Entry<Character,Integer> entry: map.entrySet()) {char key entry.getKey();int value entry.getValue();System.out.prin…

CF451E: Devu and Flowers(容斥原理 + 考虑反面 + golang组合模版)

题目截图 题目翻译 题目分析 正难则反&#xff0c;考虑所有不符合的例子 由于n很小&#xff0c;所以可以状态压缩二进制遍历完全部不符合例子的组合 对于不符合的例子&#xff0c;假设其中第i个不符合&#xff0c;那么就消耗掉fi 1个球 以此类推&#xff0c;减剩下s2个球 这时…

Android正向开发实现客户端证书认证

前言 如果第三方模块被混淆,那hook方式均不能生效。这时就需要根据系统包去定位校验的函数,因此需要对安卓开发者是如何实现客户端证书校验的有一定了解,接下来就介绍这部分内容。 开发者实现客户端证书校验的本质是:证书/密钥 + 代码。 在形式上有:证书校验、公钥校验和…

Anthropic绘制出了大型语言模型的思维图:大型语言模型到底是如何工作

今天&#xff0c;我们报告了在理解人工智能模型的内部运作方面取得的重大进展。我们已经确定了如何在 Claude Sonnet&#xff08;我们部署的大型语言模型之一&#xff09;中表示数百万个概念。这是对现代生产级大型语言模型的首次详细了解。这种可解释性的发现将来可以帮助我们…

Hadoop 客户端 FileSystem加载过程

如何使用hadoop客户端 public class testCreate {public static void main(String[] args) throws IOException {System.setProperty("HADOOP_USER_NAME", "hdfs");String pathStr "/home/hdp/shanshajia";Path path new Path(pathStr);Confi…

AWS安全性身份和合规性之Artifact

AWS Artifact是对您很重要的与合规性相关的信息的首选中央资源。AWS Artifact是一项服务&#xff0c;提供了一系列用于安全合规的文档、报告和资源&#xff0c;以帮助用户满足其合规性和监管要求。它允许按需访问来自AWS和在AWS Marketplace上销售产品的ISV的安全性和合规性报告…

当他们在说业务的时候,到底在说什么

业务就是通过提供产品和服务给客户&#xff0c;以获取某种价值&#xff0c;形成业务闭环&#xff0c;并能自负盈亏。 文章会以生动形象的比喻来介绍业务到底是什么。 什么是业务&#xff1f; 业务&#xff0c;就像一场精彩的舞台剧&#xff0c;每个角色都有自己的任务和目标…

PHP生成二维码+二维码包含logo图片展示

composer require chillerlan/php-qrcode 用到的扩展自己安装&#xff08;注&#xff1a;只生成二维码只要开gd扩展就行&#xff09; 仅生成二维码看这个&#xff1a; use chillerlan\QRCode\QRCode;public function QRCode(){$qrcode new QRCode();$url "http://ww…

新建项目上传gitee

1.在项目根目录下打开黑窗口执行初始化 git init2.复制码云上新建仓库地址 3.本地仓库和远程仓库建立连接 远程仓库地址是之前复制的仓库地址&#xff0c;复制后直接在命令窗口中鼠标右键Paste即可在命令窗口粘贴出来 git remote add origin 远程仓库地址4.每次上传之前先更…

工厂模式(简单工厂模式+工厂模式)

工厂模式的目的就是将对象的创建过程隐藏起来&#xff0c;从而达到很高的灵活性&#xff0c;工厂模式分为三类&#xff1a; 简单工厂模式工厂方法模式抽象工厂模式 在没有工厂模式的时候就是&#xff0c;客户需要一辆马车&#xff0c;需要客户亲自去创建一辆马车&#xff0c;…

uniapp-自定义navigationBar

封装导航栏自定义组件 创建 nav-bar.vue <script setup>import {onReady} from dcloudio/uni-appimport {ref} from vue;const propsdefineProps([navBackgroundColor])const statusBarHeight ref()const navHeight ref()onReady(() > {uni.getSystemInfo({success…