常见的⼏种消息队列及其特点
拉丝模激光打孔机当前⽣产环境,使⽤较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。
1. ActiveMQ:
ActiveMQ是Apache出品,最流⾏的,能⼒强劲的开源消息总线,并且它⼀个完全⽀持规范的消息中间件。其丰富的API、多种集构建模式使得它成为业界⽼牌消息中间件,在中⼩型企业中应⽤⼴泛。 但是其性能稍差,在⾯对⾼并发的情况下,会出现消息阻塞、堆积、延迟等问题。
2. Kafka
Kafka是LinkedIn开源的分布式发布-订阅消息系统,⽬前归属于Apache顶级项⽬。
水下呼吸器
主要特点就是基于Pull的模式来处理消息消费,追求⾼吞吐量,⼀开始的⽬的就是⽤于⽇志收集和传输。0.8版本开始⽀持复制,不⽀持事务,对消息的重复、丢失、错误没有严格要求,适合产⽣⼤量数据 的互联⽹服务的数据收集业务。因为基于操作系统低层的Page Cache,仅仅使⽤内存管理,不存在内存和磁盘之间的IO操作,所以kafka能够⽀持廉价的服务器上以每秒100k条数据的吞吐量。(有ack机制,可以保证不丢失,不能保证不重复。)
十二水磷酸氢二钠3. RocketMQ
RocketMQ是阿⾥开源的消息中间件,已孵化为Apache顶级项⽬,纯Java开发,具有⾼吞吐量、⾼可靠性、适合⼤规模分布式系统应⽤的特点。RocketMQ思路起源于Kafka,它对消息的可靠传输以及事务性做了优化,在2.0版本,RocketMQ集通过Zookeeper进⾏管理,在3.0之后,放弃Zookeeper,使⽤NameServer进⾏集的管理和协调。
特点:
能够保障消息的顺序消费,提供了丰富的消息拉取等处理模式,消费者可以⾼效进⾏⽔平扩展,能够承载上亿级别数据量级。
可以⽀持多种集架构模式:Master-Slave模式、双Master-Slave模式、多主多从模式等等。
⽀持多种刷盘策略:同步双写、异步复制。借助了零拷贝等技术。
4. RabbitMQ
RabbitMQ是⼀个开源的消息代理和队列服务器,⽤来通过普通协议在不同的应⽤之间共享数据(跨平台跨语⾔)。RabbitMQ是使⽤Erlang 语⾔编写,并且基于AMQP协议实现。
特点:
电厂水处理
可靠性:使⽤了⼀些机制来保证可靠性,⽐如持久化、传输确认、发布确认。
灵活的路由:在消息进⼊队列之前,通过Exchange来路由消息。对于典型的路由功能,Rabbit已经提供了⼀些内置的Exchange来实现。针对更复杂的路由功能,可以将多个Exchange绑定在⼀起,也通过插件机制实现⾃⼰的Exchange。
消息集:多个RabbitMQ服务器可以组成⼀个集,形成⼀个逻辑Broker。
⾼可⽤:队列可以在集中的机器上进⾏镜像,使得在部分节点出问题的情况下队列仍然可⽤。
多种协议:⽀持多种消息队列协议,如STOMP、MQTT等。
多种语⾔客户端:⼏乎⽀持所有常⽤语⾔,⽐如Java、.NET、Ruby等。
管理界⾯:提供了易⽤的⽤户界⾯,使得⽤户可以监控和管理消息Broker的许多⽅⾯。
跟踪机制:如果消息异常,RabbitMQ提供了消息的跟踪机制,使⽤者可以出发⽣了什么。面包包装袋
插件机制:提供了许多插件,来从多⽅⾯进⾏扩展,也可以编辑⾃⼰的插件。
>塑钢拉链