适用项目:线上商品的销售与运营平台
复习状态:已复习 1 次 (2026-05-22T06:13:04)
虚拟机风格是一种通过定义中间规则、指令或语言,并由解释器或规则引擎进行解释执行的软件架构风格。它的核心思想是把容易变化的业务逻辑从程序代码中抽离出来,通过规则库、解释器、运行上下文和规则选择机制来完成业务处理。线上商品销售与运营平台的营销活动变化非常频繁,运营人员经常需要配置满减、折扣、优惠券、会员价、秒杀限购等规则,如果每次活动都修改代码,不仅开发成本高,而且容易影响核心交易流程。因此,在本项目中,我采用虚拟机风格中的基于规则系统思想,建设了营销规则引擎服务,将大量促销和运营规则配置化、解释化,使运营人员可以通过后台配置规则,由系统自动解释执行,从而提高平台运营效率和业务响应速度。
首先,我在系统中设计了完整的规则引擎组成和运行机制。该规则引擎主要包括规则库、工作内存、规则数据选择器和规则解释器四个部分。规则库存储运营人员配置的满减规则、折扣规则、会员规则和限购规则,规则以 JSON 模板和表达式形式保存到 MySQL 中,并同步到 Redis 缓存;工作内存保存本次计算的上下文数据,例如用户等级、商品类目、SKU 编号、订单金额、活动时间和用户历史购买次数;规则数据选择器根据商品、活动、用户和渠道筛选出本次需要执行的规则集合;规则解释器负责解析规则条件并执行对应动作。例如用户提交订单时,营销服务会把订单上下文放入工作内存,先筛选当前商品可用的活动规则,再由解释器逐条判断是否满足条件,最后返回可用优惠和最终价格。采用这种组成方式后,平台实现了促销规则与订单代码的解耦,目前可以管理约 300 条在线营销规则,单次规则计算平均耗时控制在 40 毫秒以内。
其次,我将虚拟机风格应用在平台的促销折扣规则处理中。原来平台进行促销活动时,满减、打折和优惠券使用条件都需要开发人员在订单服务中编写判断逻辑,活动上线周期较长。改造后,我将促销规则抽象为“适用范围、触发条件、优惠动作、叠加关系、有效时间”五类配置项。例如“家电类目满 1000 减 100”“新用户首单满 199 减 30”“会员日黄金会员额外 95 折”等规则,都可以由运营人员在后台配置,规则引擎在订单结算时自动解释这些规则并计算最优优惠组合。系统还支持规则优先级和互斥关系,避免优惠券、满减和会员价重复叠加导致价格异常。采用这种基于规则解释执行的方法后,普通促销活动的上线时间由原来的 1 到 2 天缩短到约 30 分钟,平台在大型促销期间可以同时支持 80 多个活动规则并行生效,日均完成约 12 万次优惠计算。
最后,我将规则引擎进一步应用到会员权益和限购风控场景中。在线上销售平台中,不同会员等级享有不同权益,例如普通会员、银牌会员、金牌会员在包邮门槛、积分倍率、生日优惠和专属折扣方面存在差异。项目中我没有把这些权益硬编码到用户服务或订单服务中,而是把会员等级、消费金额、生日月份、商品范围等条件配置为规则,由规则解释器动态计算用户可享受的权益。同时,对于秒杀商品和高价值优惠券,我也配置了限购规则和风险规则,例如同一用户每天最多领取 3 张优惠券、同一手机号 10 分钟内最多提交 5 个订单、同一收货地址购买同一秒杀商品不得超过 2 件等。当用户下单或领券时,系统将用户行为数据放入工作内存,规则引擎自动判断是否允许继续操作。采用这种方式后,会员权益调整不再需要重新发布服务,运营人员当天即可完成配置生效;在一次大促压测中,规则引擎支撑了每分钟约 5000 次会员权益和限购校验,异常领券和重复下单问题明显减少,保障了平台交易秩序。