TiDB 在全球头部物流企业计费管理系统的应用实践

本文介绍了某全球头部物流企业采用 TiDB 解决计费管理系统性能瓶颈的实践。原系统采用的云数据库受限于架构而无法水平扩展,导致高并发性能问题。该企业通过选择 TiDB,成功打破了性能瓶颈,实现了无缝水平扩展,降低了开发和运维负担。TiDB 的 HTAP 特性带来实时轻量级分析汇总的优势,避免了数据同步风险,为计费管理系统提供了高性能、可维护的全面解决方案。

某物流企业是以快递和跨境物流为核心业务的综合物流服务运营商。快递业务在中国和东南亚市场处于领先地位,快递网络覆盖中国、新加坡、印度尼西亚、越南、马来西亚、泰国等 10 多个国家,每年为数百万个家庭和企业提供快递服务。

业务挑战

计费管理系统(财务系统)是快递行业的核心系统,承担了所有快递服务的应收应付管理和合作伙伴的应付管理等重要职责,系统的性能和稳定性对于整个快递行业的运营和管理都至关重要。

计费管理系统最初采用云数据库(PolarDB)作为服务的承载。随着业务迅猛增长,云数据库的性能受到了架构限制,无法进行水平扩展,这对系统在面对高并发请求时的性能产生了负面影响,进而损害了用户体验。系统只能通过纵向升级硬件规格来提高处理能力和存储容量,这种扩展方式不仅需要购买更高规格的硬件设备,导致机器成本大幅上升,升级的过程需要进行停机维护。

为了解决这个问题,该公司采用了多个数据同步工具来实现数据的计算和流转。系统使用 Kettle 工具将 PolarDB 数据同步至 ElasticSearch,使用 DTS 工具将数据同步到 AnalyticDB,AnalyticDB 中的数据则用于执行计算并支持报表系统的功能。系统中的聚合查询主要由 ElasticSearch 来支持。这种实现方式带来了系统架构的复杂性,使得数据流转周期延长,流程变得更加复杂,数据同步和计算过程容易出现问题,需要系统管理员进行定期的优化和维护,以支持更高的并发量和更复杂的业务场景。

解决方案

经过对比测试与应用兼容验证后,该企业选择 TiDB 分布式数据库拓展数据架构体系的能力版图。 TiDB 解决了计费管理系统的性能瓶颈问题,优化了整体架构,提高了系统可维护性和可扩展性,同时保障系统高性能、平稳运行。

TiDB 原生分布式架构支持线性水平扩展,很好地解决了系统的性能瓶颈问题,在业务不断发展的情况下,系统可以随时按需进行扩容和缩容,从而满足更高并发和更复杂的业务需求。TiDB 用一个技术栈替换了原有的 PolarDB、AnalyticDB、DTS、CANAL 等多个数据技术栈,通过 TiDB 的生态工具 TiCDC 将数据同步到 ElasticSearch 为前端应用提供明细搜索,在降低系统复杂度的同时提升了计费管理系统的可维护性。此外,TiDB 具备热点数据打散和负载自动均衡的能力,对热点数据的处理更加高效,保障了系统资源的合理利用,降低系统出现性能问题的风险。

应用价值

1 无缝水平扩展,无需分库分表

TiDB 原生分布式架构设计具备无缝水平扩展的核心优势。随着数据量的增长,TiDB 可以动态地添加更多的存储和计算资源以适应业务的发展。自动化扩展能力避免了用户进行分库分表的复杂操作,极大地减轻了开发和运维负担。TiDB 强大的事务一致性保证使得开发者可以专注于业务逻辑,而不必担心复杂的数据库操作。

对比之下,尽管 PolarDB 提供了读写分离和自动备份等高级功能,但是当数据量达到一定规模时,它需要手动进行分库分表操作以保证系统的性能和稳定性。这不仅需要投入额外的人力资源,而且在分库分表的过程中可能会引发数据一致性和事务管理的问题。使用 PolarDB 进行分库分表后,如果业务发展需要调整分片策略,就需要进行复杂且耗时的重新分片操作,这可能会带来业务中断的风险。

2 HTAP 特性带来的优势

  • 实时轻量级分析汇总

TiDB 的 HTAP 特性允许它同时处理在线事务处理和在线分析处理,无需进行数据同步和转换。因此,它可以实时地进行轻量级的分析汇总,如生成日报和月报表。这种实时的、快速的数据处理方式,大大提高了企业的决策效率,并简化了数据处理过程。

  • 避免数据同步的风险

传统的数据处理方式通常需要建立多个数据同步链路,将事务数据同步到分析数据库中。这种模式不仅增加了数据处理的复杂性,还可能在数据同步过程中引发数据不一致的风险。

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

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

相关文章

SpringIOC之support模块GenericXmlApplicationContext

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

内网穿透的应用-使用Docker部署开源建站工具—Halo,并实现个人博客公网访问

文章目录 1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤:1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 本篇文章介绍如何在CentOS下使用D…

详解java中ArrayList

目录 前言 一、ArrayList是什么 二、ArrayList使用 1、ArrayList的构造 2 、ArrayList常见操作 3、 ArrayList的遍历 4、 ArrayList的扩容机制 三、来个练习 前言 当你看到这篇文章我觉得很好笑,因为我开始也不懂ArrayList现在轮到你了,嘻嘻嘻&am…

ChatGPT新出Team号 年付费

之前一直传的团队版ChatGPT终于来了,这个对拼单的比较合算。每人每月25美元,只能按年支付。 团队版比普通版多的权益有: ◈更多的GPT-4消息上限,三小时100次。 ◈可以创建与团队内部共享的GPTs。 ◈用于工作空间管理的管理员控…

【深度学习:视觉基础模型】视觉基础模型 (VFM) 解释

【深度学习:视觉基础模型】视觉基础模型 VFM 解释 了解视觉基础模型从 CNN 到 Transformer 的演变自我监督和适应能力 流行的视觉基础模型DINO(自蒸馏,无标签)SAM(分段任意模型)SegGPTMicrosofts Visual Ch…

PINN物理信息网络 | 物理信息神经网络PINN实例及其Python实现

基本介绍 物理信息神经网络是一种基于物理系统的神经网络模型。它的设计灵感来自于神经科学和量子力学,旨在利用物理系统的特性来处理和存储信息。 传统的神经网络使用数字或模拟电子组件作为基本单元进行计算和存储。而物理信息神经网络则使用物理系统中的元件来代…

制造企业实施WMS仓储管理系统后的变革与挑战

随着市场竞争的日益激烈,制造型企业对于提高生产效率和降低运营成本的需求愈发迫切。在这一背景下,WMS仓储管理系统解决方案逐渐成为制造业企业的必备工具。然而,实施WMS仓储管理系统不仅意味着企业将迎来一系列的变革,还将面临一…

【常用的简单功能及算法】拦截器 加盐算法 深克隆 时间日期格式化 加盐算法 sql分页算法 验证码

1.实现拦截器 Interceptor (以登录拦截器为例) 1.1 写一个登录拦截器普通类 实现HandlerInterceptor接口重写preHandle方法 //检验登录状态拦截器 //实现接口HandlerInterceptor 重写方法preHandle public class LoginInterceptor implements HandlerInterceptor {/** 该方…

新年烟花代码-html版

新年烟花代码 效果展示 代码 <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>2024新年快乐&#xff01;万事如意&#xff01;</title><meta name"viewport" content"width…

Java中的多线程

进程和线程的概念 进程是应用程序的执行实例有独立的内存空间和系统资源。 线程是进程中执行运算的最小单位&#xff0c;可完成一个独立的顺序控制流程 一。一个进程可以包含多个线程&#xff0c;每个线程都独立执行特定的任务&#xff0c; 是CPU调度和分派的基本单位。 多线…

2023年全国职业院校技能大赛软件测试赛题—单元测试卷⑥

单元测试 一、任务要求 题目1&#xff1a;根据下列流程图编写程序实现相应分析处理并显示结果。返回结果“ax&#xff1a;”&#xff08;x为2、3或4&#xff09;&#xff1b;其中变量x、y均须为整型。编写程序代码&#xff0c;使用JUnit框架编写测试类对编写的程序代码进行测试…

开发知识点-RabbitMQ

RabbitMQ 下载与介绍权限了解消息状态rabbitmqctl命令与操作配置常见错误常见问题日志 poc-yaml-rabbitmq-default-password 下载与介绍 RabbitMQ是一个使用Erlang语言开发 开源的消息中间件项目&#xff08;Message Broker&#xff09;&#xff0c; 采用Mozilla Public Licen…

SpringBoot用MultipartFile.transferTo传递相对路径的问题

问题描述&#xff1a; 打算给自己的项目添加一个上传文件保存功能&#xff0c;于是我使用MultipartFile.transferTo()来完成这个功能&#xff0c;由于我的项目要部署到服务器&#xff0c;所以我使用了相对路径把上传的文件保存到当前项目的工作目录下&#xff0c;但是报错了&am…

如何在 Windows 中使用Copilot AI

Windows Copilot 是 Windows 中的一个新功能&#xff0c;它可以让你与一个智能助理进行对话&#xff0c;获取信息&#xff0c;执行任务&#xff0c;甚至创造内容。Windows Copilot 使用了 Bing Chat 的技术&#xff0c;它是一个基于 OpenAI 的 GPT-4 模型的聊天机器人。 目录 …

关于树结构的数据的权限控制的算法

树结构的权限控制分两种:1、逐层加载&#xff1b;2、一次性加载 一、逐层加载 涉及的表结构 表名 T_PLAN 表字段 字段类型 是否必 须字段 说明 ID VARCHAR2(50) Y 主键 PARENT_ID VARCHAR2(50) Y 父项节点ID&#xff0c;默认根节点的父节点ID’-1’ TREEPATH VA…

vue3的福音框架arco.design

前言&#xff1a; 在vue2于2023年底正式宣布不在维护&#xff0c;vue3使用越来越频繁的时刻&#xff0c;我们实现项目的辅助框架也越来越多。element, iview, antd 等经典框架继续风靡一时&#xff0c;不过也有很多好的框架&#xff0c;功能也强大&#xff0c;比如我们今天说的…

ISO 11519-2 开环低速 CAN 网络(10K~125Kbps)

ISO 11519-2 标准的物理框图如下图 可理解为一个低速开环 CAN 总线网络&#xff1b;CAN 开环总线网络允许总线最大长度为 1km;最高速度为 125Kbps;这里的两根线是独立的&#xff0c;每根线上串联一个 2.2kΩ 的电阻&#xff1b;节点就是不同的设备&#xff0c;连接到一个开环总…

Mac上使用phpstudy+vscode配置PHP开发环境

使用的工具&#xff1a; 1、系统版本 2、vs code code 3、phpstudy_pro 一、下载vs code code以及必要的插件 1、vs code下载 点击vs code官网下载 选择对应的版本&#xff0c;一般电脑会自动识别对应的版本&#xff0c;点击下载&#xff0c;然后傻瓜式安装&#xff01; 2…

万字长文 详细讲述 计算机网络层

文章目录 网络层网络层的几个重要概念网络层的两个层面 网际协议 IP虚拟互连网络IP 地址IP 地址及其表示方法IP 地址与 MAC 地址地址解析协议 ARPIP 数据报的格式 IP层转发分组过程基于终点的转发最长前缀匹配 网际控制报文协议 ICMPICMP 报文的种类ICMP 的应用举例IPv6 的基本…

Leetcode 494 目标和

题意理解&#xff1a; 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 &#xff0c;在 1 之前添…