同步调用 VS 异步调用

截屏2020-07-04 下午7.14.53.png

截屏2020-07-04 下午7.19.14.png

截屏2020-07-04 下午7.19.44.png
截屏2020-07-04 下午7.24.51.png

截屏2020-07-04 下午7.25.22.png

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

截屏2020-07-04 下午7.25.52.png

  • 消息生产者
  • 消息队列
  • 消息消费者

截屏2020-07-04 下午7.26.48.png

截屏2020-07-04 下午7.27.07.png

消息队列的好处

  • 实现异步处理,提升处理性能。

截屏2020-07-04 下午7.29.18.png

  • 更好的伸缩性

截屏2020-07-04 下午7.30.18.png

  • 削峰填谷

截屏2020-07-04 下午7.46.02.png

  • 失败隔离和自我修复
    • 因为发布者不直接依赖消费者,所以消息系统可以将消费者系统错误与生产者系统组件隔离。
    • 生产者和消费者互相不受对方失败影响。
    • 这意味着任意时刻,我们都可以对后端服务器执行维护和发布操作。我们可以重启、添加或删除服务器而不影响生产者可用性,这样简化了部署和服务器管理的难度。
  • 解耦

截屏2020-07-04 下午7.48.16.png

事件驱动架构 EDA

截屏2020-07-04 下午7.50.52.png

截屏2020-07-04 下午7.56.20.png

主要 MQ 产品比较

  • RabbitMQ:性能好,社区活跃,Erlang 开发
  • ActiveMQ:跨平台,Java 友好
  • RocketMQ:阿里开源,Java开发,性能好,可靠性好
  • Kafka:linkedIn 出品,Scala 开发,分布式伸缩性好。