2017-06-20 59 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值的具体内容,该文档中的信息与用于检查登录用户的任何唯一信息相匹配。