首页 > > > TiDB 在二维火餐饮管理实时报表中的实践
二维火作为餐饮商家管理标准化服务提供商,帮助商家节省经营成本、提升服务效果是我们的使命。在商家日常生产中,上游系统产生了很多数据,包括供应链采购系统(Support),门店收银系统(POS),食客排队系统(Queueing),智能厨房显示系统(KDS),电子菜谱系统等(E-Menu), 一个实时、精准、可多维度分析的报表系统能充分利用这些数据,支持商家对经营决策进行优化,极大提升商家工作效率。主要服务于以下场景:
二维火各类报表界面:

随着业务范围扩大以及功能扩展,实时报表业务不光承担了报表业务,业务方同时希望这是一个数据实时、可多维度查询分析的数据平台工具,为业务进行各种数据支持。
如果用 MySQL 作为报表存储引擎的话,一个门店所属连锁总部变更,相当于分库的路由值产生了变化,意味着需要对这家店的数据进行全量迁移,这是个灾难性的事情,我们希望连锁只是个属性,而不用受到 Sharding Key 的制约导致的一地鸡毛。
我们的业务数据是构建在 MySQL 之上,按照业务和商家维度进行分库。利用 Otter 订阅业务数据,进行数据整理归并到 Apache Solr[1] 中,输出分析、统计报表所需要的数据。然而随着业务的快速发展以及客户定制化需求不断增加,Solr 的瓶颈从一张白纸慢慢地被填充。
在引入 TiDB 之前,我们也评估和使用过 Greenplum,但是发现并发实时写入的性能无法满足我们的业务承载,在机缘巧合之下认识了 TiDB 同学们,经过了一段时间熟悉、测试和研究之后,我们意识到 TiDB 就是我们想要的产品,于是就开始在实际环境中使用 TiDB 来构建实时报表系统。
特别要赞美下 TiDB 的软件太棒了,国内开源软件无出其右,天然的高可用,本身减少了很多运维工作,Ansible 多节点、多组件一键部署,业务无感知滚动升级,特别是把监控也嵌合到软件本身里,让我们追踪、定位问题异常清晰明了,大大缩减了排查成本。
当然 TiDB 的优点很多:
总之,TiDB 很好的解决了我们之前在实时报表碰到了各种痛点,让我们终于不用为业务方的每项决策和用户的需求而绞尽脑汁和痛苦不堪。
TiDB 集群总体配置如下:2*TiDB、3*TiKV、3*PD

我们基于 TiDB 的实时报表系统稳定运行了一个多月,目前实时报表承载的日数据更新量在一亿以上,高峰时期 TiDB 写入 QPS 高于 4000,百级读 QPS ,读流量基本上是统计类 SQL, 比较复杂,最多包含十几张表的关联查询。TiDB 不管从性能、容量还是高可用性以及可运维性来说,完全超出了我们的预期。TiDB 让我们的业务开发回到了业务本质,让简单的再简单,开发不需要再拆东墙补西墙忙于数据爆发带来的各种手忙脚乱。
整体数据库架构图:

一些注意事项,TiDB 的官方文档写的非常详细全面了,这里我再画蛇添足几点个人觉得非常重要的几项:
在接入一个业务实时报表后,我们对 TiDB 越来越了解,后续我们计划对 TiDB 进行推广使用,具体包括:
最终通过 TiDB 构造成一个同时兼容分析型和事务型(HTAP)的统一数据库平台。
✎ 作者介绍:二维火架构运维负责人 火烧 (花名)
原文作者:;如有侵权,请联系管理员删除。