gpt4 book ai didi

node.js - 基于Node.js的跟踪应用架构咨询

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:56 24 4
gpt4 key购买 nike

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

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

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

enter image description here

最佳答案

您正在尝试设计经典的分析应用程序,该应用程序汇集来自不同来源的数据并显示对此数据的一些分析,例如 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、WebSocket 或基于它们的协议(protocol)相比,Http 协议(protocol)有更多的开销,但它不需要额外的安全配置,易于使用和扩展。 WebSocket 需要始终保持 TCP 连接,并且更难扩展。您可以找到许多关于比较这些协议(protocol)的帖子,例如 here

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

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

关于node.js - 基于Node.js的跟踪应用架构咨询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45782575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com