性能测试中的消息中间件优化

52 阅读2分钟

消息中间件的主要应用场景如下

异步通信: 可以用于业务系统内部的异步通信,也可以用于分布式系统信息交互。

系统解耦: 将不同性质的业务进行隔离切分,提升性能,主从流程分层,按照重要性进行隔离,减少异常影响。

流量削峰: 对间歇性突刺流量进行分散处理,减小系统压力,提升系统可用性。

分布式事务一致性: RocketMQ提供的事务消息功能可以处理分布式事务一致性(如电商订单场景)当然,也可以使用分布式事务中间件。

消息顺序收发: 这是最基础的功能,先进先出,消息队列必备。

延时消息: 延迟触发业务场景,如下单后延迟取消未支付订单等

大数据处理: 日志处理、Kafka。

分布式缓存同步: 消费MySQLbinlog日志进行缓存同步,或者将业务变动直接推送到消息队列消费。

引入消息中间件也会带来一些问题,总结下来主要有以下几点

消息顺序性保证;

避免消息丢失;

消息的重复问题;

消息积压处理;

延迟消息处理。

其中和性能有关的主要是消息积压问题。当发生消息积压时,通常是消费者消费消息的性能不佳,或者资源瓶颈导致消费能力无法进一步得到提升。

可以通过如下方式提升消费能力:

提升消费并行度。 通过增加Consumer实例的数量来提高并行度,或者提高单个Consumer的消费并行线程数。

批量消费。 批量消费方式可以在很大程度上提高消费吞吐量,减少消费者与消息中间件交互的次数。

丢弃非重要消息。 根据业务特性,如果消费速度跟不上生产速度,可以选择丢弃一些不重要的消息口优化消息消费过程。消费消息的过程一般包括业务处理以及跟数据库的交互等,对此过程进行优化也可以提升消费能力。