For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
消息队列技术的应用在许多软件编程开发项目中都是非常常见的一个编程技术,而本文我们就通过案例分析来简单了解一下,消息队列技术应用需要关注哪些问题。
高可用
消息队列肯定不是单机的,这样可用性和健壮性都非常差,所以项目中使用的消息队列都得集群或者分布式
数据问题
消息丢失:当消费者拿了数据还没使用的时候,服务就挂掉了,就会导致消息的丢失,一般会使用ACK应答机制,当消费者拿到消息发送确认ACK信号,消息队列才会把对应的消息删掉
消息堆积:消息堆积分为客户端堆积和服务端堆积
一般都会设置告警规则来通知开发者消息堆积的问题
如果是客户端消息堆积,那可以考虑扩大消费线程或者节点来解决,针对于某些特殊场景,如果消息堆积已经影响到业务,并且堆积的消息可以跳过不消费,那么可以重置消费消息位置为新位置开始消费,快速恢复业务。
如果是服务端消息堆积,考虑服务端宕机的情况,快速恢复之后重新可用
消费者取数据
两种方法
1.push消息队列有新消息的时候主动叫消费者去拿,实时性强。如果消费者故障,服务端堆积消息。
2.pull消费者不断的轮询消息队列,看看有没有新数据,如果有就消费,实时性弱。
消息队列的传输模式
点对点模型
用于消息生产者和消息消费者之间点到点的通信,消息生产者将消息发送到某个特定的消费者
特点:
1.每个消息只有一个消费者
2.发送者和接收者都没有时间依赖
3.接受者确认消息接受和处理成功
发布订阅模型
发布订阅模型支持向一个特定的消息主题产生消息,在这种模型下,发布和订阅者彼此不知道对方的存在,多个消费者可以获得消息,在发布者和订阅者之间存在时间依赖性,发布者publish需要建立一个订阅subscription,以便消费者能够订阅。订阅者必须保持持续的活动状态并接受消息
主题、订阅、消费者(组)之间的关系为M:N:O
在这种情况下,订阅者未连接时,发布的消息将在订阅者重新连接的时候重新发布
特点:
1.每个消息可以有多个订阅者
2.客户端只有订阅之后才能收到消息
3.持久订阅和非持久订阅
持久订阅:订阅关系建立之后,消息就不会消失,不管订阅者是否在线
非持久订阅:订阅者为了接受消息,必须一直在线,当只有一个订阅者的时候等于点对点模式
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。