1 消息积压问题追溯
系统某部分出现性能问题,来不及处理上游发的消息,导致消息积压。
消息积压是正常现象,积压越来越多就需要处理了。
就像一个水库,日常蓄水是正常的,但下游泄洪能力太差,导致水库水位一直不停的上涨,这个就不正常了。
2 积压的开发警示
防范于未然,平时使用MQ时,如何优化代码才能避免消息积压?
若线上已出现积压,如何处理最好?
3 性能优化
性能的优化主要在生产者和消费者这俩业务逻辑。
MQ自身性能,作为API使用者,无需过于关注。
因大多MQ业务,MQ本身处理能力远大于业务系统。主流MQ的单个节点,消息收发性能可达几w ~ 几十w条消息/s,还可水平扩展Broker实例数倍增处理能力。
而一般业务系统需处理的业务逻辑远比消息队列复杂,单节点每秒可处理几百~几千次请求,已算性能佳。
所以,MQ性能优化,更关注在消息收发两端,业务代码怎么和MQ协作达到最佳性能。
3.1 生产端
此端业务代码处理性能,实际上和MQ关系不大,因都是先执行自己的业务逻辑,最后再发送消息。
若你的代码发送消息的性能上不去,需优先检查,是否为发消息前的业务逻辑耗时太多导致。
对于发消息的业务逻辑,只需注意设置合适并发和同步大小,即可达到很好发送性能。为何?
Producer发消息给Broker,Broker收到消息后返回确认响应,是一次完