硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5163|回复: 6
收起左侧

[其它] 大型软件架构设计——发布订阅模式

[复制链接]

19

主题

72

回帖

129

积分

初级会员

积分
129
发表于 2021-2-7 16:41:06 | 显示全部楼层 |阅读模式
发布订阅模式: 任务间不直接交互数据,所有数据经过消息转换中心(Message Broker)转发. 消息的核心是主题(topic).
主题(topic)链表:所有注册的主题形成一个链表;
订阅者(subscriber)链表:每个主题都有一个或者多个订阅者,这些订阅者形成一个链表。
消息发布(publisher):会向主题(topic)发送消息,
消息中心(message broker):订阅/发布/取消订阅的处理。


消息都是发布到消息中心,消息中心分发到各个订阅的任务或者线程,解耦各个任务。

缺点:内存消息会比一般系统大一点,由于使用了broker,实时性会收到一丁点影响,但对单片机大型软件来说,这是可接受的。


topic --
          | topic1 -- subscriber1
                       -- subscriber2

                       -- ...
          | topic2

          ...
          | topic n



回复

使用道具 举报

73

主题

1193

回帖

1412

积分

至尊会员

积分
1412
发表于 2021-2-7 17:28:10 | 显示全部楼层
有点简陋啊
回复

使用道具 举报

19

主题

72

回帖

129

积分

初级会员

积分
129
 楼主| 发表于 2021-2-8 12:54:06 | 显示全部楼层

确实写的有点简陋,我只是提一下这个软件架构,网上相关的分析也有很多。没有相关硬件,写出的代码也没法验证,所以我就只是提一下。
回复

使用道具 举报

6

主题

636

回帖

654

积分

金牌会员

积分
654
QQ
发表于 2021-2-8 17:32:40 | 显示全部楼层
血染风采2017 发表于 2021-2-8 12:54
确实写的有点简陋,我只是提一下这个软件架构,网上相关的分析也有很多。没有相关硬件,写出的代码也没法 ...

相关硬件,这种架构只能在特点硬件上跑?
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2021-2-8 20:53:48 | 显示全部楼层
这种一般都是用C++ 通过模板去做实现  做不同组件间消息的异步通信还是很好用的
回复

使用道具 举报

3

主题

22

回帖

31

积分

新手上路

积分
31
发表于 2021-2-9 10:34:45 | 显示全部楼层
这就是MQTT Broker的功能啊
回复

使用道具 举报

3

主题

22

回帖

31

积分

新手上路

积分
31
发表于 2021-5-6 14:38:34 | 显示全部楼层
linux D-bus 似乎和这个类似
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 10:02 , Processed in 0.217808 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表