
RabbitMQ
RabbitMQ与前两者最大的区别是其消息通信方式是通过exchange进行路由的,不过吞吐量比RocketMQ和Rabbit MQ都要差。RabbitMQ除了拥有延迟队列和死信队列外,还拥有优先级队列,消息在生产者发送时会打上优先级,然后消费者会先消费优先级高的消息。
RabbitMQ的exchange有四种:第一种是直连exchange,这种适用于用户通知系统,通过用户的不同用户操作去精准推送通知,底层实现是通过路由键与绑定键精准匹配。第二种是Topic exchange,这种适用于新闻咨询系统和电商营销系统,通过主题去进行匹配,采用的是模糊匹配。第三种是Fanout exchange,这种适用于配置更新和系统通知,采用的是广播的方式。最后一种是头exchange,这种适用于多条件筛选条件和异构系统集成,不依赖路由键根据头部属性进行匹配。
RabbitMQ通过虚拟主机进行逻辑上的消息隔离,类似于RocketMQ的NameSever,可以进行资源隔离,权限控制多用户支持。
RabbitMQ的高可用分为三种集群模式:普通集群模式,镜像集群模式,Quorum队列集群模式。
普通集群模式中每个broker都是一个独立的个体,互相同步的是exchange里的元数据,queue的数据发生了改变也不会同步,是通过访问exchange去跳转到其他broker读数据的。这种集群模式没有提高单broker的读写能力,并且也有单点故障问题,因为不同步,所以一旦单点故障会丢失数据。
镜像集群模式中每个broker都有其他broker的queue的副本,但是一个队列只会有一个leader,leader负责读写数据,而从节点负责备份数据,从queue也叫镜像队列。这个方法的缺点是主从复制压力太大。
Quorum队列集群是通过raft一致性算法同步多个broker的元数据与队列数据,通过引入选举机制来解决网络分区问题。
RabbitMQ与前两者最大的区别是其消息通信方式是通过exchange进行路由的,不过吞吐量比RocketMQ和Rabbit MQ都要差。RabbitMQ除了拥有延迟队列和死信队列外,还拥有优先级队列,消息在生产者发送时会打上优先级,然后消费者会先消费优先级高的消息。
RabbitMQ的exchange有四种:第一种是直连exchange,这种适用于用户通知系统,通过用户的不同用户操作去精准推送通知,底层实现是通过路由键与绑定键精准匹配。第二种是Topic exchange,这种适用于新闻咨询系统和电商营销系统,通过主题去进行匹配,采用的是模糊匹配。第三种是Fanout exchange,这种适用于配置更新和系统通知,采用的是广播的方式。最后一种是头exchange,这种适用于多条件筛选条件和异构系统集成,不依赖路由键根据头部属性进行匹配。
RabbitMQ通过虚拟主机进行逻辑上的消息隔离,类似于RocketMQ的NameSever,可以进行资源隔离,权限控制多用户支持。
RabbitMQ的高可用分为三种集群模式:普通集群模式,镜像集群模式,Quorum队列集群模式。
普通集群模式中每个broker都是一个独立的个体,互相同步的是exchange里的元数据,queue的数据发生了改变也不会同步,是通过访问exchange去跳转到其他broker读数据的。这种集群模式没有提高单broker的读写能力,并且也有单点故障问题,因为不同步,所以一旦单点故障会丢失数据。
镜像集群模式中每个broker都有其他broker的queue的副本,但是一个队列只会有一个leader,leader负责读写数据,而从节点负责备份数据,从queue也叫镜像队列。这个方法的缺点是主从复制压力太大。
Quorum队列集群是通过raft一致性算法同步多个broker的元数据与队列数据,通过引入选举机制来解决网络分区问题。


