【发布时间】:2013-11-25 11:07:16
【问题描述】:
我有一个由 postgres 数据库支持的网站。有多个网络服务器,它们维护与每个客户端的持久连接,并且需要通知它们相关事件。来自一个 Web 服务器的更改可能会影响连接到另一个 Web 服务器的用户,因此我需要一些 Web 服务器之间的消息传递层。理想情况下,我想为此使用数据库,以保持简单。
因此,我认为,两种明显的方法是:
1) 让网络服务器监听 所有 事件,并让网络服务器端过滤对其有用的事件(例如,与它当前连接的用户相关)。
或者:
2) 为每个连接的客户端动态创建一个监听器,并在客户端断开连接时移除该监听器。
第一种方式意味着很多无用的数据通过网络传输,但网络服务器很容易过滤(简单的哈希图查找)。第二种方式看起来很理想如果 postgres 以这样一种方式实现,我可以随时创建数千个(到数万个)听众。
顺便说一句,我正在使用最新版本的 postgres
想法?
非常感谢!
【问题讨论】:
-
判断 postgres 是否能够处理数千个
LISTEN/NOTIFY的最简单(也是最准确)的方法是设置一个模拟生产负载的简单测试。跨度> -
顺便说一句。您还可以设置一个服务器,它将
LISTEN并将事件转发给在其上注册的客户端(直接或间接通过网络服务器)。或者使用某种中间件消息代理。 -
3.有一个
active_listeners表并在发出通知之前检查它。 -
您的问题是关于在 PostgreSQL 中监听事件还是将事件传输到客户端?
-
两者都是。只想了解拥有数千个听众的性能特征
标签: node.js postgresql