You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实时股票监控系统六边形架构:轮询引擎归属方案咨询

轮询引擎的分层建议

先给出结论:推荐方案2b,即轮询线程的管理放在应用层,核心业务逻辑由领域层处理。下面逐个分析各方案的问题与合理性:

方案1(领域服务管理线程):不推荐

领域层的核心职责是封装业务规则、领域逻辑,而线程管理、定时调度属于技术实现细节,不属于领域范畴。把线程逻辑塞进领域服务会带来以下问题:

  • 污染领域模型,让领域层依赖线程、定时任务等技术组件,降低领域逻辑的纯粹性;
  • 大幅降低可测试性:测试领域服务时需要处理线程生命周期、调度时机等额外复杂度,无法专注于业务逻辑的验证;
  • 违反单一职责原则:领域服务既要处理业务规则匹配,又要负责线程调度,职责混杂。

方案2(应用层管理轮询线程):合理方向

应用层的核心职责是协调业务流程、调用领域服务与外部适配器,线程调度作为流程执行的技术手段,放在应用层是合适的。

子方案2a:不推荐

应用层直接处理查询市场信息、匹配规则、创建日志、发送告警等核心逻辑,会导致业务逻辑分散到应用层,领域模型退化为简单的数据载体,失去DDD中领域层封装业务规则的意义。后期如果业务规则变更(比如匹配逻辑调整、日志生成规则修改),需要在应用层修改代码,难以维护,也无法利用领域层的封装性保证业务规则的一致性。

子方案2b:推荐

应用层负责以下技术与流程调度工作:

  • 管理轮询线程的生命周期;
  • 根据市场配置的工作时段、初始轮询间隔控制调度时机;
  • 根据市场信息或订阅情况动态调整轮询频率;
  • 调用外部适配器(市场信息源)获取最新市场数据;
  • 调用领域层的业务方法(如EvaluateMarketRules()),将市场数据传入;
  • 调用外部适配器(告警分发器)发送告警。

领域层负责核心业务逻辑:

  • 接收市场数据,匹配订阅者的监控规则;
  • 当匹配成功时,生成对应的日志领域模型;
  • 返回匹配结果与日志信息给应用层。

这种划分的优势:

  • 领域层专注业务逻辑,保持纯粹性,易于测试与维护;
  • 应用层专注流程协调与技术实现,职责清晰;
  • 业务规则的变更只需要修改领域层,符合DDD的架构原则;
  • 外部适配器的调用由应用层统一协调,降低领域层对外部依赖的耦合。

内容的提问来源于stack exchange,提问作者Suomax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:30:43