写点什么

5.4 消息队列:如何避免系统故障传递?

用户头像
张荣召
关注
发布于: 2020 年 10 月 25 日

1.同步调用 VS 异步调用

1.1 同步调用: 

sendEmail 被阻塞,同步等待。


1.2 多个耗时操作的异步调用:

1.3 异步调用:


          优点:sendEmail 不在被阻塞,立即返回。

          缺点:sendEmail 无法知晓发送结果:成功,失败。

2.消息队列构建异步调用架构

2.1 点对点模型:

消息生产一次,消费一次

2.2 发布订阅模型:

消息生产一次,消费多次。


3.消息队列的好处

          1.实现异步处理,提升处理性能:加快写性能



        2. 更好的伸缩性:可单独对前端集群扩容,也可以单独对后端消费者扩容,增加服务器,不需要对系统做任何调整

  3.削峰填谷



4.失败隔离和自我修复:

   发布者不直接依赖消费者,所以消息系统可以将消费者系统错误与生产者系统组件隔离。

   生产者和消费者互相不受对方失败影响。

   这意味着任何时刻,我们都可以对后端服务器执行维护和发布操作。我们可以重启,添加或者删除服务器而不影响生产者可用性,这样简化了部署和服务器管理的难度。

5.解耦:



4.事件驱动架构 EDA


业务扩展:添加新的消费者,订阅消息队列,其他消费者不要任何改动。

对比:非 EDA,同步调用操作:前面出现异常,后面无法处理。

  • 主要 MQ 产品比较

      1.RabbitMQ----Erlang---(49M)

      2.ActiveMQ-----Java----(27M)

      3.RocketMQ-----Java--(35M)

      4.Kafka----------Scala---(63M)

      选择核心要点:出现问题,很快能找到解决方案。

      选择要素:资料多,社区活跃,信息多,未来更有前景

      简单暴力方法:baidu,google 搜索结果对比。


用户头像

张荣召

关注

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
5.4消息队列:如何避免系统故障传递?