• 消息中间件


    1、消息的优缺点、选择哪种

      常见的消息插件有Kafka、ActiveMQ、RabbitMQ、RocketMQ...

      优点:
        解耦,使得子系统之间的耦合关系降低,只需要关注消息的发送与接收,不用担心子系统1挂了以后对子系统2产生影响;

        异步,系统直接的数据传输不需要直接请求,直接发送消息,其他系统接收消息,返回,速度大大提高;

        削峰,消息插件控制着请求数量,到达系统的数量/到数据库的数量。

      缺点:系统可用性降低、系统复杂度提高、一致性问题。

      ActiveMQ不支持高并发、高性能、高负债。RabbitMQ是用erlang语言写的,很多人不能研究和掌控,但是对于小公司来说没问题。RocketMQ阿里的也可以。大数据领域用Kafka是业内标准。

    2、架构中引入消息的缺点

      系统可用性降低:当消息生产者已经将消息传递到MQ中,消费者还未消费,但是MQ突然挂了。所以引入MQ必须考虑到MQ的高可用以及MQ挂了之后的高可用保障方案。

      系统稳定性降低:消息传递者传递到MQ中结果网络故障等原因,接收者没有接收到。 或者传递着发送了多次重复数据,导致脏数据的产生等,降低了系统稳定性。所以此时就需要:消息可靠传递、消息幂等性传递、百万消息线上积压处理。

      分布式一致性的问题:如果接口A对数据库操作成功且将消息成功发送到MQ中,接口B拿到消息但是操作数据库失败,就会发生系统整体数据不一致问题。

      引入MQ中间件,如果消费者接收到消息后宕机了,并没有完成业务逻辑。 那么此时引入MQ后的代码逻辑里,就要对消息机制做一个保障。 在消费者成功处理业务逻辑后再删除MQ中间件中的某一条消息。 如果宕机,那么就重新将消息传递给其他消费者。

    参考:石杉的架构笔记(公众号)。

  • 相关阅读:
    Android
    nodejs 中 接受前端的数据请求的处理
    nodejs 文件操作
    nodejs 简单的搭建一个服务器
    angular 的跨域处理
    angular 的配置文件的应用
    angular 语法的应用
    淘宝的公共样式
    web编辑器的快捷键
    scss 用法 及 es6 用法讲解
  • 原文地址:https://www.cnblogs.com/AlmostWasteTime/p/10135006.html
Copyright © 2020-2023  润新知