热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

TiDB在多点数字化零售场景下的应用

本文根据多点DMALL数据库团队负责人冯光普在 TUG企业行成都站的分享整理而成,介绍了在数字化零售场景下,TiDB在多点的使用情况、核心业务场景支撑、价值分析、及经验总

作者: guangpu
原文来源:https://tidb.net/blog/2c37f074


本文根据多点 DMALL 数据库团队负责人冯光普在 TUG 企业行成都站的分享整理而成,介绍了在数字化零售场景下,TiDB 在多点的使用情况、核心业务场景支撑、价值分析、及经验总结。

DMALL OS 数字化零售方案

DMALL OS 是多点全渠道数字化零售方案,通过对零售场景中人、货、场全方位数字化解构+重构,赋能零售商和品牌商,帮助客户实现会员数字化、搭建线上线下一体化营销体系、实现门店作业在线化协同、以及智能供应链,助力商家降本、增效、提升客户体验。

Dmall OS数字化零售TiDB应用简介-冯光普-page-004.jpg

截止到 2021 年 6 月,DMALL OS 已助力物美,麦德龙,711,新百,中百,重百,锅圈食汇,DairyFarm,万宁等 120+ 国内外零售商,覆盖连锁商超、便利店、专营零售等业态;并基于全渠道零售数据为国内外知名品牌实现高速增长。

Dmall OS数字化零售TiDB应用简介-冯光普-page-005.jpg

TiDB 整体使用情况

多点自 2019 年接触 TiDB,目前有超过 30 个 TiDB 集群,服务器节点超过 300 个,总数据量 320TB 以上,其中,最大的 TiDB 集群有 40 台服务器规模,数据量级 60TB,集群 QPS 峰值达到了 100K。



  • 2020 年开始调研并在非关键业务中试用,当时版本是 v3.1;

  • 2021 年正式跑通上线,在业财融合场景中落地,版本 v4.0.9,除 TiCDC 偶尔出问题,整体比较稳定;

  • 2022 年整体升级到 v5.1.4 后,TiCDC 稳定性问题也得到彻底解决,研发和 DBA 睡觉非常踏实;

TiDB 大版本升级,使用 TiUP 仅一条命令即可完成,滚动的方式,过程中业务也很平滑,深得 DBA 喜爱

Dmall OS数字化零售TiDB应用简介-冯光普-page-007.jpgDmall OS数字化零售TiDB应用简介-冯光普-page-008.jpg

当前各行业数字化转型,将领域对象、流程、场景数字化,实现实时在线、高效协同、智能决策,垂直领域的 SaaS 解决方案不断涌现,它们在助力企业降本增效的同时,在数据方面也面临以下技术挑战:



  1. 数据持续快速增长,对于 MySQL 等开源单机数据库,达到容量上限需引入分库分表方案,比如 Sharding-JDBC,这类方案虽然逻辑上透明,但使用后 SQL 能力受限,实际很难执行跨节点 SQL;

  2. 实时商业洞察,数据规模大且产生速度快,对 AP 也提出了挑战,T+1 的方式已经难以满足商业洞察和决策的需求了,比如:商家营销活动的执行效果分析,如果依赖 ETL 抽数+离线计算的技术方案,就无法在活动进行中及时优化营销策略,提升有限资源的回报率;

  3. 更低的成本,不仅是资源层面的存储成本,计算成本,也包括架构及维护成本,弹性可扩展的云原生架构是未来的发展趋势;

Dmall OS数字化零售TiDB应用简介-冯光普-page-006.jpg

核心业务场景支撑

TiDB 在多点 DMALL 的典型应用场景,简单归纳,主要有以下三类:



  1. 海量流水类存储,使用 TiDB 直接替换了 MySQL,多并发批量写的方式,充分发挥 TiDB 高吞吐的优势,典型场景:App 推送记录,短信发送记录,单次营销活动产生的记录可达千万规模,从 MySQL 切换到 TiDB 后,DBA 就告别了容量焦虑,不用频繁归档历史数据,且 RocksDB 引擎相对 InnoDB 引擎有 3~10 的压缩优势,成本比使用 MySQL 更低;

Dmall OS数字化零售TiDB应用简介-冯光普-page-009.jpg



  1. 冷热分离全量存储,对于响应时间敏感,同时数据持续快速增长的在线业务,采用读写分离架构,将近期热数据存储在 MySQL,提供高并发低延迟的在线读写,同时实时同步到 TiDB,保存全量数据,提供历史快照查询及统计分析,支持业务数据变更溯源。典型场景:商品调价、库存变更,数据量超过了单机 MySQL 容量,且持续增长,基于自研的 DRC-TiDB 组件(它可过滤源端 MySQL 归档 DELETE 事件,同步 MySQL 数据到 TiDB),避免了数据增长超过 MySQL 单机容量后水平拆分的技术复杂度;

Dmall OS数字化零售TiDB应用简介-冯光普-page-010.jpg



  1. 多源聚合存储及分析,中台思想及微服务技术架构,实现了在业务域清晰划分下的技术能力复用,及研发高效分工协同,但也导致了数据散落到各个业务子系统中,全链路的业务聚合分析变得困难,在数据规模超过单机存储容量,且要求准实时性分析时,问题更甚。TiDB 透明的水平扩展能力,及 TiFlash 引擎 AP 能力,为这类场景提供了可行方案,典型场景:营销活动分析,聚合同步了多个在线 MySQL 业务库及 MQ 的数据,在 TiDB 中实时计算活动效果,助力运营评估和优化营销策略。

Dmall OS数字化零售TiDB应用简介-冯光普-page-011.jpg

TiDB 价值分析

站在研发的视角,使用 TiDB 的好处:



  1. 更简单的架构,TP 分库分表 + ETL 同步聚合 + AP 分析引擎,这种技术架构,除了技术复杂度、资源成本高、运维困难外,结构/数据一致性难以保证,ETL 同步延迟也是常态。TiDB 提供了另外一种可能:基于内建的 Raft learner 数据复制技术简化了架构,实现 TP 业务和 AP 业务基于同一份数据,避免了一致性和延迟问题。

  2. 实时数据分析能力,基于 TiFlash 列存引擎,及 MPP 计算架构,实时业务数据集上的直接分析得以实现,得益于 TiKV 的水平扩展能力,上游数据的流入和存储几乎无限制,更多的数据,可放大实时数据分析的价值。

  3. 专注业务创新,在充满不确定性的商业竞争中,为快速验证 MVP,业务早期存储选型采用简单易用的 MySQL,但在数据规模达到单机容量上限引入分库分表等技术后,业务研发就需要关注底层存储架构的约束和限制,开发效率降低;甚至权衡性能、稳定性、或成本被迫放弃部分需求特性,业务创新也受到影响,丢失早期竞争优势。TiDB 提供了另外一种可能:在业务进入快速增长阶段,底层存储的扩展对上层业务真正透明,让研发可以专注于业务创新和快速迭代。

Dmall OS数字化零售TiDB应用简介-冯光普-page-012.jpg

站在运维 DBA 视角,使用 TiDB 的好处:



  1. 云原生红利,TiDB 符合云原生架构理念,不论计算层,还是存储层,加机器即扩容,可按需、弹性、近乎无限扩展,相较于 MySQL 分库分表方案的技术复杂、实施门槛高、SQL 能力受限,大规模快速增长数据场景下,运维 TiDB 幸福指数高于运维 MySQL;

  2. MySQL生态友好,TiDB 兼容 MySQL 协议,已建成的平台工具,可直接复用,比如:查询工具,慢 SQL 分析,监控指令等,DBA 可快速上手为研发提供数据库接入服务;

  3. 数据可靠性高,MySQL 需要依赖外部 HA 组件实现故障切换,除部署配置复杂外,还难以彻底避免脑裂问题,TiDB 内部实现了基于 Raft 的数据同步和故障切换,failover 高效可靠,数据强一致保证,DBA 几乎没有心智负担;

Dmall OS数字化零售TiDB应用简介-冯光普-page-013.jpg

在成本方面,TiDB 一直有很多争议:1)组件多,有 PD、TiKV、TiDB 等;2)多副本+高可用,集群部署起步成本较高,会劝退很多用户。根据我们实际使用经验,成本方面的真实情况是:



  • TiKV 的 RocksDB 引擎相对 InnoDB 引擎,有 3~10 倍压缩优势,存储相同规模数据,TiDB 的存储节点数远远低于 MySQL 集群;

  • 随着数据规模增长,只有 TiKV 节点数是随之增长,PD 节点的成本基本不增长,而 TiDB 节点数是与 QPS 相关;

  • 还需考虑引入 sharding 方案后,技术复杂度提升,SQL 能力受限,会带来运维成本的升高,以及开发效率的降低;



  • 在数据规模较小,如在单机 MySQL 容量以内,主从两节点 MySQL 集群,成本是远低于 TiDB 集群的;

  • 当数据规模超过单机 MySQL 容量,需要引入 sharding 方案后,情况会发生变化,使用 TiDB 可能比使用 MySQL 更便宜,主要因为:

Dmall OS数字化零售TiDB应用简介-冯光普-page-014.jpg

实践经验及场景对比

从使用 MySQL 切换到使用 TiDB,需要重点关注和理解分布式架构的优缺点,尤其是存算分离以及分布式事务带来的网络开销,局域网的网络交互延迟,高于单机数据库进程内的数据交互,简单总结一下,结论:



  • TiDB 相比 MySQL 响应更慢;

  • TiDB 相比 MySQL 可输出吞吐更高;

因此,建议采用多并发、批量读写的方式,以发挥 TiDB 的优势。

Dmall OS数字化零售TiDB应用简介-冯光普-page-015.jpg

在数据规模小,要求低延迟的 TP 业务场景中,MySQL 更加合适,而在数据规模远超单机容量、持续快速增长、对响应延迟不那么敏感的 HTAP 业务场景中,使用 TiDB 更加合适。

总结



  • TiDB 基于云原生理念,采用算存分离架构,可以按需、弹性、近乎无限的水平扩展;

  • 基于 TiDB 的 HTAP 能力,可实现同时支撑 TP 业务和 AP 业务的一体化架构,综合成本低;

  • TiDB 与 MySQL 相辅相成,生态友好,是优秀的面向数据快速增长的理想选择。


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
author-avatar
mobiledu2502857377
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有