rabbitmqnotifications设计模式可扩展到数千用户



我们的网站有大约50000名用户,日活跃流量相当不错。我们正在为我们的用户群设计一个新的通知功能。

我们的要求如下:

  1. 用户属于不同的组
  2. 一个用户可以是多个组的一部分
  3. 当用户在一个组中上传图像时,该特定组的所有成员都应该收到一个通知,说"上传了新图像",无论是在线还是离线

我们考虑为每个组创建rabbitmqexchange,并为每个用户创建队列。但在设计正确的方式时感到困惑!!

比如说,即使用户在生成通知几天后登录到网站,也应该收到通知。我们最终将消息存储在DB中,这对离线用户来说根本不是一件好事。

有人能为这个用例提供合适的设计模式和解释吗?我们用的是芹菜+拉比q+龙卷风。龙卷风应该直接和芹菜消费者说话吗?当用户脱机时,消息存储在哪里?

我有类似的项目。那么它是如何工作的:

  • 将消息从事件源(django、芹菜、各处)放入兔子队列
  • 您可以使用pika+toronto IOLoop(因此,当消息到达toronto时,您将通过pika loop收到通知,当请求到达http时,或通过tornado连接websocket)
  • 使用在TornaodApplication websockets中打开的集合为用户发送消息

您可以在我的github上通过torando+rabbitmq:https://github.com/rmuslimov/RapidLog

最新更新