前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之黑板模式

设计模式之黑板模式

作者头像
烟草的香味
发布2019-07-25 11:00:26
7020
发布2019-07-25 11:00:26
举报
文章被收录于专栏:烟草的香味烟草的香味

黑板模式的意图

黑板模式是观察者模式的一个扩展,知名度并不高,但使用的范围却非常广. 其意图为: 允许消息的读写同时进行, 广泛的交互消息.

简单的说, 黑板模式允许多个消息读写者同时存在, 消息的生产者和消费者完全分开. 这就像一个黑板, 任何一个老师(消息的生产者)都可以在上面书写消息, 任何一个学生(消息的消费者)都可以从黑板上读取消息, 两者在空间和时间上可以解耦, 互不干扰.

示意图如下:

黑板模式就是消息的广播,主要解决的问题是消息的生产者和消费者之间的耦合问题, 它的核心是消息存储(黑板), 它存储所有消息,并可以随时被读取. 当消息生产者将消息写入到消息仓库后,其他消费者就可以从仓库中读取. 当然,此时消息的写入这也可以变身为消息的消费者,读写者在时间上是解耦的. 对于这些消息, 消费者只需要关注特定消息, 不处理与自己不相关的消息, 这一点通常通过过滤器来实现.

黑板模式的实现方法

黑板模式一般不会对架构产生什么影响, 但它通常会要求有一个清晰的消息结构. 黑板模式一般都会提供一系列的过滤器,以便消息的消费者不再接触到与自己无关的消息.在实际开发中,黑板模式常见的有两种实现方式:

  1. 数据库作为黑板. 利用数据库充当黑板,生产者更新数据,不同的消费则共享数据库中的信息, 这是最常见的实现方式. 该方式在技术上容易实现, 开发量较少,熟悉度较高. 缺点是在大量消息和高频率访问的情况下, 性能会受到一定影响. 在该模式下, 消息的读取是通过消费者主动"拉取", 因此该模式也叫做"拉模式".
  2. 消息队列作为黑板. 以消息队列作为黑板, 通过订阅-发布模型即可实现黑板模式. 这也是黑板模式被淡忘的一个重要原因: 消息队列已经非常普及了. 在该模式下, 消费者接收到的消息是被主动推送过来的, 因此该模式也叫做"推模式".
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 烟草的香味 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 黑板模式的意图
  • 黑板模式的实现方法
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档