RocketMQ Broker的最佳实践
翻译自rocket官方文档
Broker Role
Broker的方式有异步主,同步主,或者从。如果不能容忍消息丢失,建议以同步主从方式部署。如果对丢失没那么严格,但是希望高可用,可以部署为异步主从,如果你想更简单,可以使用异步主而不需要从机。
刷盘方式
异步刷盘是推荐的方式, 因为同步刷盘太多的消耗而且造成大量的性能丢失,如果希望可靠性高,建议使用同步主从。
ReentrantLock vs CAS
等待完成
os.sh
等待完成
题外话(非翻译页内容)
因为borker本身需要存储消息信息,所以高可用方案选择主从方式。
主从方式可以通过主从同步热备或主从异步热备两种方式。
同步热备需要主从都将消息信息处理完成以后才返回,所以性能要差一些。
异步热备就是主结点成功处理消息完成就返回,从结点通过内部的同步机制主结点消息数据。
在RocketMQ默认的配置文件路径下有${ROCKET_HOME}/conf/2m-2s-async/目录路径,在该路径下有两主两从异步热备配置的模板。
本案例因为只考虑高可用,不考虑高性能,所以只配置一主一从。只需要使用基于broker-a.properties和broker-a-s.properties两个模板文件进行修改配置。
如果要考虑高性能,只需要将broker-b.properties做类似修改就可以了。如果竟考虑高可用,又考虑高性能,则配置从个broker-x.properties和broker-x-s.properties配置就可以了。
同步刷盘:在消息到达MQ后,RocketMQ需要将数据持久化,同步刷盘是指数据到达内存之后,必须刷到commitlog日志之后才算成功,然后返回producer数据已经发送成功。
异步刷盘:,异步刷盘是指数据到达内存之后,返回producer说数据已经发送成功。,然后再写入commitlog日志。