复杂业务模型抽象架构

几乎所有复杂的业务逻辑,都可以被拆解或组合成三种核心模型的应用:

  1. “做什么决策?” —— 策略引擎负责回答这个问题。
  2. “呈现什么顺序?” —— 排序架构负责回答这个问题。
  3. “按什么步骤做?” —— 流程引擎/任务系统负责回答这个问题。

1. 策略引擎 (Policy/Strategy Engine)

这是"满足了哪些条件,就可以命中哪些结果"的模式。它的核心是将易变的业务规则(策略)与相对稳定的系统代码分离开来

核心思想

定义一系列规则(条件),当输入的数据(事实)满足这些规则时,系统执行相应的动作或返回特定的结果。A/B测试、风控引擎的原理。

典型应用场景

  • 风控系统:用户注册、登录、交易、发帖等行为,命中不同风险等级的规则,从而触发拦截、验证码、人工审核等不同操作。
  • 营销活动:用户满足地域、会员等级、历史消费行为等条件,即可命中优惠券、折扣、弹窗提醒等营销策略。
  • A/B测试与灰度发布:根据用户ID、设备信息、地理位置等,将用户分流到不同的实验组,下发不同的产品策略(UI、算法、业务逻辑等)。
  • 访问控制(Authorization):用户拥有什么角色、属于哪个部门,决定了他能访问哪些资源、执行哪些操作。
  • 内容分发:根据用户画像和内容标签,决定向用户推荐哪一类内容。

涉及的关键技术和知识点

  • 规则引擎(Rule Engine):如 Drools、Easy Rules 等,提供规则的定义、存储、匹配和执行能力。
  • DSL(Domain Specific Language):为业务人员提供易于理解和编写的规则描述语言。
  • Rete算法:高效的模式匹配算法,是大多数规则引擎的核心。
  • 事实库(Fact Base):存储当前状态和输入数据的地方。
  • 推理引擎(Inference Engine):负责将事实与规则进行匹配,并执行相应的动作。

高度抽象的模型

            +-------------------+
输入数据 -> |  特征/事实提取  | -> [事实集合]
            +-------------------+
                                    |
                                    v
+----------------+      +-----------------------+      +-------------------+
| 规则/策略仓库  |  ->  |     规 则 引 擎       |  ->  |    决策结果/动作   |
| (DB, Config)   |      | (Rete算法, DSL解析)   |      | (通过, 拒绝, 发券) |
+----------------+      +-----------------------+      +-------------------+
                            ^
                            |
                      +-------------------+
                      | A/B实验分流模块 |
                      +-------------------+

2. 排序架构 (Ranking Architecture)

理解得非常准确:“算法模型给出来的结果,它不一定精确,他需要的后端工程再去手动的(干预)"。这完美描述了"搜广推"中的重排(Re-ranking)阶段。

核心思想

将一个候选集合(商品、内容、广告等)按照某种评分标准进行排序,以优化用户体验或业务指标。现代排序架构通常是多层漏斗结构,从粗糙到精细,从算法到规则。

典型应用场景

  • 搜索引擎:对搜索结果按相关性、权威性、时效性等进行排序。
  • 推荐系统:对推荐内容按用户兴趣、内容质量、多样性等进行排序。
  • 广告系统:对广告按eCPM(预期收益)、CTR(点击率)、用户体验等进行排序。
  • 电商平台:对商品按销量、评分、价格、库存等进行排序。
  • 内容平台:对文章、视频按热度、质量、个性化匹配度等进行排序。

涉及的关键技术和知识点

  • 多层排序架构:召回 -> 粗排 -> 精排 -> 重排,每一层都有不同的优化目标和计算复杂度。
  • 机器学习排序:Learning to Rank (LTR),如 RankNet、LambdaMART、XGBoost 等。
  • 特征工程:用户特征、物品特征、上下文特征、交叉特征等。
  • 在线学习:实时更新模型参数,适应用户行为变化。
  • 多目标优化:平衡点击率、转化率、用户满意度、收益等多个指标。
  • 重排策略
    • 打散(Diversification):避免同类内容过度聚集。
    • 去重(Deduplication):移除重复或相似内容。
    • 强插(Insertion):插入特定的运营内容或广告。
    • 规则保护:确保结果符合法规和平台政策。

高度抽象的模型

+----------+   +----------+   +----------+
|  召回层  |-->|  粗排层  |-->|  精排层  |--> [算法排序列表]
| (多路召回) |   | (轻量模型) |   | (复杂模型) |
+----------+   +----------+   +----------+
                                               |
                                               v
                                          +-----------------+
                                          |     重排层      |
                                          | (打散, 去重, 强插) | --> 最终呈现给用户的列表
                                          +-----------------+

3. 流程引擎 / 任务系统 (Workflow Engine / Task System)

对这个模型的描述也非常到位:“执行完A,再执行B…延迟20分钟再执行C…各种任务的编排调度”。它解决了业务流程的自动化和可靠性问题。

核心思想

将一个复杂的端到端业务流程,拆解为一系列独立的、可编排的、可观测的任务节点(Node),并根据预设的逻辑(串行、并行、分支、延迟、事件触发)来调度和驱动整个流程的执行。

典型应用场景

  • 电商订单系统:下单 -> 锁库存 -> 支付 -> 通知仓库 -> 发货 -> 确认收货,这是一个经典的线性流程,但其中支付、发货等环节可能包含复杂的子流程和异常处理。
  • 商品发布流程:上传图片 -> 图片处理(加水印、压缩)-> 内容审核(机审+人审) -> 同步到搜索引擎 -> 上架。
  • 数据处理 (ETL Pipeline):从不同数据源抽取数据 -> 清洗转换 -> 加载到数据仓库,这是一个典型的数据任务流。
  • 用户增长任务:用户完成任务A(签到)-> 发放奖励 -> 触发任务B(去浏览商品)的引导。
  • SRE/运维自动化:监控到告警 -> 自动执行诊断脚本 -> 尝试自动恢复 -> 失败则创建工单并通知负责人。

涉及的关键技术和知识点

  • 工作流引擎:如 Activiti、Camunda、Temporal、Airflow 等。
  • 状态机:有限状态机(FSM)用于建模任务的生命周期和状态转换。
  • DAG(有向无环图):用于表示任务间的依赖关系和执行顺序。
  • 事件驱动架构:通过事件来触发任务的执行和状态变更。
  • 补偿机制(Saga Pattern):在分布式环境下,当某个步骤失败时,如何回滚之前的操作。
  • 重试与容错:任务失败时的重试策略、熔断机制、降级处理等。
  • 监控与可观测性:任务执行状态、耗时、成功率等指标的监控和告警。

高度抽象的模型

[事件/触发器] -> [流程引擎] -> [任务调度器]
                      |              |
                      v              v
              [流程定义存储]    [任务队列/消息队列]
                      |              |
                      v              v
              [状态管理/持久化]  [任务执行器集群]
                      |              |
                      v              v
              [监控/告警系统]    [结果回调/通知]

结论

这三大模型:

  • 策略引擎 解决 “判断” 的问题。
  • 排序架构 解决 “择优” 的问题。
  • 流程引擎 解决 “执行” 的问题。

在真实的重型后端业务中,这三者往往是融合在一起的。比如:一个营销活动(策略引擎决策),可能会触发一个用户任务流(流程引擎执行),任务流的最终奖励可能是个性化的优惠券列表(排序架构生成)。

理解和掌握这三大抽象模型,能够帮助我们更好地设计和实现复杂的业务系统,提高系统的可维护性、可扩展性和业务敏捷性。