簡體   English   中英

反應系統-對時間流逝做出反應

[英]Reactive systems - Reacting to time passing

假設我們有一個被動的銷售預測系統。

每次進行銷售時,我們都會重新計算對未來銷售的預測。 如果有很多銷售觸發我們的重新預測,則此方法效果很好。 但是,如果銷售從每秒100個事件變為0,然后保持0長時間,會發生什么呢? 我們在銷售情況良好時發布的預測是最新的預測。

在這種情況下,您如何建模一個表示“沒有銷售發生”的事件,而又不回溯到每小時/分鍾/任意時間段的批處理事件,即“ X時間已經過去”。

這是一個通用問題的特例-如何在基於事件的系統中不進行任何事情的情況下模擬時間的流逝-不使用滴答時鍾樣式的事件,而這會喚醒每個人重新考慮其當前值[無法縮放的實現] 。

我認為唯一可行的選擇是:每次進行銷售時,我們還將在未來2小時安排一次延期的活動,要求我們重新考慮對該銷售的評估。 在處理該延遲事件時,我們可以選擇安排其他延遲事件進行重新考慮。

考慮到這是一個非常普通的場景,您已經做出了一個相當大的假設,即除非一次完成一項銷售,否則不可能提出一種以可擴展的方式重新評估過去銷售的設計。

該方案中有許多與規模相關的數字,而您只是在看一個預測的更新程序可能試圖同時處理大量過去銷售的數字。

我能想到的其他可伸縮性問題:

  • 如果您期望每秒100筆的銷售量,那么重新評估每筆新銷售的預測聽起來並不好。 如果您要談論的是會計的財務預測模型,則如果組織每秒要進行數百次銷售,則不太可能需要在組織每次銷售時進行更新。

  • 如果您正在談論用於金融市場的短期預測引擎(即預測未來10秒鍾將需要多少現金,能源或其他資源),那么聽起來好像您一直處於波動狀態,您實際上不太可能會在數小時內什么都沒有發生。 而且,如果您確實需要非常頻繁地更新預測,則在觸發重新更新之前等待幾個小時不太可能以所需的方式為您提供所需的信息。

  • 使用您的方法,您最終將為每種產品安排一個將來的預定事件(可能很大),並且每次進行銷售時,您都將放棄舊的預定事件並計划一個新的預定事件。 因此,對於經常銷售的產品,當您不太可能到達那里時,您將進行重復的工作,以不斷地推動罐子前進。

構成良好設計的要素將基於實際情況。 考慮這種通用情況很有趣,但是好的設計需要根據其情況而定。

以下是一些適合我的想法:

  • 如果您希望在某個產品有銷售時對每個產品進行更新的預測,但是某些產品可以非常頻繁地銷售,那么一個好的方法可能是基於每個產品來限制或緩沖銷售。 如果某產品每秒賣出50次,您可能可以承受1秒,10秒,2個小時的等待時間,然后立即評估所有這些銷售額,而不是每秒預測50次。 尤其是在您的預測過程繁重的情況下,每次銷售都可能造成高負荷,低價值,因為下一次銷售幾乎立刻就已經過時了。

  • 您還可以使用通用計時器,該計時器可以更新最后一個窗口中未售出的所有產品的預測,但可以在緩沖區中處理產品。 例如,您每小時可以選擇具有最舊預測的10種產品並進行更新。 這樣可以防止單個計時器一次預測整個產品集。

  • 如果您想要簡單的操作,則可以僅使用上述單個計時器方法,而忘記每次銷售的預測更新。

  • 如果您擔心批量預測產生的負載,則應該在與銷售硬件不同的硬件上進行此類工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM