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

用户头像
orchid9
关注
发布于: 2020 年 10 月 26 日

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 搜索结果对比。



用户头像

orchid9

关注

还未添加个人签名 2018.08.21 加入

还未添加个人简介

评论

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