首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应式系统-对时间流逝的反应

反应式系统-对时间流逝的反应
EN

Stack Overflow用户
提问于 2015-09-28 23:18:37
回答 1查看 60关注 0票数 1

假设我们有一个响应式销售预测系统。

每次我们进行销售时,我们都会重新计算对未来销售的预测。如果有大量的销售触发我们的重新预测,这会很好地发挥作用。然而,如果销售额从每秒100次事件减少到0次,会发生什么呢?并在很长一段时间内保持0?我们在销售良好时发布的预测是最新的预测。

在这种情况下,您如何对表示“没有销售发生”的事件进行建模,而不会回退到某个每小时/每分钟/任意时间段的批处理事件,该事件显示“X时间已过”。

这是一个通用问题的具体案例-如何在基于事件的系统中模拟没有发生任何事情的时间流逝-而不使用滴答作响的时钟样式事件,这将唤醒每个人重新考虑他们的当前值,这是一个无法扩展的实现。

我考虑过的唯一有意义的选择是:每次我们进行销售时,我们都会在未来2小时内安排一个延迟事件,要求我们重新考虑对该销售的评估。在处理该延迟事件时,我们可以选择安排更多延迟事件以供重新考虑。

EN

回答 1

Stack Overflow用户

发布于 2015-09-30 10:41:18

考虑到这是一个非常通用的场景,您已经做了一个相当大的假设,即除非一次只完成一个销售,否则不可能提出一个以可伸缩的方式重新评估过去销售的设计。

在场景中有许多不同的规模相关数字,而您只看到一个计划的预测更新器可能试图同时处理大量过去的销售。

我能想到的其他可伸缩性问题:

如果你期望的是每秒100美元的销售额,

  • 重新评估每单一笔新销售的预测听起来并不是很好。如果你谈论的是会计的财务预测模型,那么它不太可能需要在该组织每一次销售时都进行更新,如果该组织每秒进行数百笔销售。
  • 如果你谈论的是用于金融市场的短期预测引擎(即预测你在未来10秒内需要多少现金,或能源或其他资源),那么听起来你有持续的波动性,你真的不太可能出现几个小时内什么也没有发生的情况。如果你确实需要频繁地更新预测,那么在触发重新更新之前等待几个小时可能不会以你需要的方式获得你需要的那种信息。
  • 使用你的方法,你最终会为每个产品(可能是大的)安排一个未来的计划事件,而每次你进行销售时,你都会放弃旧的计划事件而安排一个新的计划事件。因此,对于频繁销售产品,你将做重复的工作,不断地把罐子踢得更远,而你可能永远不会做到这一点。

什么是好的设计将基于真实的场景。一般的情况考虑起来很有趣,但是好的设计需要根据他们的情况来塑造。

以下是我的一些想法,它们可能是合适的:

  • 如果您想要在该产品有销售时更新每个产品的预测,但某些产品可能会非常频繁地销售,那么一个好方法可能是在每个产品的基础上限制或缓冲销售。如果一个产品每秒销售50次,你可能可以等待1秒、10秒、2小时,然后一次评估所有这些销售,而不是每秒重新预测50次。特别是如果你的预测过程很繁重,为每一次销售做预测可能会导致高负载而不是低价值,因为到下一次销售时,这些信息几乎马上就会过时。
  • 你也可以有一个通用的计时器来更新所有在上一个窗口没有销售的产品的预测,但在缓冲区中处理这些产品。例如,每小时您可以选择预测最旧的10种产品并对其进行更新。这防止了单个计时器一次性重新预测整个产品集。
  • 如果您想要非常简单的东西,可以只使用上面的单个计时器方法,忘记每次销售的预测更新。
  • 如果您担心批量预测的负载,这种工作应该在不同于处理销售的硬件上完成。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32826445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档