消息队列
文章平均质量分 77
我顶得了
这个作者很懒,什么都没留下…
展开
-
【MQ】常见的几种消息队列及其特点
三、常见的几种消息队列及其特点当前生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。1. ActiveMQ:ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持JMS规范的消息中间件。其丰富的API、多种集群构建模式使得它成为业界老牌消息中间件,在中小型企业中应用广泛。但是其性能稍差,在面对高并发的情况下,会出现消息阻塞、堆积、延迟等问题。2. KafkaKafka是LinkedIn开原创 2020-12-10 17:37:07 · 5872 阅读 · 2 评论 -
【MQ】消息队列的优缺点
消息队列的优缺点1.优点上文已经提到的解耦、异步、削峰2.缺点系统可用性降低引入的外部依赖越多越容易出现问题,本来A系统调用BCD三个接口就够了,但是加入MQ后,就必须考虑到MQ的可用性问题,防止MQ出现问题。如何保证高可用?系统复杂度提高加入MQ后就必须考虑到消息是否有重复消费的问题,以及消息丢失后如何处理,消息传输的顺序性问题等等各种各样的问题。如何保证消息不被重复消费?如何保证消息不丢失?数据一致性问题A系统处理完后返回成功,之后由MQ向BCD中写入数据,若是BC写原创 2020-12-10 17:22:23 · 235 阅读 · 1 评论 -
【MQ】为什么要使用消息队列
https://my.oschina.net/hunglish/blog/1524542原创 2020-12-10 17:21:43 · 263 阅读 · 1 评论 -
【MQ】如何保证消息可靠性传输/如何处理消息丢失的问题?
数据的丢失问题,可能出现在生产者、MQ、消费者中,下文以RabbitMQ与Kafka为例分析。一、RabbitMQ1.生产者弄丢了数据生产者将数据发送到 RabbitMQ 的时候,可能数据发送途中就因为网络原因丢失。解决方案:事务功能:此时可以选择用 RabbitMQ 提供的事务功能,就是生产者发送数据之前开启 RabbitMQ 事务channel.txSelect,然后发送消息,如果消息没有成功被 RabbitMQ 接收到,那么生产者会收到异常报错,此时就可以回滚事务channel.txR原创 2020-12-09 17:59:36 · 413 阅读 · 0 评论 -
【MQ】如何保证消息不被重复消费/如何保证消息的幂等性?
如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。以Kafka为例说明为什么会导致数据重复。Kafka 实际上有个 offset 的概念,就是每个消息写进去,都有一个 offset,代表消息的序号,然后 consumer 消费了数据之后,每隔一段时间(定时定期),会将自己消费过的消息的 offset 提交一下,表示下次消费从offset原创 2020-12-09 16:34:48 · 3102 阅读 · 0 评论 -
【MQ】如何保证RabbitMQ/Kafka的高可用
一、RabbitMQ的高可用RabbitMQ基于主从模式实现高可用。它有三种模式:单机模式,普通集群模式,镜像集群模式。单机模式单机模式就是demo级别的,生产中不会有人使用。普通集群模式普通集群模式就是在多台机器上启动多个rabbitmq实例,每个机器启动一个。但是创建的queue只会放在一个rabbitmq实例上面,但是其他的实例都同步了这个queue的元数据。当用户消费的时候,如果连接到了另一个实例,RabbitMQ会从拥有queue的那个实例获取消息然后再返回给用户。这种方式并没有做到原创 2020-12-08 15:05:54 · 220 阅读 · 0 评论