滴滴商城体系
背景:滴滴存在多个商城交易产品,如滴滴套餐、积分商城、付费会员、话费充值等,既涉及到虚拟商品的交易,如券、会员等, 也涉及到实物商品的交易,如司机积分商城,这些产品之前由不同技术团队维护,烟囱式架构,开发效率低,且稳定性差。 18-19 年我负责将这些产品用一套商城体系进行整合,并用微服务思想进行治理,将商城体系按领域模型分成商品中心、交易中 心、秒杀、商家配置后台4 个模块。以下分别介绍一下:
● 商品中心:负责营销策略呈现、价格计算、商品筛选、AB实验等能力,商品中心峰值查询 QPS 达到 6000+QPS,同时又有复 杂搜索的需求,借助redis缓存承接大流量查询,同时利用ES承接全文检索+复杂查询的能力,保障了高性能+高复杂度的需求。
● 交易中心:交易中心涉及订单的创建、支付、以及支付后的权益派发,以及退款和交易信息查询的能力,涉及多个服务的状态 流转,包括收银台、商城交易中心、商城商品中心、权益服务、外部物流平台、发票服务等,对性能和状态一致性都是比较大的考 验,经过多轮技术选型,最终采用 状态机+SAGA事务模型维护交易模型,同时用对账单兜底。在能保障性能的同时,能满足交易
的最终一致性。
● 秒杀:秒杀服务的架构为Golang服务+Kafka+Redis,利用redis缓存承接页面的瞬时访问流量。因订单处理能力的限制,通过 Kafka对流量进行削峰填谷,并使用 Lua 脚本 在 Redis 中实现了秒杀过程的事务处理。Lua 脚本保证了秒杀操作的原子性,确保 用户在秒杀时,库存扣减和订单生成等操作能在同一事务内完成。
● 商品配置后台:负责对接滴滴运营人员和外部商户的入驻、商品的录入、订单管理、发货等操作。并能帮助运营人员追踪订单 状态、物流情况等。
能过以上架构模型,形成了商城体系比较稳定的架构,后续又相继承接了滴滴租车、机票火车票售卖等相关交易场景。