跟踪基于Node.js的应用程序体系结构的咨询

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

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

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

在这里输入图像描述

您正试图devise经典的分析应用程序来汇集来自不同来源的数据,并显示有关Google Analytics(分析)等数据的一些分析。

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或协议相比,Http协议有更多的开销,但不需要额外的安全configuration,易于使用和扩展。 WebSocket需要始终保持TCP连接,并且难以扩展。 你可以在这里find很多关于比较这些协议的文章。

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

我build议你也看看CQRS方法 ,为了实现写(日志事件)和读(检索事件或某些分析)操作的良好性能,存储数据(事件)和检索(查询)是分开的。 显然你可能需要使用一些数据库来做分析,比如Mondo DB,Redis等等。