我需要构建一个简单的分析后端来捕获用户行为。这将通过网页上的Javascript代码段捕获,就像Google Analytics或Mixpanel数据一样。
系统需要捕获接近实时的浏览器数据(滚动页面位置,鼠标位置等)。它将每5秒记录一次用户页面的状态。每次测量只有三个属性,但必须经常进行。
数据不一定需要每5秒发送一次,它可能不那么频繁地汇总,但是当用户在页面上时我必须获得所有数据。即我不能每分钟一次公共汽车,并且在119秒后离开的人丢失了最后59秒的数据。
如果可能的话,我想构建一个在可预见的未来扩展的系统,这意味着它可以为10,000个站点工作,每个站点有100个并发访问者,即100,000个并发用户,每个用户每5秒发送一个事件。
我并不担心查询数据,可以使用单独的系统来完成。我最感兴趣的是如何处理数据本身的捕获。
根据上述预算,系统需要处理来自100,000个用户的每秒20,000个事件。
我想在Heroku上托管这项服务,但是当我使用Rails做了很多工作时,我对高吞吐量系统完全陌生(除了知道你不使用Rails处理它们)。 / p>
答案 0 :(得分:9)
我对您的高级评论是按照12 factor设计构建您的系统,然后担心随着客户的到来进行扩展。我对Node.js和npm生态系统感到非常兴奋,但我也认为你可以用Rails构建一个完全可以接受的平台。如果使用3个dynos来支持100个并发用户并使用Rails加倍,那么使用Rails可能会更好,如果你对Ruby的安慰让你上市3个月更快。无论如何,假设你使用Node,这是我的答案:
答案 1 :(得分:3)
我想提到的一些附加点是使用CDN来分发JavaScript客户端,或者更好的是,提供从页面提供的完整JS。无论哪种方式,加载速度和异步加载。这听起来像一个有趣的项目。祝好运!
编辑在备用Universe中,您不必使用heroku,websockets将是一个非常棒的解决方案。