文 天财商龙DBA Team:陈乙升 刘华阳
背景介绍
▶︎ 公司概述
天财商龙:天津市神州商龙科技股份有限公司成立于1998年,是一家专为餐饮行业提供数字化整体解决方案及咨询业务的高新技术企业,产品品牌“天财商龙”,在全国范围内拥有近1000名员工、500余家渠道合作伙伴、18家分公司、子公司,服务10万+餐饮企业。天财商龙打造出了智慧餐厅管理、客户关系管理、供应链管理以及企业经营决策分析系统的整体闭环解决方案的产品体系,涵盖餐饮收银管理、厨房管理、智能点餐、库房管理、会员管理、供应链管理、移动支付、智慧餐厅等,适用于不同规模及不同业态的餐饮企业。
天财商龙DBA Team负责整体公司的数据库运营,包含多种数据库种类,例如PolarDB MySQL版、RDS MySQL、RDS PostgreSQL、RDS SQL Server、Redis、MongoDB等,持续保障应用在数据库层面上平稳高效的运行。
业务挑战
随着2023年整体的餐饮行业再次爆发,客户对于系统运行的扩展性,高效性以及平稳性都有了更高的要求,天财商龙DBA Team充分利用云原生技术,在PolarDB MySQL版上享受了数据库技术带来的灵活性、扩展性、高性能、更细粒度的数据还原机制,同时利用更新的IMCI技术,充分享受了一体化HTAP解决方案的优点,给我们提供了更新的解决方案,为充分服务我们的客户打下了坚实的基础。最佳实践我们将从以下几个方面来阐述基于PolarDB的先进性给我们系统带来的红利。▶︎ 扩展性
在PolarDB MySQL版的各种功能中,比较突出的亮点是其扩展能力。不论是横向扩展还是纵向扩展,均能在较短时间下实现。对应我们的业务场景,受到节假日以及月初结算影响,会出现瞬时大量结算写入或者高峰期大量读写请求的突增的情况。为了应对此类情况,原有长期使用高配置的情况下,在业务低峰期存在较大的资源浪费。切换为PolarDB后,经过实际节假日高峰期临时增加RO节点及升配的验证。能及时且低影响的情况下完成对资源的扩展。通过自带的PolarDB数据库代理,在配置新节点自动添加的情况下,临时添加RO节点完成后可以直接对整体系统的读请求进行分压,分散整体系统读请求的压力。临时升配的集群操作,能基本在15分钟内完成对集群所有节点的切换,对于业务读写请求的影响,数据库层面在30s内。在我们的线上业务切换到PolarDB MySQL版后,明显在应对高峰期数据库系统稳定性上提供了很大的帮助,同时在成本上也带来了一定的优势。
▶︎ 性能
在性能角度上,我们在迁移数据库选型当中做了大量且充分的基准性能压测及业务实际接口压测。关注点主要集中在常规的数据库性能负载表现,接口数据情况。最终的数据结果PolarDB给我们带来了意想不到的表现。主要体现在如下几点:
1. 集群负载:整体的测试结果当中,在相同压力场景下,PolarDB MySQL版集群的CPU负载较低,接口处理能力更强,接口响应时间略优于其他场景。2. 分压程度:PolarDB数据库代理可选基于连接数或者集群负载分压策略。能更高效可控的根据业务情况轻松调整负载分压策略。降低RW节点负载瓶颈,增加稳定性的同时提升整体系统性能。
3. 主从延时:PolarDB MySQL版采用独特的物理复制形式,在延时角度对于传统MySQL的异步复制形式在延时角度有着明显优势。
但同时,其集群耦合的形式在DDL操作时也会有一些差别。由于PolarDB MySQL版采用共享存储,对于DDL类的变更元数据锁受到集群所有节点的影响。特别是对于临时DDL需求,可能会受到其他RO节点读请求干扰无法完成。锁的关注角度从常规的单写节点关注要转变为对集群整体所有节点锁情况的关注。▶︎ 历史数据还原
对于实例任意时刻的数据追溯,在实际业务场景有这样的需求,在满足需求的情况下,难免因为各种原因无奈需要对局部库表进行历史数据的追溯。原有在接到类似需求,一般会采用备份+日志恢复的方式对整个实例进行恢复后,在对需求库表进行提取。但对于一个数据量大,库表多的系统,绝对是漫长且痛苦的过程。无法兼顾时效性与准确性。在迁移到PolarDB MySQL版后,看到了其自带的库表恢复功能。它不再是通过整个实例备份集加日志生成克隆实例提供给使用,而是可以直接对库表做时间点的还原,并且直接还原到原实例的自定义其他Database中,仅相当于部分库表数据导入的时间。保证准确性的情况下,在恢复时间上有着极大的优势。
▶︎ 原生OLAP能力
在我们部分业务场景当中,会存在一定量的报表类需求,此类的接口在原有MySQL类环境中给我们带来了一定的困扰。在一定的数据规模体量下,已无法通过常规的手段对其进行性能的进一步优化。应对此类场景,常规的解决方案例如分表分区表等均可一定程度上解决问题,但涉及一定的改造成本。PolarDB MySQL版给我们带来了新的思路,就是其推出的列存索引IMCI功能。他通过构建单独的列存只读节点,采用构建IMCI索引的形式,提供了列式处理能力。其通过代理识别cost成本来定向SQL使用行式或者列式的RO节点进行SQL处理。对于数据局部有序紧凑的聚合类请求有着极大的处理优势。实际业务接口压测表现当中,部分SQL运行能力有着几十倍的提升。成本角度除了额外增加节点外,仅有构建索引的实际空间增长。给应对OLAP类SQL场景带来了新的方案选择。
综上所述,天财商龙DBA Team在PolarDB MySQL版上的探索和大面积的使用,给公司和客户都带来了双赢的结果,从成本和系统的稳定性方面带来了一次更高的提升,让我们更专注于客户体验和客户服务,我们也坚信这仅仅是一个良好的开端,PolarDB MySQL版也将为餐饮行业数据库应用带来新的风向标。
2023「云栖大会」将于10月31日在杭州开幕,免费门票,限时申领!
欢迎点击文末「阅读原文」报名参会~数量有限,先到先得
推荐阅读
点击 阅读原文 领取 云栖大会免费门票