记一次有趣的报价规则引擎系统设计

本文记录了一次设计报价规则引擎系统的过程,系统利用Drools规则引擎,结合CQRS和Event Sourcing,通过Kafka实现事件驱动。在面对复杂的定价规则和砍价功能时,采用广度优先搜索思想,设计了两个微服务,实现了规则引擎和报价管理的解耦。文中还提到了系统的迭代和优化,以及如何通过事件通知UI更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转一篇我发在medium的文章,英文写的,下面我自己来翻译一下,也顺便补充一些技术细节:
https://medium.com/@snowmanjy/an-interesting-system-design-of-a-rule-engine-prototype-29255e87b377

大概是去年这个时间,八九月份的时候,我所在的team打算做一版新的报价系统,大家都领了任务,在做不同技术实现的POC,我正好跟组里老中哥们聊了聊,讨论了下主要的一些业务难点,其中有一个就是由于客户可以定制很多的(大的企业用户可能有成百上千个规则)定价规则Price rules,就产生了一个很有趣的问题:当你对报价单Quote里任何项目进行修改都有可能触发定价规则,而这些规则主要就是 if X条件满足 then do Y操作,规则导致的结果本身又可能对报价单进行修改,而这些修改又可能触发别的规则,所以就是一个不可预知的系列反应,然后另外还有一个难点就是有一个需求很有意思,我们就叫它砍价功能吧,场景就是说在报价的时候告诉客户你要买500个货物需要800块钱,但是客户说我只有700块钱你看我能买多少个货物,要记住这个功能同时还受定价规则的约束,并不一定是一个简单的倒推计算。

我们可以设想一下这个报价系统的前端应用,假设我在亚马逊或者淘宝店买衣服,全场满75块包邮,然后我选了80块的衣服准备结账(没有邮费),在结账时候有个优惠券输入框,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值