今天在思考kafka结构的时候发现消息队列这里有点模糊,可能是这里内容比较少一点吧。所以再这里记录一下。
消息队列概念理解:
可以看作两个名词来理解。
什么是消息:A要通知B,发送的东西叫做消息。
什么是队列:先进先出,顺序。
“消息”是在两台计算机之间传送数据的单位。消息的内容可以很简单,比如文本、字符串;当然也可以很复杂就比如说嵌入对象。消息被发送到对列中,“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
概述:
消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。
参考:什么是消息队列?_攻城狮百里的博客-CSDN博客_消息队列
传统消息的处理模式:
优缺点:
消息队列处理模式:
事务:
当涉及到消息队列的时候,一定会有事务问题。
事务:原子性。我所有的动作,要么都不执行,要不全部执行成功。
比如说:张三给我转账100元。可以拆分为两个动作:张三账户减100,我的账户加100
补充:
关于消息队列的思考:
比如说客户端每一秒钟向队列生产1万条消息,但是消费者每一秒钟只能消费100条消息。怎么办?(消息堆积问题怎么解决)
方案1,可以增加消费者。
方案2:限流,先过滤到一部分请求。