rocketMq周记

172 阅读2分钟
  • rockerMq分为nameServer路由中心,生产者,broker,消费者,broker每30秒会把自己注册给nameServer集群的每台机器,nameServer每隔10秒检查注册信息, 超过120秒,就会认为broker断开,生产者和消费者会有容错机制,多个masterBroker可以分担数据,每个masterBroker可以有多个slaveBroker主从同步
  • 中间件在压测或者上生产之前要对三大块参数进行调整,OS内核参数,JVM参数,中间件参数 OS内核参数 比如vm.overcommit_memory 设置为0会申请内存,有可能失败,设置1会直接分配(建议1) vm.max_map_count 默认线程65536,可以开启多点,655360,开启足够多的线程 vm.swappiness os会把一部分磁盘空间作为swap区域,如果有的进程现在不是很活跃,就会被操作系统调为睡眠状态, 把进程中的数据放到swap区域 设置为0就是不把任何数据放到swap去,默认是60,可能会把一些不活跃的数据 放到swap中,可以调成10 ulimit 控制linux上最大文件链接数 默认1024,在大量读写磁盘文件时候肯定不够的,可以设置大点 1000000 JVM调优 可以调整一下启动参数,如堆内存调大点, rocketMq调优 sendMessageThreadPoolNums=16 如果cpu核数多可以适当调整
  • rocketMq有topic,可以指定多个messageQueen,假设有4个,两台broker,平均分配,如果单台的效率是7W,那两台broker就是14W,最好设置容错机制sendLatencyFaultEnable, 以免其中一个broker挂了,消息还往上发,这个参数假如访问某个broker延迟超过500ms,就会在接下来一段时间不会访问这个broker。消息会先写到broker的commitlog,每个最多1gb 每个messageQueue都会有一系列的consumeQueue,里面记录了消息在commitlog存的offset的偏移量
  • mq会把消息写到broker的commitLog上,最大为1g,每个broker可以有多个messagequeue,即多个分片,每个messagequeue下有多个consumerqueue,每个consumerqueue 大约5.72M,30M条数据,可以选择同步刷盘或者异步刷盘