浙江乐檬信息技术有限公司成立于2004年,是⼀家产品+定制型企业。乐檬⽴⾜于⻝品零售⾏业,提供专业的食品零售行业系统软件解决方案,包括门店收银系统、连锁ERP管理系统、WMS仓储管理系统、线上商城、全渠道会员管理系统、经销商管理系统等,为超万家食品零售企业提供了专业服务。发展至今,乐檬已为上万家客户提供零售全渠道全场景一站式解决方案,服务门店数10w+。

乐檬原先使用开源MySQL支撑以零售ERP为核心的全渠道会员、智慧收银、线上商城、订单管理、营销、移动报表等全系列业务。2023年下半年,乐檬核心业务的数据量和并发量持续上涨,对数据读写性能和分析性能提出了更高的要求。在原有数据库上得不到较好的解决,部分情况下升配资源来缓解问题效果也不是太好。
乐檬基于阿里云瑶池旗下的云原生数据库PolarDB构建新技术架构,高性能稳定支撑超过10万个门店。使用列存索引后核心功能SQL查询性能最高提升170倍,大部分复杂SQL查询性能提速10倍以上。
2. 业务挑战
2.1 智慧收银系统实时性不足
智慧收银系统是乐檬ERP系统的主要业务入口,收银速度、大客户收银并发能力、收银系统的稳定性对门店的购物体验非常重要,对数据库读写性能、并发读写能力、稳定性和健壮性提出较高要求。乐檬业务的数据量巨大,达到10亿级,开源MySQL的高并发读写遇到瓶颈,出现交易延迟、数据不一致等问题。
2.2 多个查询分析场景出现性能瓶颈
这些复杂查询分析场景涉及的数据量巨大,单个OLAP查询需要执行TB级别的数据,消耗大量CPU和IO资源,伴随出现了不同客户的查询干扰问题。大客户数据量、并发量增长之后,由于单次查询慢,报表的并发能力急剧下降,使用体验下降。
3. PolarDB的解决方案
经过多轮的调研和与阿里云PolarDB团队的沟通交流,出于兼容性、易用性、查询提速能力、弹性、成本等方面的考虑,乐檬决定将数据迁移到PolarDB MySQL版来解决这些问题。乐檬主要看中PolarDB的IMCI、读写分离一致性读、Serverless、共享存储大存储等特性,在较好地解决当前问题的同时,也给乐檬未来的技术架构演进提供了较好的扩展性。
当前,乐檬使用PolarDB实例超50个,总数据量超过300TB,这些实例用于以零售ERP为核心的全渠道会员、智慧收银、线上商城、订单管理、营销、移动报表等乐檬全系列业务中。核心产品门店收银管理、连锁门店ERP管理系统、采购配送系统、客户营销分析系统、新零售管理系统、WMS仓储管理系统等主要使用PolarDB MySQL版来支撑业务的高并发读写和未来的架构扩展。

3.1 共享存储一写多读架构支撑收银业务
PolarDB基于云原生设计理念,采用分布式集群架构,一写多读,一个集群包含一个主节点和最多15个只读节点。主节点处理读写请求,只读节点仅处理读请求。主节点和只读节点之间采用Active-Active的Failover方式,提供数据库的高可用服务。多个计算节点共享一份数据,基于全新打造的分布式块存储(Distributed Storage)和文件系统(Distributed Filesystem),存储容量可以在线平滑扩展,不会受到单个数据库服务器的存储容量限制,可应对上百TB级别的数据规模。

乐檬的智慧收银系统以PolarDB为核心组件支撑收银业务,来满足不同收银端、不同业务渠道、多个门店的收银诉求。PolarDB通过内核读写优化、物理复制和读一致性、Serverless等特性,解决了智慧收银系统高并发读写、主从数据复制延迟、业务流量波动大等问题,使得乐檬的收银流程更加顺畅和丝滑。
内核读写的优化
PolarDB的共享存储一写多读的架构发挥了极大的作用,垂直弹升读写节点,动态增加只读节点的操作都可以在分钟级完成。PolarIndex、热点库存更新、PolarDB Redo分散写等内核优化提高了收银的并发能力,降低每次收银查询耗时,整体提高了乐檬智慧收银系统的并发能力和扩展能力。
物理复制和强一致读
PolarDB采用共享存储技术架构,同时技术上读写节点和只读节点之间采用物理日志复制,读写节点和只读节点复制延迟低,延迟控制在毫秒级,能满足大部分业务场景的延迟要求,同时通过高性能全局一致性(SCC)技术提供强一致读,在收银场景下满足集群水平扩展与数据读一致性的诉求,保证了业务高峰期只读节点可以帮读写节点分流。
Serverless
乐檬服务2B的业务,存在明显的波峰浪谷特性,PolarDB的Serverless能力支持随业务负载自动弹升弹降和增加节点,帮助乐檬从容应对业务负载的波动,更好地支持大客户的日常售卖和固定的运营活动,在保障了业务正常运行的同时,也降低了资源的持有成本,从而整体上提高了资源的使用率。同时,弹升过程对业务无感,满足收银系统对系统可用性的诉求。