消息队列基础总结

消息队列基础总结

  • 消息队列的含义:分布式系统中的重要组件,使用队列Queue与生产者-消费者模式

  • 好处

    1. 异步处理提高系统性能(流量削锋,减少响应所需要的时间):

      不适用消息队列的时候,用户请求的数据直接写入数据库,高并发压力大响应慢;使用消息队列以后,用户请求的数据发送给消息队列以后直接返回,消息队列的消费者进程从消息队列里面获取数据,异步写入数据库。消息队列服务器处理速度大于数据库,使得响应速度大幅度提高。

      所以:异步处理,使得短时高并发产生的事务消息存储在消息队列里面,从而削平高峰时期的并发事务。

      带来的问题:业务逻辑的改变

    2. 降低系统耦合性

      使用发布订阅模式,生产者与消费者没有直接耦合,对于原有业务没有任何影响,实现业务的可拓展性。

  • 实现基础:JMS(Java Message Service)API是一个消息服务的标准或者是规划。

  • JMS的两种消息模型:

    • P2P模型:使用队列作为消息通信载体,满足生产者与消费者模式,一个消息只能被一个消费者使用
    • 发布订阅模型:使用主题作为消息通信载体,类似于广播模式。在一条消息广播以后才订阅以后的用户是无法收到消息的
  • JMS的五种不同消息正文格式

    • StreamMessage – Java原始值的数据流
    • MapMessage–一套名称-值对
    • TextMessage–一个字符串对象
    • ObjectMessage–一个序列化的 Java对象
    • BytesMessage–一个字节的数据流
  • AMQP(Advanced Message Queuing Protocol) 提供统一消息服务的应用层标准高级消息队列协议

  • ActiveMQ基于JMS实现,RabbitMQ基于AMQP协议实现

  • AMQP与JMS的区别:

    • AMQP定义了线路层的协议,JMS定义的是API规范
    • JMS支持多种复杂的消息类型,AMQP支持的byte[]消息类型,复杂类型可以序列化以后进行发送
  • 常见几种消息队列比较

    • ActiveMQ性能比较差,版本迭代比较慢
    • RabbitMQ吞吐量比RocketMQ与kafka,但是基于erlang开发,并发能力强,性能极好,延时性很低,到达微秒级。
    • RocketMQ是阿里出品,
    • Kafka提供极少的核心功能,但是提供超高的吞吐量。ms级别延迟
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值