知识卡片
黑板模式的拉模式与推模式两种实现及其与消息队列的等价性
内容
黑板模式是观察者模式的扩展,意图是”允许多个读写者同时存在,生产者和消费者完全 分开”,像黑板任何人能写任何人能读,互不阻塞。两种实现:用数据库当黑板——消费者主动 查询,称”拉模式”,高频访问下数据库成瓶颈;用消息队列当黑板——订阅发布主动推送,称 “推模式”。发散:这也是黑板模式知名度不高的原因——消息队列已成事实标准,黑板模式描述 的正是其设计意图,只是名字被淡忘。
参考来源
- 位置:《设计模式之禅(第2版)》第38章《新模式》38.4节(源文件:_epub-src/text/part0164.html)
- 结论依据:原文给出黑板模式定义"允许消息的读写同时进行,广泛地交互消息",并列出两种实现:"数据库作为黑板……该方式在技术上容易实现……该模式下,消息的读取是通过消费者主动'拉取',因此该模式也叫做'拉模式'……消息队列作为黑板……在该模式下,消费者接收到的消息是被主动推送过来的,因此该模式也称为'推模式'……这也是黑板模式被淡忘的一个重要原因:消息队列(Message Queue)已经非常普及了"。
- 原始内容:黑板模式允许多个消息读写者同时存在,消息的生产者和消费者完全分开……数据库作为黑板……该模式下,消息的读取是通过消费者主动"拉取",因此该模式也叫做"拉模式"……消息队列作为黑板……消费者接收到的消息是被主动推送过来的,因此该模式也称为"推模式"……这也是黑板模式被淡忘的一个重要原因:消息队列(Message Queue)已经非常普及了。