- rocketMq 官方文档(概念,部署)https://github.com/apache/rocketmq/tree/master/docs/cn
- rocketMq 控制消费速度 https://www.knew.one/2019/08/05/consume-rocketmq-with-limit/
- rocketMq 控制台部署 https://www.jianshu.com/p/0de7857deb27
rocket全局顺序消费,归根就是 1个顺序分片,1个消费线程,来保证消费顺序,集群情况下,保证了高可用,不能保证负载,一台机器需要承载所有的消费请求
rocket分片消费:我们遇到的场景是,接入第三方广告,埋点实现匹配回调
1.顺序消费 2.量大(千万级每天)
全局顺序消费必然导致消息堆积严重
想到的俩个方案 一.分片顺序,用手机型号(埋点,与广告数据均有),做hash来取目标分片,存入消息 二.普通队列,乱序存入,且记录消息发送时间,用定时任务匹配(用发送时间字段区分先后顺序,做逻辑处理)
解决同步刷盘效率问题 1.使用 FileChannel + DirectBuffer 池,使用堆外内存,加快内存拷贝 2.使用数据和索引分离,当消息需要写入时,使用 commitlog 文件顺序写,当需要定位某个消息时,查询index 文件来定位,从而减少文件IO随机读写的性能损耗