
*本文转载自公众号【参码思想汇】,转载时略有改动。
大参林是中国药品零售连锁行业的领军企业,截至2024年9月30日,其门店数量已突破16000家,并拥有超过1亿的庞大会员群体。在日常运营中,无论是门店的现场交易、门店下单,还是线上的私域订单交易,大参林都紧密围绕会员展开服务。
为了构建一个高效能的会员系统架构,实现数据驱动的业务决策与精细化运营策略,大参林采用了OB Cloud云数据库技术,成功部署了自家的CRM系统【参林 CRM】。通过切换到OB Cloud,大参林得以构建一套现代化的数据库架构,这不仅显著提升了数据库索引的查询效率、查询性能和响应速度,还进一步增强了顾客的购物体验,使之更加精准、便捷与高效。
接下来,我们将深入解析大参林会员CRM系统的重构与优化方案及其具体实施过程,诚邀各位读者一同探讨。
一、外采CRM系统面临五大技术难点
大参林原有的 CRM 系统是外采系统,采用本地化部署,包括旧的 CRM 管理后台、WSDL API 服务、营销规则引擎等。随着业务发展,原有的 CRM 系统已无法支撑大参林会员系统。其原有的数据库系统主要面临以下技术难点:
系统历史包袱重:原外采的系统存在内置的复杂业务流程,技术实现上也存在大量的技术债务,改动影响风险大;
缺失相关文档沉淀:作为一套外采的系统,缺少系统的设计文档,一直是在最上层做简单的维护,对于大部分开发人员,【外采 CRM 系统】是一个黑盒,没有人能全部了解系统的全部功能实现;
数据集成和同步:重构过程中,需确保数据在不同系统间的一致性和准确性;
系统性能与兼容性:超过一亿的会员,存储了数十张数据过亿的表,新旧系统之间的无缝集成和数据迁移是难点;
新旧系统切换风险管控:切换推广过程中,参林 CRM 任意一个接口出问题,或者与旧接口的业务有差异,都可能直接影响全国 16000 多家门店的销售收银业务。必须要把风险降到最低,风险可控。
二、重构CRM系统,搭建全新数据架构
在系统重构之前,产品和技术一起梳理了当前的系统功能清单,盘点哪些系统功能是应该在重构之后的系统中保留的,哪些是不属于参林 CRM 系统功能范围的。最终制定了功能重构、功能整合、功能迁移、功能删减四个策略。整套重构方案包含了重构改造的方案、数据双写方案、数据同步方案、灰度方案、回滚方案等。
(一)重构前-现状分析


(二)开始阶段-重构完成


数据新增,需要唯一 ID 的业务请求改为串联执行,主动拉取响应数据写入 OceanBase; 数据更新,非唯一 ID 写入变更的业务,由网关进行流量分发,然后前期以原旧数据库为准,那就先请求【外挂 CRM 服务】,得到成功状态码后网关开启异步的双写请求【参林 CRM】; 数据查询,前期对外 API 服务统一还是走【外挂 CRM 服务】,后期服务逐步切换到【参林 CRM】服务;
数据量大:单表接近 20 亿条记录,查询时需要扫描大量数据,即使使用索引,单表也会导致索引树过大,影响查询性能;
I/O 压力:海量数据集中在一个表中,会对 I/O 产生巨大压力,增加查询延迟;
内存消耗:单表查询时,查询缓存和索引缓存的内存消耗会非常高,导致内存不足,从而影响查询速度。
减小索引大小:将数据分散到多个分区,可以减小每个分区的索引大小,提高索引的查找效率;
并行处理:分区表可以利用多个节点进行并行处理,提升查询性能;
减少 I/O:分区可以减少每次查询所需的 I/O 操作,提升响应速度;
分布式事务:OceanBase 底层已实现;
维护索引表:需要维护额外的索引表,满足非分区键的查询场景。主表数据变更,需要同步更新索引表。

新券码中内嵌了生成日期,有了券码就能命中单个分区。
对于存量旧券码,通过读取历史数据生成旧券码索引表(coupon_history_index),维护旧券码对应的生成日期,按旧券码进行 hash 分区。数据查找时先从旧券码索引表找到生 成日期,再去优惠券主表查找明细,只命中单个分区;
数据同步与初始化:超过一亿的会员,存储了数十张数据过亿的表,新旧系统异构数据之间的无缝集成和数据迁移是难点;
数据一致性:重构过程中,需确保异构数据在不同系统间的一致性和准确性。

原旧数据库按照新 OB Cloud 数据接口生成数据库快照:【外采 CRM 系统】的库表与重构后的库表是异构,重构的系统需要对数据结构做一次重新设计,因此在原旧数据库做好快照临时表;
DataX 对 OB Cloud 进行数据初始化:DataX 是阿里巴巴离线数据同步工具,通过 DataX 很快完成 OB Cloud 的上百亿数据的初始化;
XXLJOB 进行增量同步:第一步中是在原旧数据库生成临时,不停机同步,同步期间肯定也有新的业务数据源源不断的写入旧库,所以用定时同步服务对会员最后修改时间进行扫描比对,最后进行同步覆盖。
(三)当前阶段


功能接口逐步切换:整理、归类【参林 CRM】所有 API 清单,非核心流程接口,按功能的的维度,逐步切换;
核心接口流量灰度:核心接口,根据上游系统请求头上的标识,POS系统的请求按营运区和门店级别的流量进行切换,非门店POS系统请求按系统做流量切换控制。统一在服务网关控制所有流量。
4. 回滚方案
在 nacos 更改配置,切换到原接口,热更新,直接生效;
三、技术自主掌控,期待更多合作
为了下游从新的 OB Cloud 库同步数据,下线旧数据库,在新旧库并行阶段,旧数据库已不对外提供服务,这个阶段会把旧库当作 OB Cloud 数据库的从库,只做数据单向同步,满足下游抽数。主要做了两方面改造:


目前,重构后的【参林 CRM】系统,不仅在技术上实现了从外采到自主掌控,从无源码组件化开发到主流架构,在用户体验上也进行了全面的革新。通过更完整的架构设计,结合趋于中台化的产品形态,顾客将享受到更精准、更便捷、更高效的购物体验,相信新系统能够更好的助力业务的快速发展。




