1.某SNS平台的关系链存储优化
背景:用户基数为1亿+,用户关系链是SNS平台的核心存储之一,当用户A关注用户B时,会有存储维度和消息维度的双重放大。
挑战:Redis全量存储了关系链,使用了约2亿+ zset,占用空间300G左右,存储成本高,也有维护风险。
方案:基于业务场景,平衡成本与效率,将Redis定位为缓存,全量数据落地到MongoDB/MySQL,重构关系链的读写逻辑,并且保障容灾容错能力与数据一致性,让非关键路径异步化,提升核心服务的性能。
效果:我负责整个重构的设计与核心接口开发,上线后,Redis占用空间下降2/3,缓存命中率80%+,服务性能经过了压测与大促的严苛考验。
2. 某APP拉下载服务。
背景:拉新用户始终是购物类APP的一个重要使命,需要在各种前端场景曝光
挑战:不同的前端场景,有不同的业务限制,后台服务需要高效灵活的适配新业务
方案:以组件化、服务化为目标,抽象核心业务规则,设计通用的数据模型与服务接口
效果:我负责后端架构设计与核心服务开发,上线后,接入新业务时,只需简单后台配置,开发成本极低,显著提升了业务迭代效率,贡献了整个大盘新用户的1/3
3.业务数据的实时统计平台。
背景:业务数据的实时统计,比如PV、UV、下单数量、下单金额等,对一些场景有重要意义,特别是大促期间
挑战:消息量大,比如点击流可达千万量级/分钟;存储量大,统计UV去重时,需处理亿级的key;当时还未出现Flink等通用的实时统计框架,需要从零搭建
方案:MQ负载均衡、C++无状态服务可扩展、本地共享内存预处理热点key、Redis与Lua脚本保证全局数据一致性和MySQL存储统计结果
效果:我负责了整个系统架构设计与核心服务开发,上线后,经历多次大促检验,即使后续用Flink重新实现了相同的需求,但初版系统一直是技术实现与业务指标的重要参考