RabbitMQ 小消息确认机制优化①
2018-04-21焦文彬
计算机系统应用 2018年3期
徐 震, 焦文彬
1(中国科学院 计算机网络信息中心,北京 100190)
2(中国科学院大学,北京 100049)
RabbitMQ是开源的基于Erlang的高效部署分布式消息队列,实现了AMQP协议,具有良好的可靠性、稳定性,可运行在多种操作系统,便于集群运行[1-6].RabbitMQ支持多种编程语言的客户端,可以通过安装插件扩展功能. RabbitMQ可以解耦应用程序,将不同语言开发的程序粘合在一起,在完全不同的应用之间共享数据.
Erlang采用轻量级并发模型,用于高并发、分布式“软实时系统”编程,支持运行系统中的软件升级[7].Erlang程序简短紧凑,采用函数式编程,自动存储管理.Erlang进程不共享内存,进程间通信通过消息传递进行.
RabbitMQ投递消息的速度受软硬件配置影响. 硬件方面有: 处理器、内存、磁盘、网络配置等; 软件方面有: 消息持久化机制、消息确认机制、交换器类型等. 要以高速度向消费者投递消息,应尽可能保持队列为空.
对RabbitMQ进行优化有较多方法. 如对生产者确认机制的优化: 直接建立channel与消息存储之间的联系,减少插入、删除、消息传递等操作,可以大幅降低处理时间[8]. 还可以优化topic路由匹配算法; 批量发送消息; 优化消息持久化机制; 开启Erlang HiPE编译选项; 使用位运算等.
生产者发送一条消息到broker,消息可能被n个消费者接收. 同时启用生产者确认与消费者确认,生产者仍无法获知n个消费者是否全部接收到消息. 本文对小消息情况下RabbitMQ的确认机制进行优化,在broker收到n个消费者的确认消息后,向生产者发送确认消息. 生产者收到确认消息则……
登录APP查看全文
