《2019年京东到家优惠券系统的挑战及演进.pdf》由会员分享,可在线阅读,更多相关《2019年京东到家优惠券系统的挑战及演进.pdf(44页珍藏版)》请在三个皮匠报告上搜索。
1、京东到家优惠券系统的挑战及演进目录1.优惠券业务体系介绍2.优惠券系统的架构演进3.系统重构升级的经验总结优惠券业务体系介绍促销的种类是多种多样的,常见的有:单品促销(秒杀,直降,第2件n折,买赠等)订单促销(满减,满折,阶梯满减/满折,捆绑等)还有今天我们重点介绍的优惠券促销。优惠券促销与单品促销和订单促销有什么优势呢?首先,容易传播;其次,玩法多变;最后,方便精细化运营;关于容易传播,这得从大家日常获取信息的渠道说起,短信/网络/多媒体等,大家获取促销信息的大多也是基于这几种渠道。短信定向发券非常适合用户的拉新和留存;关于玩法多变,下单返券,游戏发券,各种裂变(砍价券,分享有礼)等等,稍后
2、还会详细介绍。关于运营管理,补贴预算可控制,订单转化率可预估可量化,可以实现精细化运营;一个快速发展的企业,在业务步入稳定期后,大部分服务迭代的频次会越来越低,但营销相关的系统感知到这一点应该是最晚的,产品差异化不大的前提下,营销可能就是制胜的关键,甚至成为核心竞争力。优惠券促销贯穿整个订单履约过程,首页的活动楼层,大牌福利,门店主页促销信息,购物车领券,下单后的分享领券,订单完成后的下单返礼等。优惠券业务体系介绍优惠券业务体系介绍优惠券业务体系介绍优惠券业务体系介绍优惠券系统的架构演进V1.0优惠券系统的架构演进-V1.0V1.0初创典型的分布式服务架构,基本满足了初期的效率优先,快速响应的
3、业务需求。优惠券系统的架构演进-V1.0V1.0初创面临的挑战V1.0初创技术的演进已经赶不上业务的迭代速度了,系统在负重前行,举几个典型的场景:1.优惠券结构定义不统一,前期优惠券是没有抽象的独立存在,大都是单张的领取和使用,但随着业务的需求发展我们需要发券包,这就促使我们再优惠券之上,做了活动的抽象.既可以领活动券包也可以领单张券,但老的活动类型可能就不会遵循新的结构,这对后续的优惠券管理带来了挑战.(考虑两套流程)2.不同的活动类型都有一套自己的管理流程,核心流程没有复用,如果要在创建优惠券时需要接入预算池这样的需求,就需要修改所有活动类型的创建过程.(领券和用券也存在此类烟囱问题)3.
4、优惠券的领券规则和使用规则是揉在一起的,系统学习成本和复杂度非常高;另外规则的存储设计是每一种规则都是独立的表;而优惠券的规则又是易变的,这就导致了规则变更,就需要从底层的数据结构到应用流程都需要修改调整(竖烟囱),严重的影响了业务的产出效率和系统层面的稳定性;面临的挑战可用性高并发可扩展性效率优先快速响应V1.0初创投入产出比下滑系统无法支撑新的业务bug率上升单点和性能瓶颈频现面临的挑战数据结构和代码腐坏 底层数据结构定义混乱;业务模块的可重用性、移植性变差,例如领券服务存在多组实现(新人领券,商城领券等);典型的树烟囱型的模式来支撑业务;数据库成为瓶颈 有效性校验,发券,用券,查券等业务
5、共享服务和数据库资源,任何一方有抖动都会影响其它业务,比如发券高峰期可能会影响用券功能,典型场景是定向推送发券效率快了,可能会引起数据库负载增高,影响依赖数据库操作的其它功能,发券效率慢了,又不能在规定的时间内将券发送到用户账户的矛盾;需求阻塞 设计上的不规范和技术在老系统上负重前行,外加新的更复杂的玩法规则迭代,产研测的产出比降低;商家和运营端管理优惠券在检索和统计上的部分需求难以支撑;比如模糊搜索,用券统计等;V1.0初创优惠券系统的架构演进V2.0优惠券系统的架构演进-V2.0V2.0迭代拆分 服务 模块 存储合并 流程 结构解耦 重构 消息 任务冗余 服务 数据容错 冗余 限流 重试
6、降级 隔离 回滚方法论业务隔离+流程拆分+并行|异步+服务幂等+异常重试优惠券系统的架构演进-V2.0V2.0迭代v2.0基于业务隔离+流程拆分+并行/异步,结合服务幂等行设计和异常重试机制来解决功能耦合,单点瓶颈和性能等问题。拆分服务:按照用户:B端/C端按照职责:查询/检索统计(es)按照流程:同步-异步(worker)拆分模块:定向推送从普通领券中拆分出来/领券规则和用券规则拆分拆分存储:数据库分库,数据表分表流程合并:底层统一券展示/券领取/券使用等流程实现;结构合并:比如易变的新玩法,限制规则使用统一的数据结构进行落地而非新增表或字段解决;重构解耦:模块功能拆分,使其单一;复杂易变得