2

我正计划为我的网站创建一个实时分析页面——有点像谷歌分析,但真实的实时数据会随着新用户在我的网站上加载页面等而改变。

主站点是/将使用 Asp.Net/C# 作为后端和 MS SQL 数据库编写,前端将支持JavaScript (JQuery)、CSS3HTML5(如果需要)等内容。

我想知道我可以使用哪些方法来进行实时分析;如何将数据放到分析页面上,我可以使用什么高效的图形,以及使用快速输入/输出存储数据。

我首先想到的是使用Node.js——我可以用它来实现实时分析页面吗?是个好主意吗?有没有更好的选择?这有什么缺点吗?

我是否需要在服务器上运行C#应用程序才能使用 Node.js 向网站发送/接收所有数据?

使用MS SQL数据库是否足够快?我是否需要实时存储所有数据,还是可以每 x 秒/分钟将其存储为块?(哪个更有效率?)

这说明了我对此事的初步想法—— Live Analytic 的流程图

编辑:

我将在多个站点上使用这个系统,我一次可能会获得 10 次点击,达到大约 1,000,000 次(极不可能,但仍有可能)。我希望能够扩展这个系统并使其适应它所处的环境。

4

2 回答 2

4

这实际上取决于实时数据需要有多“实时”。例如,我最近做了这个:

http://www.reed.co.uk/labs/realtime/

其中显示了进入系统的工作申请。很明显,在繁忙时期有太多事情要实时查询主数据库——所以,我们要做的是查询一个滑动的“窗口”并将其缓存在服务器上——这是最后 5 分钟的一部分事件。

然后,我们将其回放给用户,就像它正在“现在”发生一样。作为 SLA 的一部分(用户并不真正关心)有一点延迟可以使整个系统的可扩展性大大提高。

[编辑-进一步解释]

数据只是从一个基本的存储过程调用中检索出来的——自然,像里德这样的大系统每秒有数百个事务——所以我们不能一直为每个用户访问主集群。

我们所做的就是确保我们有一个当前窗口,在本例中是缓存在服务器上的最后 5 分钟的数据。当客户端访问该站点时,我们会获取最后 5 分钟的数据,并像现在发生的那样播放它——最终用户并不聪明——但这意味着所有客户端都在读取缓存。缓存 5 分钟后,我们将其无效,然后重新开始。这意味着每五分钟最多 1 个 DB 命中 - 从而使系统的可扩展性大大提高(并不是它真的需要 - 因为它只是为了好玩,真的)

于 2012-07-09T13:55:34.943 回答
0

只是为了让您知道谷歌分析已经提供实时用户跟踪。在谷歌分析网站的仪表板内时。单击顶部栏上的主页按钮,然后单击左侧栏上的实时按钮。考虑到这项服务的设计工作和质量,这似乎是一个比尝试重新创建其服务更好的选择。如果您确实选择继续创建自己的,那么您至少可以使用他们的服务作为所需功能的基准。

使用像谷歌图表 API https://developers.google.com/chart/这样的 Api将是显示存储数据输出的好方法,同时减少了开发时间。如果您提供有关您预期的点击次数以及该软件将托管的服务器规模的更多信息,那么您将更容易回答速度问题。

于 2012-07-09T13:55:03.180 回答