概述
相信在很多业务下我们需要定义一些规则,比如满足规则 A,则 xx1,满足规则 B 则 xx2。用一个“高端”一点的表达就是一棵决策树,很简单的需求。
于这种思维方式,在一次活动期间,我们需要对参与活动的人进行风险控制。PM 的需求很简单:两个人是好友,则 3 天内只能使用 1 个优惠,两个人不是好友,则 3 天可以使用 2 个优惠。
1
涉世未深的程序员,看到这个需求后,心里暗暗的觉得“so easy”,不就是 if/else 轻松解决
看似完美的解决方法,上线后,等待程序员的苦日子就来了。
我需要把某棵树的 A 节点和 C 节点重新组织,形成一条行的规则。
我需要修改阈值,修改时间范围。
我需要根据不同的规则,触发不同的响应。
程序员 1.0 开始忙于改配置、测试、上线。随着策略变复杂,需求变化更快,上线出问题也越来越多。程序员 1.0 开始应接不暇了,开始频繁的出错,决策树代码复杂而不可维护了。
2.0 版本的程序员,吸收了前面的经验教训,在决策树的原理上,复用最大化。我们将决策树的每个节点都按照最小化规则来组织,抽象最小规则元素。
特征:按照一定业务逻辑实现的类型。比如是否好友、3天使用优惠数量等等
阈值:配置的触发规则的值
逻辑判断:用于比较特征和阈值之间关系的实现。
对于决策树的分叉,在逻辑上可以抽取成独立的链式关系。即对于图一,我们可以抽象出 ABB1/ABB2/AC 三条规则链,且三条规则链相互独立。
对这个链式的规则结果进行统计,将得到和决策树一致的结论,但是节点的存储和组织更加的冗余了。
基于这个认知,我们做了一个规则引擎:
所有的节点都格式化成:特征、阈值、逻辑判断 三要素
所有的决策树打散成独立的链式节点
标准化,表示我们可以搭建一套很完整的产品管理后台
最后
以上就是孝顺河马为你收集整理的架构:决策树解决用户需求的全部内容,希望文章能够帮你解决架构:决策树解决用户需求所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复