mq相关特性介绍

MQ:用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构
常见mq:
RocketMQ
阿里系下开源的一款分布式、队列模型的消息中间件,
支持事务消息。

Kafka
Apache下的一个子项目,使用scala实现的一个高性
能分布式Publish/Subscribe消息队列系统。

RabbitMQ
使用Erlang编写的一个开源的消息队列,较重量级。

ActiveMQ
Apache下的一个子项目,完全支持JMS1.1和J2EE 1.4
规范。

ZeroMQ
号称最快的消息队列系统,具有一个独特的非中间件的
模式,但是只能提供非持久消息。

Pulsar
Apache Pulsar 是一个多租户、高性能的发布-订阅消
息中间件

MQ使用场景
削峰填谷 
在非实时系统中,使用MQ可以缓存当前系统无法消化的消息,以设定好的速度平滑处理

异步/并行处理
可以分布式同时处理消息,减少任务总时长

顺序收发
日常中需要保证顺序的应用场景非常多,比如证券交易过程时间优先原则

应用解耦
在整体业务系统庞大而且复杂时,MQ 可实现应用解耦,确保主站业务的连续性

分布式事务一致性
支持事务消息,既可以实现系统之间的解耦,又可以保证最终的数据一致性

大数据分析
支持海量吞吐,支持流式处理,易与大数据平台整合,在日志处理中承担重要角色

MQ使用规范
1. 不要发送过大消息
  过大消息会严重降低MQ吞吐率
2. 消费端需要有消息幂等机制
  生产者可能投递重复消息,另外因为网络抖动、Rebalance等也可能发送相同消息,消费消息时需注意
3. 日志打印
  生产、消费消息时,因打印日志,以便后续定位问题
4. 记录生产、消费映射关系
  当消息体结构发生变更或者消息队列停用时,能快速通知相应的消费者

RocketMQ优势
1. 支持事务消息
  消息发送和DB操作保持最终一致性(两阶段提交),kafka也支持
2. 支持18个级别的延迟消息
  rabbitMQ、kafka不支持
3. 支持指定次数的消息重发
  消费失败后,会进行延迟重发。
4. 支持重复消费
   rabbitMQ不支持,kafka支持
5. 支持消息追溯、查询
  支持根据业务指定的唯一标识进行查询。
6. 支持很好的业务监控预警
  开源方案:对接普罗米休斯。
7. 对Java友好
  本身使用java开发,易于二次开发。


 

你可能感兴趣的:(消息队列,java,rabbitmq,kafka)