将收到的实时推送数据推送给 10,000 个用户?

发布于 2024-11-06 09:02:37 字数 569 浏览 5 评论 0原文

我正在寻求有关我正在开发的一个需要低延迟和高并发的新项目的指导。该项目涉及从第三方源接收实时数据,并经过一些基本处理和存储后,将这些值发送给网站上当前活跃的所有用户。

数据通过 HTTP 推送到达,我当前的计划是使用 Node.js 接收该数据,然后通过算法运行数据,然后更新某种数据库中的相关数据。最后,更新通过 websocket 发送给网站的所有连接用户。

现在,我试图让这种可扩展性能够同时处理超过 10,000 个连接的用户,所有用户都通过 websocket 连接并大约每 3 秒发送一次更新。鉴于每个用户都可以在此期间与 Web 应用程序进行交互,这将导致许多来回请求。

现在,除了我拥有的高级基本想法之外,决定使用 Ruby on Rails 作为网站框架并使用 Node js 来处理这一切的“活跃性” - 我有点陷入困境。我不知道要使用哪种数据库(我想它将是一个用于快速存储的非关系数据库),并且我不知道如何构建这样的设置的具体细节,以及如何实现逻辑。

所以我的问题是:鉴于我的目标,我如何构建这样一个应用程序以及我需要知道什么才能使其可扩展并实时达到我想要的水平?

非常感谢寻求任何帮助。

I'm after some guidance on a new project I'm working on that requires low latency and high concurrency. The project involves receiving live data from a third party feed and after some basic processing and storage, sending these values to all users currently active on the website.

The data arrives via HTTP Push and my current plan is to use Node.js to receive this data, which then runs the data through an algorithm before updating related data in a database of some kind. Finally, updates are sent to all connected users of the website via a websocket.

Now, I'm trying to have this scalable to handle over 10,000 connected users at once, all connected via websocket and sent updates approximately once every 3 seconds. Given that each user can then interact with the web app during this, it's to result in many requests back and forth.

Now, apart from the high level basic idea I have, with the decision to have Ruby on Rails as the website framework and node js to handle the 'liveness' of it all - I'm a little stuck. I don't know what kind of database to use (I imagine it'll be a non relational database for quick storage) and I don't know the specifics of how to architect such a set up, along with how to implement the logic.

So my question is: Given my goal, how do I go about structuring such an application and what do I need to know in order to have it scalable and real-time to the level I desire?

Thanks greatly for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

软糯酥胸 2024-11-13 09:02:37

我会推荐一些图书馆来看看。

  • 现在远程 RPC 变得微不足道。
  • cradle 用于持久存储的 couchdb 数据库抽象。
  • 'node_redis' 用于跨机器通信的 redis 数据库抽象
  • cluster 将您的程序扩展到多个进程。

I would recommend a few libraries to look at.

  • now remote RPC made trivial.
  • cradle couchdb database abstraction for persistant storage.
  • 'node_redis' redis database abstraction for cross machine communication
  • cluster extend your program across multiple processes.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文