在Node.js中创建正常运行时监视器的体系结构

时间:2011-06-19 19:30:18

标签: mongodb node.js redis uptime pingdom

使用Node.js和Redis创建正常运行时间监控系统的最佳解决方案是什么?我可以将Redis用作队列,但不是保存信息的最佳方式,也许是MongoDB?

看起来非常简单,但需要有超过1台服务器来保证服务器停机并使所有内容协同工作并不容易。

2 个答案:

答案 0 :(得分:1)

要监控正常运行时间,您可以在系统上使用Cron作业。每次通话时,您都会检查主机是否已启动,以及需要多长时间。在该脚本中,您可以将数据保存在Redis中。

要在Node.JS中执行此操作,您将创建一个检查服务器状态的脚本。只是向服务器发出HTTP请求(或者Ping,w.e。)并记录它是否失败。然后我会把它记录到Redis。你怎么做并不重要,因为脚本(如果你每隔30秒运行一次cron)在下一次运行之前[30]秒,所以你不必担心将查询发送到服务器。您如何保存数据取决于您,但在这种情况下,即使MySQL也能正常工作(如果您只进行少量网站)

More on Cron @ Wikipedia

答案 1 :(得分:1)

  

我可以将Redis用作队列但不是   保存信息的最佳方式,   也许MongoDB是?

你可以(应该)使用Redis作为你的队列。它会非常快。

我还认为将信息保存在Redis中是非常好的选择。不幸的是,Redis没有做任何时间安排。我认为您可以/应该使用Beanstalkd将消息放在需要时(每隔x秒)传递的队列中。我也认为cron不是一个非常好的主意,因为你需要很多它们,并且在使用队列时你也可以更快地完成工作(在多个进程之间共享负载)。

此外,我认为您不需要那么多内存来保存内存中的所有内容(使网站快速),因为数据集将相对简单。即使你不能(聪明地获得更多内存,如果你问我)将整个数据集整合到内存中,你也可以依赖Redis's virtual memory

  

看起来很简单,但需要   有超过1台服务器来保证   服务器已关闭并完成所有操作   一起工作并不容易。

我认为你应该阅读分片/复制来解决这个问题(很难)。幸运的是,Redis支持复制(也可以实现分片)。 MongoDB支持开箱即用的分片/复制。说实话,我认为你还不需要分片,你的数据集非常简单,所以Redis会更快: