随笔分类 -  MQ

摘要:一张图看清RocketMQ集群部署 RocketMQ生产环境部署,主要是由 消息生产者集群,消息消费者集群,NameServer集群、Broker集群组成。 Broker集群采用双Master双Slave异步复制模式,每个 master 节点都有至少一个对应的 slave。master 节点可读可写 阅读全文
posted @ 2020-12-10 16:37 gaopengpy
摘要:Kafka 支持百万级 TPS 的秘密: (1)顺序写入数据,在 Partition 末尾追加,所以速度最优。 (2)使用 MMAP 技术将磁盘文件与内存映射,Kafka 可以像操作磁盘一样操作内存。 (3)通过 DMA 技术实现零拷贝,减少数据传输次数。 (4)读取数据时配合sendfile直接暴 阅读全文
posted @ 2020-12-08 11:27 gaopengpy
摘要:RocketMQ如何保证消息零丢失呢? Producer消息零丢失的解决方案: 1、事务消息机制:使用事务消息能保证生产者一定会将消息写入MQ,但是会降低吞吐量。 2、同步消息重试机制:发送同步消息,如果发生异常,则重试,如果重试超过一定次数仍然失败,则可以先入库,后续再补偿。 Broker消息零丢 阅读全文
posted @ 2020-09-10 19:46 gaopengpy
摘要:RocketMQ 集群部署模式有以下几种: 单 master 模式: 也就是只有一个 master 节点,称不上是集群,一旦这个 master 节点宕机,那么整个服务就不可用,适合个人学习使用。 多 master 模式: 多个 master 节点组成集群,单个 master 节点宕机或者重启对应用没 阅读全文
posted @ 2020-09-08 17:35 gaopengpy
摘要:懒得写了,直接看文章吧。 RabbitMQ如何保证消息不丢失? RocketMQ如何保证消息不丢失? 阅读全文
posted @ 2020-09-03 09:49 gaopengpy
摘要:现在市面上的消息中间件种类很多,常用的大致有4种,分别是Kafka、ActiveMQ、RabbitMQ、RocketMQ。 那么Kafka、ActiveMQ、RabbitMQ、RocketMQ都有什么优缺点?怎么技术选型呢? 特性ActiveMQRabbitMQRocketMQKafka 单机吞吐量 阅读全文
posted @ 2020-08-20 13:57 gaopengpy
摘要:Kafka 一个最基本的架构认识:由多个 broker 组成,每个 broker 是一个节点;你创建一个 topic,这个 topic 可以划分为多个 partition,每个 partition 可以存在于不同的 broker 上,每个 partition 就放一部分数据。 这就是天然的分布式消息 阅读全文
posted @ 2020-08-20 11:16 gaopengpy
摘要:RabbitMQ 的高可用性 RabbitMQ 是比较有代表性的,因为是基于主从(非分布式)做高可用性的,我们就以 RabbitMQ 为例子讲解第一种 MQ 的高可用性怎么实现。 RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式。 单机模式: 单机模式,就是 Demo 级别的,一般 阅读全文
posted @ 2020-08-20 10:38 gaopengpy
摘要:6.1 关于 ACK 机制 关于 ACK 机制 ,不了解的小伙伴,可以看这里:Kafka 架构深入 ,通过 ACK 机制保证消息送达。Kafka 采用的是至少一次(At least once),消息不会丢,但是可能会重复传输。 acks 的默认值即为1,代表我们的消息被leader副本接收之后就算被 阅读全文
posted @ 2020-08-17 10:39 gaopengpy
摘要:RabbitMQ的集群模式有两种: 普通模式:消息实体在其中一个节点上,消费时同步 默认模式,以两个节点(rabbit01、rabbit02)为例来进行说明。 对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同 阅读全文
posted @ 2020-08-11 16:20 gaopengpy
摘要:在电商系统中,经常有这样的场景: 订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单。 上述类似的需求是我们经常会遇见的问题。最常用的方法是定期轮训数据库,设置状态。在数据量小的时候并没有什么大的问题,但是数据量一大轮询数据库的方式就会变得特别耗资源。当面对千万级、上亿级数据量时,本身写入 阅读全文
posted @ 2020-07-31 10:55 gaopengpy
摘要:rabbitmq丢失数据的情况: 1、生产者端:消息因为网络问题丢失或者发送到rabbitmq时出错了。 2、rabbitmq服务端:未做持久化。 3、消费者端:打开了autoAck,在未完成消费之前就自动回复了。 rabbitmq丢失数据的解决: 1、生产者端:通过confirm模式异步确认消息发 阅读全文
posted @ 2020-05-08 16:23 gaopengpy
摘要:队列(Queue)和主题(Topic)是JMS支持的两种消息传递模型: 1、点对点(point-to-point,简称PTP)Queue消息传递模型: 通过该消息传递模型,一个应用程序(即消息生产者)可以向另外一个应用程序(即消息消费者)发送消息。在此传递模型中,消息目的地类型是队列(即Destin 阅读全文
posted @ 2019-12-06 14:20 gaopengpy