使用 Kafka 和 NodeJS 进行实时通知

2024-03-16

在我的项目中,我必须设计一个实时通知系统。我就是这样做的,如下图所示。

你可以看到我使用 Kafka 作为队列消息系统,并使用 NodeJS 来构建 Websocket Server 和 Kafka Consumers。 生产者将收集通知数据并将其推送到 Kafka。消费者将从 Kafka 读取并处理数据,如果该数据属于该用户,则通过 websocket 将其推送到客户端。

通过上面的架构师,每个在线用户都会打开一个Websocket连接并创建一个新的Consumer。这意味着如果有10万用户在线,我们就必须有10万消费者。

所以我的问题是上面的设计对于实时通知系统来说是正确的设计吗?你有什么不同的想法吗?如果我有 100K Consumer 有什么问题吗?

EDITED

它不应该打开太多的消费者。它能够与消费者和网络套接字一起工作


您的设计是正确的,如果您想始终与每个客户保持联系,那么您必须保持相同数量的client-websocket因为有很多客户;但消费者不必根据连接的客户端而增加;因为它们可以在不同的人之间共享client-websockets.

这取决于您的应用程序以及您想要处理它的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Kafka 和 NodeJS 进行实时通知 的相关文章

随机推荐

  • 合并删除远程分支列表下的分支后仍然看到Git Branch

    我正在开发一个自动化套件 我在其中创建了两个分支 p2pOnOff 和 release 分支 后来我将它们合并到 master 并使用以下命令删除它们 git branch d p2pOnOff git push origin p2pOnO
  • 删除元组列表中包含 nan 的元组 - Python

    我有一个很长的元组列表 想要使用 Python 删除其中包含 nan 的任何元组 我目前拥有的 x 录音开始 0 nan 4 nan 7 事件标记1 150 我正在寻找的结果 x 录音开始 0 事件标记1 150 我尝试过使用 np isn
  • 将 fb-contrib 库与 Gradle 的 FindBugs 插件结合使用

    是否可以整合Facebook 贡献 http fb contrib sourceforge net 带有 Gradle 的库FindBugs 插件 http www gradle org docs current userguide fin
  • 在Java中,为什么Stack是一个具体类,而Queue是一个接口?

    Queue 的哪一个子类是 普通 队列 1 java util Stack 是 Java 1 0 的遗留类 它早于 Collections 框架很多年 坦率地说 它是一个例子horrible多方面的设计 一切都不是事情应有的样子 主要问题是
  • 为什么 numpy.var 是 O(N) 空间?

    我有一个 13GB 的数组 我打电话numpy var对其进行计算方差 然而 它又分配了约 13GB 来执行此操作 为什么需要 O N 空间 或者我打电话numpy var以错误的方式 import numpy as np data pri
  • 打印一个文件中与另一文件中的模式匹配的行

    我有一个超过 40 000 行的文件 file1 我想提取与 file2 中的模式匹配的行 大约 6000 行 我像这样使用 grep 但它很慢 grep f file2 file1 gt out 有没有更快的方法来使用awk or sed
  • 通过线性布局以编程方式设置两个按钮之间的边距

    我如何以编程方式在按钮 regler 和 decommender 之间设置 20dp 的边距 这是我的工作 LinearLayout lytmain new LinearLayout Mcontex lytmain setOrientati
  • 如何传递特征矩阵行引用以将其视为向量?

    我有一个对向量引用进行操作的函数 例如 void auto bias const Eigen VectorXf v Eigen Ref
  • Vim:打开文件后读取模型行?

    我从事各种项目 其中许多项目设置了特定于文件的 vim 设置 我被要求不要在 vimrc 中设置模型行 加载文件后有没有办法加载模型设置 所以如果我用 vim 打开 tmp c int main int argc char argv ret
  • 工具提示气球显示位置(用于错误通知)

    不久前我问了一个与此密切相关的问题 通知用户错误的替代方法 https stackoverflow com questions 2878043 alternative way to notify the user of an error 简
  • ASP.NET MVC 显示成功消息

    这是我从应用程序中删除记录的示例方法 Authorize Roles news admin public ActionResult Delete int id var ArticleToDelete from a in db Article
  • PyQt - 如何打开目录文件夹?

    我搜索了很多 我知道如何打开目录对话框窗口 但我正在寻找的是在Windows操作系统下打开目录文件夹的方法 就像右键单击本地文件夹之一并选择打开一样 有什么建议么 对于 python 3 7 你可以这样做 os startfile path
  • 在c中实现时间延迟

    我不知道如何准确地描述这个搜索 所以我没有运气找到任何东西 S 我需要在 C 中实现时间延迟 例如我想做一些事情 然后等一分钟 然后继续做事情 这有道理吗 谁能帮我吗 在标准 C C99 中 您可以使用time 为此 请执行以下操作 inc
  • 将内存中的图像转换为 Blob [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我内存中有一个图像 类型 java awt Image 我想使用jdk 1 7将其转换为Blob 类型 java sql Blob 我能找
  • 为什么Python的导入不能像C的#include那样工作?

    我实际上已经尝试理解 Python 导入大约一年了 我几乎放弃了 Python 编程 因为它看起来太混乱了 我有 C 语言背景 我认为import工作就像 include 但是如果我尝试导入某些内容 我总是会遇到错误 如果我有两个这样的文件
  • 在 RMI 期间知道端口号

    有没有办法在RMI过程中同时知道客户端和服务器的端口号 当在 RMI 过程中向客户端返回结果时 客户端下次请求该结果时 客户端和服务器之间的对话是否会在与上次相同的端口上 当服务器自第一个结果返回后一直在运行时或新的端口已创建 例如 cal
  • 动态传递参数

    我正在尝试使用 ExtJS 4 将图像从数据库检索到数据视图 现在我需要动态传递参数 主要是这里 Ext define pkgName v02x003001 SV02X00300102 extend Ext view View alias
  • 下载 Excel 文件时帧加载中断

    我有一个 Angular 脚本 它会访问我的服务器并获取一些数据 该调用如下所示 http post url success function response Do some work Go to the link that the se
  • Jquery上下移动行

    我使用了给出的代码here https stackoverflow com questions 1569889 jquery move table row使用 jquery 在 gridview 中向上 向下移动行 这工作得很好 但是如何实
  • 使用 Kafka 和 NodeJS 进行实时通知

    在我的项目中 我必须设计一个实时通知系统 我就是这样做的 如下图所示 你可以看到我使用 Kafka 作为队列消息系统 并使用 NodeJS 来构建 Websocket Server 和 Kafka Consumers 生产者将收集通知数据并