2017-06-20 41 views
0

我正在構建基本股票觀察器應用程序 - 讓我們打電話給當前正在觀看的股票N。當股票移動X%時,觸發通知/事件。 X是以每個用戶爲基礎定義的。JS根據用戶設置發送通知

服務器持有股票的當前價格,旁邊的用戶最近一次已知的價格(最後警告每個用戶收到)

什麼是建築師的最佳方式?我不想通過任何價格變動來檢查每個用戶,以檢查他們的集合移動比例是否已達到,因爲這顯然是一個巨大的性能問題。

資源和進一步研究的鏈接將不勝感激。

我正在用Javascript構建它(nodeJS是精確的),但我更關注構建這個代碼的概念,而不是直接代碼示例。

謝謝!

回答

0

您可以爲每個股票提供一個觀察者列表,該列表將是觀看該股票的用戶列表以及他們的通知觸發價格。如果您保持列表按觸發價格排序,那麼您可以輕鬆地從列表的一端進行遍歷,以收集現在應該通知的用戶的確切列表。在爲該用戶啓動通知後,您將決定是否爲該用戶設置新的觸發價格,或者從通知已發送後將其從列表中刪除。

這種類型的方案具有以下優點:

  1. 找出哪些用戶給定的價格變動,以新的價格後,被通知是簡單,快捷。
  2. 這與用戶總數沒有任何關係,因此可以擴展到大量用戶。
  3. 對於給定的股票,您只需處理觀看特定股票的用戶 - 而不是整個用戶羣。
  4. 添加用戶通知只是列表中的排序插入(對觸發器價格進行二進制搜索並插入列表 - 已知插入算法)。

爲了使諸如從系統中刪除用戶更有效率,用戶對象可能還保留了該用戶正在監視的證券列表(以及他們的觸發價格),以便您可以訪問每個證券並從列表中刪除該用戶的手錶而無需搜索所有證券。因此,添加手錶會將一個項目添加到用戶對象列表中,並將用戶和觸發價格添加到特定於安全性的列表中。

+0

請耐心等待 - 我打算標記一個答案,但昨天晚上發生的事情阻止我立即檢查。 謝謝你的迴應。 – Life

0

數據庫中的用戶集合應該有一列來保存用戶的X百分比。假設... x_col

當您爲百分比更改設置偵聽器時,只需將用戶的x_col傳遞給條件。 (即,如果發生的變化是>= user.x_col將發出通知)。

上述用戶對象假設您正在爲當前登錄用戶使用全局。如果不是,您可以查詢集合中文件中x_col值的具體內容,該文檔中的信息與用於檢查登錄用戶的任何唯一信息相匹配。