SO中文参考
首页
(current)
程序语言
c
java
python
c++
go
javascript
swift
c#
操作系统
linux
ubuntu
centos
unix
数据库
oracle
mysql
mongodb
postgresql
框架
node.js
angular
react-native
avalon
django
twisted
hadoop
.net
移动开发
android
ios
搜索
分布式系统消息传递中发布者/订阅者和生产者/消费者之间的区别?
问题描述
投票:0
回答:1
发布者/订阅者和生产者/消费者模型有什么区别?
我经常听到人们互换使用“发布者”和“制作者”这两个术语,但我认为它们并不相同。
rabbitmq
distributed-computing
messaging
distributed-system
messagebroker
1个回答
0
投票
发布者/订阅者(Pub/Sub)
特点:
解耦:
Pub/Sub 比生产者/消费者更加解耦。发布者和订阅者不需要互相了解。
一对多:
一条消息可以被多个订阅者接收。
基于主题的过滤:
消息通常按主题分类。订阅者可以订阅一个或多个主题。
异步:
一般异步操作。
无状态:
通常,Pub/Sub 是无状态的,这意味着每条消息都是独立的。
用例:
实时分析
监控系统
类似广播的用例(例如新闻源)
生产者/消费者
特点:
耦合:
通常耦合更紧密,因为消费者经常从生产者放置消息的特定队列中提取消息。
一对一或一对少:
通常一条消息由一个消费者处理,尽管存在差异。
基于队列的过滤:
通常采用队列来存储消息,消息按照到达的顺序进行处理。
同步或异步:
可以同步和异步操作。
状态:
可以维护状态,特别是在消息顺序很重要的情况下。
用例:
任务队列
点对点消息系统
工作流程系统
总结
耦合:
Pub/Sub 通常更加解耦。
消息传递:
在 Pub/Sub 中,一条消息可以发送给多个订阅者。在生产者/消费者中,通常一条消息发送给一个消费者。
过滤:
Pub/Sub 使用主题进行过滤,而 Producer/Consumer 一般使用队列。
异步性:
两者都可以异步,但生产者/消费者也可以同步工作。
状态:
Pub/Sub 通常是无状态的,而生产者/消费者可以根据需要维护状态。
最新问题
浏览器在发送请求进行身份验证时不保存 cookie
如何在 ModalBottomSheet 中制作一个静态位置的按钮?
如何使用C#在AWS Lambda和API Gateway上部署Prince 13.5?
Power BI - 未来日期的余额
从 pdf 转换时如何获得更好的图像质量?
在 Python 中使用 pynput 的线程和热键问题(无限循环和响应性)
为什么此请求在 Insomnia/Postman 中有效,但在 Python 请求中无效?
无法使用 pip install pytorch-pretrained-bert
C++ 初始化具有 unique_ptr 的 std::vector
使用变量地址读取另一个进程的内存
阻止 Laravel 中未付费用户访问视频
nuxt 组件仅在生产中渲染两次
System.Reflection.TargetInvocationException:配置 AutoMapper 配置文件时,“表达式 'dest => dest' 必须解析为顶级成员”
MAUI 轮播无法实时更改项目、空白幻灯片、iOS 底部的灰色条
防止 API Gateway 接收对 robots.txt 文件的请求
该功能仅适用于包含打印语句的情况
如何在 Swift 中启用 URLSession.shared.data 中的 JavaScript
迁移到 Kotlin 2.0 导致 KSP 出现错误
绘制带有圆角的 SVG 多边形的架构,它可以缩放到不同的尺寸,但保持相同的圆角?
禁用在标题区域上滚动
© www.soinside.com 2019 - 2024. All rights reserved.