• 消息中间件(MQ)


    消息中间件的作用:

    1. 系统解耦
      多系统直接相互调用
      失败重试机制
      例如:订单和财务信息就可以使用 mq 异步处理 使订单和财务系统之间进行解耦,如果财务系统有任何异常就不会影响用户的正常下单

    2. 填谷削峰
      某时间数据量剧增的情况
      MQ 主要解决瞬时写压力大于应用服务能力导致信息丢失、系统奔溃等问题

    3. 异步调用
      不要求系统之间同步反馈结果,也能保证数据的最终一致性。

    4. 压测测试
      线上有些链路不好压测,可以通过堆积一定量消息再放开来压测 这也是压力测试的一种手段
      提升性能
      当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统

    5. 降低系统的可用性
      提高系统的复杂度

    我们应该注意什么问题呢?

    1. 降低系统的可用性

    2. 提高系统的复杂度

    3. 需要保证数据的最终一致性

    功能项KafkaRabbitMQRocketMQPulsar(研究中)
    优先级队列不支持支持,建议优先级大小设置在0-10之间支持,维护不同的优先级队列,根据message的优先级发送到对于的队列中-
    延迟队列不支持支持支持-
    死信队列不支持支持支持-
    重试队列不支持支持支持-
    消费模式pull拉模式pull + pushpull+长轮询-
    广播消费支持,kafka对于广播消息的支持更加正统支持支持-
    批量消息支持,生产者异步发送支持支持,生产者同步发送-
    消息回溯支持.Kakfa支持按照offset和timestam两种维度进行消息回溯不支持,一旦被确认消费就会被删除支持-
    消息堆积支持,海量消息堆积,堆积能力和磁盘大小挂钩支持,但是内存达到阀值时,性能会受影响支持海量消息堆积-
    持久化方式消息队列,segment方式支持消息队列-
    消息追踪不支持。消息追踪可以通过外部系统来支持,但是支持粒度没有内置的细腻。支持支持-
    消息过滤客户端级别的支持,可用过kafka stream进行消息过滤不支持,二次封装较简单支持,可通过message tag、属性进行过滤-
    多租户不支持支持不支持支持
    多协议支持只支持定义协议,目前几个主流版本之间存在兼容性问题AMQPJMS ,OpenMessaging-
    跨语言支持当前版本采用Java编写,支持多种语言的客户端采用Erlang编写,支持多种语言客户端Java, C++, Go-
    流量控制支持client和user级别,通过主动设置可将流控作用于生产者或消费者流量控制基于credit-base算法,是内部被动触发的保护机制,作用于生产者层面RocketMQ提供了针对于不同维度的流量控制-
    消息顺序性支持普通的顺序消息,即对于单个分区的消息发送和消费是有序的,但是不保证不重复顺序性的条件比较苛刻,需要单线程发送,单线程消费并且不采用延迟队列、优先级队列等一些高级功能,从某种意义上来书不支持顺序性支持普通的顺序消息和严格的顺序消息-
    幂等性支持单个Producer单个分区的会话幂等性不支持不支持,不解决消息的重复问题-
    事务性消息最新版支持事务消息支持最新版的metaq支持事务消息-
    性能最高-
    高可用和容错使用partition的副本机制和isr选举机制保证高可用普通集群非高可用,可用镜像模式和主备集群通过broker的master和slave实现高可用-
    幂等性支持单个Producer单个分区的会话幂等性不支持不支持,不解决消息的重复问题-
    定时消息不支持支持支持-
    负载均衡客户端消费者负载均衡,需要一个broker作为coordinator默认是轮询客户端负载均衡,支持平均和轮询分配-
    刷盘策略默认是异步刷盘默认是内存存储默认同步刷盘-
  • 相关阅读:
    一本通2057;星期几
    【Android】PopupWindow焦点控制方式解析
    MongDB的高级查询
    Java中JavaBean对象和Map的互相转换
    STM32在FreeRTOS下的us延时
    LeetCode每日一题(2365. Task Scheduler II)
    【Boot开发】Git工具详解,服务器搭建java和mysql环境由systemctl管理
    net-java-php-python-高校新生报到管理系统计算机毕业设计程序
    并联四足机器人项目开源教程(一)--- 机器人学导论的学习
    【leetcode】98. 验证二叉搜索树
  • 原文地址:https://blog.csdn.net/qq_32662595/article/details/126227229