欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C/S模式,发布/订阅模式和PUSH/PULL模式(上)

程序员文章站 2023-03-26 11:31:21
CS模式(客户端/服务器模式) 最场景的信息传递模式,也称为Request/Response模式,或者调用模式。http/https协议即此模式。因为最常用所以大家一般都比较熟悉,这里不重点讲了,大家请看图下图: 发布/订阅模式(Publish/Subscribe) 发布订阅模式相对于BS模式稍微难 ......

cs模式(客户端/服务器模式)

最场景的信息传递模式,也称为request/response模式,或者调用模式。http/https协议即此模式。因为最常用所以大家一般都比较熟悉,这里不重点讲了,大家请看图下图:

C/S模式,发布/订阅模式和PUSH/PULL模式(上)

 

发布/订阅模式(publish/subscribe)

发布订阅模式相对于bs模式稍微难点,我们不妨先看一个生活中的小例子:

C/S模式,发布/订阅模式和PUSH/PULL模式(上)

如果没有邮局会怎么样?毫无疑问出版社既要发行杂志又要把杂志投递给用户,不仅累而且极其低效!因为大部分时间都将耽误在投递上,发行杂志的事情还有肯能被耽误!此例子可以理解为生活中的"发布订阅模式"

 

理解完生活中的事例,我们再来看发布订阅模式在软件开发中的重要作用!我们先看下图:

C/S模式,发布/订阅模式和PUSH/PULL模式(上)

这是一个新闻入库程序的实现的流程,我们来看看此流程有什么问题:

  1. 逻辑会越来越复杂:不停将新功能追加后面必然导致程序越来越复杂。

  2. 非异步流程:程序是串行执行的,只有确认推送成功后才会走到写入elasticsearch流程。意味着可能有进程等待,程序执行过程将会较长,甚至会超时。

  3. 不稳定:只要中间任何一个流程挂掉了,整个程序就挂了,无法走到后面的流程。

 

再看采用发布订阅模式处理流程:

C/S模式,发布/订阅模式和PUSH/PULL模式(上)

可以看到新闻入库过程被简化了,只有新闻写入数据库和发布到kafka两个过程。其他的处理程序采用订阅kafka中的新闻消息来实现了各自功能,我们再来看看这样处理有什么好处:

  1. 新闻入库简化且几乎不再变更。

  2. 处理流程是异步的:新闻发布到kafka后就可以给用户返回新闻入库成功,用户体验好!后面的事情其他程序会异步去完成。

  3. 一个程序被拆分成多个程序,每个程序都不算复杂。

  4. 即使有一个程序(例如推送程序)挂掉了,其他程序依然可以稳定运行。

 

总结发布/订阅模式:

C/S模式,发布/订阅模式和PUSH/PULL模式(上)

我们可以看到发布订阅模式有3个角色,分别是一个生产者,一个消息管理器,多个消费者,生产者将消息发布到消息管理器,而多个消息消费者则会订阅消息管理器中消费者发布的内容。这便是发布订阅模式的基本组成。

 

发布订阅模式的意义:

  1. 降低系统耦合性。

  2. 提供系统稳定性。

  3. 系统更加灵活

  4. 降低每个程序的复杂度

   ...

 

本节就先分析到这来了!

仁者见仁智者见智,欢迎大家评论指正!

 

分享或关注公众号的帅哥会越来越帅!美女会越来越美!

 

C/S模式,发布/订阅模式和PUSH/PULL模式(上)