设计MQ的思路
摘要:分布式 首先这个mq得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计一个分布式系统,参照一下kafka的设计理念,broker->topic->pratition,每个partition放一个机器,就存一部分数据。如果现在资源不够了,简单呀,给topic增加parti
阅读全文
posted @
2021-11-11 11:06
公众号/架构师与哈苏
阅读(61)
推荐(0) 编辑
消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?大量消息持续积压几个小时,怎么办?
摘要:消息积压处理办法1:临时紧急扩容 先修复consumer的问题,确保其恢复消费速度,然后将现有consumer都停掉。新建一个topic,partition是原来的10倍,临时建立好原先10倍的queue数量。然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费之后不
阅读全文
posted @
2021-11-11 10:40
公众号/架构师与哈苏
阅读(330)
推荐(0) 编辑
kafka数据丢失的场景
摘要:消费者弄丢数据 唯一可能导致消费者弄丢数据的情况,就是说,你那个消费到了这个消息,然后消费者那边自动提交了offset,让kafka以为你已经消费好了这个消息,其实你刚准备处理这个消息,你还没处理,你自己就挂了,此时这条消息就丢咯。 这不是一样么,大家都知道kafka会自动提交offset,那么只要
阅读全文
posted @
2021-11-10 15:40
公众号/架构师与哈苏
阅读(158)
推荐(0) 编辑
kafka高可用(集群)
摘要:kafka的分布式和高可用 kafka的一个基本架构:多个broker组成,一个broker是一个节点;你创建一个topic,这个topic可以划分成多个partition,每个parttition可以存在于不同的broker上面,每个partition存放一部分数据。这是天然的分布式消息队列。 实
阅读全文
posted @
2021-11-10 09:40
公众号/架构师与哈苏
阅读(186)
推荐(0) 编辑
RabbitMQ的集群模式
摘要:单机模式(生产基本不用) 普通集群模式 默认模式,以两个节点(rabbit01,rabbit02)为例来进行说明,对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列结构。当消息进入rabbit0
阅读全文
posted @
2021-08-30 17:10
公众号/架构师与哈苏
阅读(192)
推荐(0) 编辑
如何保证消息的顺序性
摘要:先看看顺序会错乱的场景:RabbitMQ: 一个queue,多个consumer,这就乱了 拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点;或者就一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底层不
阅读全文
posted @
2021-08-30 16:36
公众号/架构师与哈苏
阅读(59)
推荐(0) 编辑
如何解决数据丢失问题
摘要:rabbitmq数据丢失,分为生产者丢数据,消息队列丢数据和消费者丢数据。 生产者数据丢失 在生产者发送到RabbitMQ时有可能因为网络问题导致投递失败,从而丢失数据。 方案1:rabiitmq事物 采用rabbitmq提供的事务功能 生产者发送数据之前开启rabbitmq事务(channel.t
阅读全文
posted @
2021-08-30 15:36
公众号/架构师与哈苏
阅读(205)
推荐(0) 编辑
消息队列怎么保证消息有没有重复消费(幂等性)?
摘要:普通业务控制幂等性 1.mysql唯一索引 2.token机制(请求前生成一个token,请求时携带这个token,如果这个token在redis中没有则继续,有则 有请求进行中) 3.mysql悲观锁,乐观锁(推荐使用乐观锁) 4.分布式锁(redis,zookeeper) 问题的原因 我看先来看
阅读全文
posted @
2021-05-10 14:13
公众号/架构师与哈苏
阅读(325)
推荐(0) 编辑
消息队列优缺点和选型
摘要:消息队列的优点 削峰: 比如:在一天中2点的访问量突然爆发,没用MQ的话系统,根本承受不住这种压力,数据库直接down掉,有了MQ会把突增的请求放入,慢慢消费掉。 解耦: 比如说有两个服务A和B,A把消息放到MQ中,B来进行消费。A只需要把消息放到MQ中,不用关心否有人进行消费。B只需要有消息就从M
阅读全文
posted @
2021-05-10 10:57
公众号/架构师与哈苏
阅读(312)
推荐(0) 编辑
Centos7上安装rabbitmq和使用
摘要:github rpm地址: https://github.com/rabbitmq/erlang-rpm 要安装rabbitmq先安装它的语言 创建erlang repo /etc/yum.repos.d/rabbitmq-erlang.repo # In /etc/yum.repos.d/rabb
阅读全文
posted @
2020-09-18 12:13
公众号/架构师与哈苏
阅读(301)
推荐(0) 编辑
docker部署RabbitMq
摘要:快速安装 docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.8.6-management docker启动 docker run -d -it --name myrabbitmq -p 5672:56
阅读全文
posted @
2020-09-17 13:25
公众号/架构师与哈苏
阅读(201)
推荐(0) 编辑