【问题标题】:Consulting for tracking application architecture based on Node.js基于 Node.js 的应用架构跟踪咨询
【发布时间】:2018-01-28 16:05:40
【问题描述】:

我试图解决我关于基于 node.js 的应用程序架构的问题。我有一些想法,但我想知道你的想法。

好吧,我的应用程序将存储来自客户网站的活动, 将由客户定义的活动,例如。登录网站,点击产品,点击类别菜单等。这些事件将传递给我的应用程序,然后,我将活动显示到客户仪表板以进行分析或用于其他目的。

首先,我考虑通过 ajax 从网站向我的服务器发送请求,并在我的 node.js 服务器上解析数据后,通过 socket.io 将该数据发送到仪表板帐户。用户将在“飞行中”的仪表板上看到他网站上的每个事件。你觉得这个概念好吗?难道每个ajax请求都不会太贵吗?也许我应该考虑另一种方式将数据发送到我的服务器?

【问题讨论】:

    标签: node.js ajax architecture


    【解决方案1】:

    您正在尝试设计经典的分析应用程序,该应用程序可以收集来自不同来源的数据,并根据这些数据显示一些分析,例如 Google Analytic 等。

    Does every ajax request will not be too much costly? 
    Maybe I should think about another way to send data to my server?
    

    对于 Web 应用程序,这是从客户端向服务器发送数据的标准方式。当然,与 UDP、WebSockets 或基于它们的协议相比,Http 协议的开销更大,但它不需要额外的安全配置,易于使用和扩展。 WebSockets 需要始终保持 TCP 连接,并且难以扩展。你可以找到很多关于比较这些协议的帖子,比如here

    根据这个问题,您的应用程序将成为从网站到另一个网络应用程序的事件代理,在这些应用程序中以某种方式对其进行分析。每个事件都会有一些信息,如类型(登录、点击)、url、用户、日期等。它可以承受一些负载。显然,即使通过 WebSockets,您也会在浏览器端每秒接受超过 100 个事件(请求)时遇到问题。具有单线程执行模型的 JS 不太适合分析(过滤、计算、聚合)。我认为您不需要将事件按原样传递到仪表板,发送一些汇总数据(如新事件计数、事件直方图等)会更有用。因此,在这种情况下,您需要在后端(node.js 应用程序)执行分析。

    我建议您还查看CQRS approach,其中存储数据(事件)和它们的检索(查询)是分开的,以便为写入(日志事件)和读取(检索事件或某些分析)操作实现良好的性能.显然你可能需要使用一些数据库来做分析,比如 Mondo DB,也许是 Redis 等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      • 2011-09-09
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多