随笔分类 - 消息队列
摘要:1、延迟队列,可以通过rabbitmq自带机制实现:TTL+死信队列(通过设置消息或者队列的TTL,过期后进行消息的投递,从而达到delay的效果)。 但存在问题: 1)设置队列TTL:同一个队列的所有消息从入队列到TTL的时间,过期后会投递到相应死信交换机。这样如果消息的过期时间不尽相同,会创建n
阅读全文
摘要:Q:刚开始是对这个疑问抱有质疑态度的,因为使用消息队列的其中目的就是削峰填谷,来避免高流量时,对下游服务的冲击,所以使用消息队列进行缓冲,下游根据自己的消费能力去消费, 我感觉这就是消息积压本就是使用消息队列的功能,怎么会是问题呢? A:首先消息积压是正常现象,但凡是过多就不正常了。积压越来越多就需
阅读全文
摘要:MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,
阅读全文
摘要:1、确保消息的关键点不丢失? 关键在于两点:消息的持久化,业务系统的幂等性! 2、如何检测消息是否丢失? 1、我们可以利用消息队列的有序性来验证消息是否丢失,在producer端,每发送消息时附带连续的递增序号,在consumer端消费消息时验证消息的序号即可。 (大部分消息队列支持拦截器机制,可在
阅读全文
摘要:一、两阶段提交 2PC 1、数据库层面的两阶段提交(XA trainsaction) 两阶段提交是目前经常使用的一种解决分布式事物的强一致性的一种方案,它是由事物协调器和若干个事物执行者(数据库本身)组成。 所谓两阶段提交就是将每一个事物拆分成 任务+提交,将任务的执行和任务提交分成两步。当客户端发
阅读全文
摘要:rocketmq采用的是发布-订阅的模式,不需要每个消费者维护自己的消息队列,生产者将消息发送到topic,消费者订阅此topic 读取消息。 基本概念: 消息模型:消息模型包括producer,consumer,broker三部分。producer生产消息,consumer消费消息,broker存
阅读全文
摘要:rabbitmq采用的是队列的消息模型,利用队列先进先出的特性从而保证了消息的严格有序性,但是队列中没有读取这个操作,读取即为出队,也就是删除, 所以每个消费者都需要对应自己的队列去读取数据。 下图为rabbitmq的消息模型: 1、生产者只负责生产消息发送给exchange,不需要关心消费者以及消
阅读全文
摘要:选择消息队列的考量维度:可靠性,性能,高可用,功能,是否开源以及社区活跃程度 rabbitmq: 优点:轻量,易部署和使用,基于exchange模块可灵活配置路由规则 缺点:性能和吞吐量较差,每秒处理几万数据量;开发语言小众,不利于二次开发 rocketmq: 优点:可靠性,稳定性,性能很好每秒处理
阅读全文
摘要:消息队列使用场景 1、异步处理: 减少等待时间,更快的返回处理结果,提高系统性能以及更好的用户体验。 fe: 在一个秒杀系统中,可能需要如下几步:风险控制,锁定库存,生成订单,消息通知以及统计数据,在未优化的情况下,用户请求到达网关后进入服务端要至少 经历这五个步骤,但是对于秒杀系统而言关键的步骤在
阅读全文