概述
目录
消息队列
软件下载
Dubbo远程调用的性能问题
什么是消息队列
消息队列的特征
常见消息队列软件
消息队列的事务处理
消息队列
软件下载
doc.canglaoshi.org网站中的kafka
Dubbo远程调用的性能问题
Dubbo调用普遍存在于我们的微服务项目中
这些Dubbo调用全部是同步的操作
这里的"同步"指:消费者A调用生产者B之后,A的线程会进入阻塞状态,等待生产者B运行结束返回之后,A才能运行之后的代码
Dubbo消费者发送调用后进入阻塞状态,这个状态表示该线程仍占用内存资源,但是什么动作都不做
如果生产者运行耗时较久,消费者就一直等待,如果消费者利用这个时间,那么可以处理更多请求,业务整体效率会提升
实际情况下,Dubbo有些必要的返回值必须等待,但是不必要等待的服务返回值,我们可以不等待去做别的事情
这种情况下我们就要使用消息队列
什么是消息队列
消息队列(Message Queue)简称MQ,也称:"消息中间件"
消息队列是采用"异步(两个微服务项目并不需要同时完成请求)"的方式来传递数据完成业务操作流程的业务处理方式
消息队列的特征
常见面试题:消息队列的特征(作用)
-
利用异步的特性,提高服务器的运行效率,减少因为远程调用出现的线程等待阻塞时间
-
削峰填谷:在并发峰值超过当前系统处理能力时,我们将没处理的信息保存在消息队列中,在后面出现的较闲的时间中去处理,直到所有数据依次处理完成,能够防止在并发峰值时短时间大量请求而导致的系统不稳定
-
消息队列的延时:因为是异步执行,请求的发起者并不知道消息何时能处理完,如果业务不能接受这种延迟,就不要使用消息队列
常见消息队列软件
- Kafka:性能好功能弱:适合大数据量,高并发的情况,大数据领域使用较多
- RabbitMQ:功能强性能一般:适合发送业务需求复杂的消息队列,java业务中使用较多
- RocketMQ:阿里的
- ActiveMQ:前几年流行的,老项目可能用到
消息队列的事务处理
当接收消息队列中信息的模块运行发送异常时,怎么完成事务的回滚?
当消息队列中(stock)发生异常时,在异常处理的代码中,我们可以向消息的发送者(order)发送消息,然后通知发送者(order)处理,消息的发送者(order)接收到消息后,一般要手写代码回滚,如果回滚代码过程中再发生异常,就又要思考回滚方式,如果一直用消息队列传递消息的话,可能发生异常的情况是无止境的
所以我们在处理消息队列异常时,经常会设置一个"死信队列",将无法处理的异常信息发送到这个队列中
死信队列没有任何处理者,通常情况下会有专人周期性的处理死信队列的消息
最后
以上就是单身大侠为你收集整理的微服务14-消息队列消息队列的全部内容,希望文章能够帮你解决微服务14-消息队列消息队列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复