zoukankan      html  css  js  c++  java
  • C/S模式,发布/订阅模式和PUSH/PULL模式(上)

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

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

    发布/订阅模式(Publish/Subscribe)

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

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

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

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

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

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

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

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

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

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

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

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

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

    总结发布/订阅模式:

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

    发布订阅模式的意义:

    1. 降低系统耦合性。

    2. 提供系统稳定性。

    3. 系统更加灵活

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

       ...

    本节就先分析到这来了!

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

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

  • 相关阅读:
    提高ASP.NET效率的几个方面
    危险字符过滤的类
    通过HttpModule实现数据库防注入
    字符串(含有汉字)转化为16进制编码进制
    C# 中的类型转换
    防范SQL注入攻击的代码
    微软笔试小感
    Debug和Trace配置小记
    C#动态地调用Win32 DLL中导出的函数
    Debug和Trace使用小记
  • 原文地址:https://www.cnblogs.com/chaogege1/p/9688856.html
Copyright © 2011-2022 走看看