RocketMQ4.2 最佳实践之集群搭建
1. 集群物理部署结构

2. 消息落盘和Broker数据同步
2.1 消息落盘
- SYNC_FLUSH(同步刷盘):生产者发送的每一条消息,都在保存到磁盘成功后才回调告诉生产者成功。这种方式不会存在消息丢失的问题,但是有很大的磁盘IO开销,性能有一定影响
- ASYNC_FLUSH(异步刷盘):生产者发送的每一条消息并不是立即保存到磁盘,而是暂时缓存起来,然后就回调告诉生产者成功。随后再异步的将缓存数据保存到磁盘
- 定期将缓存中更新的数据进行落盘
- 当缓存中更新的数据条数达到某一设定值后进行落盘。这种方式会存在消息丢失(在还未来得及同步到磁盘的时候宕机),但是性能很好。默认是这种模式。
2.2 Broker数据同步机制
- 一种是master,即可以写也可以读,其brokerId=0,只能有一个
- 一种是slave,只允许读,其brokerId为非0
- Sync Broker(同步双写):生产者发送的每一条消息都至少同步复制到一个slave后,才返回告诉生产者成功,即“同步双写”
- Async Broker(异步复制):生产者发送的每一条消息只要写入master,就返回告诉生产者成功。然后再“异步复制”到slave
- 上述“2”只是说作为一个集群的最低配置数量,可以根据实际情况扩展
- 所有的刷盘操作全部默认为:ASYNC_FLUSH(异步刷盘)
3. 三种Broker集群方式优缺点
4. 双主集群搭建
5. 双主双从集群搭建
- Sync Broker(同步双写):当生产端生产消息后,主节点和从节点都收到消息,并把消息都同时写入到本地后,才会回复消息
- Async Broker(异步复制):当主节点将数据保存到本地后,直接返回成功的消息,不关系从节点是否写入成功

- 消息发送时已经进行了负载均衡,消息比较平均地落在了两个 Broker Set 上
- 在Broker运行时关掉 Broker Master1,Broker Master1 上还没有被消费的数据,会走 Broker Slave1被消费。消费完了再把 Broker Master1 启动,Master1 上没有被消费的数据不会被消费
- 在Broker运行时关掉 Broker Master1,之后的消息会被发到 Broker Master2 上
- 当Master1被加回来,Master1会重新成为主节点,并且与 Master2 还是有负载均衡效果
- Slave1 在 Master1 宕机期间,不会升级成为主节点
6. 参考资料
RocketMQ4.2 最佳实践之集群搭建的更多相关文章
- [转载] Redis集群搭建最佳实践
转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...
- Redis集群搭建最佳实践
要搭建Redis集群.首先得考虑以下的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的事实上也就是集群搭建的目的.全部的集群主要都是为了解决一个 ...
- 【原创 Hadoop&Spark 动手实践 5】Spark 基础入门,集群搭建以及Spark Shell
Spark 基础入门,集群搭建以及Spark Shell 主要借助Spark基础的PPT,再加上实际的动手操作来加强概念的理解和实践. Spark 安装部署 理论已经了解的差不多了,接下来是实际动手实 ...
- Ocelot+Consul 集群搭建实践
博客园已经有很多大神写过consul集群搭建了.大家都在玩,那我也不能托后退呢 不过自己研究下还是好的.毕竟每个人遇到的问题的不同 研究过才能说自己玩过consul,文章有部分名词解释是收集网络 Co ...
- 【实践】Matlab2016a的mdce集群搭建
Matlab R2016a的mdce集群搭建 1.解压文件Matlab_R2016b_win64.iso. 文件下载地址:链接:https://pan.baidu.com/s/1mjJOaHa 密码: ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
- RabbitMQ3.6.3集群搭建+HAProxy1.6做负载均衡
目录 [TOC] 1.基本概念 1.1.RabbitMQ集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服 ...
- RabbitMQ3.6.3集群搭建+HAProxy1.6做负载均衡
目录 目录 1.基本概念 1.1.RabbitMQ集群概述 1.2.软件负载均衡器HAProxy 2.RabbitMQ的配置步骤 2.1.安装 Erlang.RabbitMQ 2.2.修改 /etc/ ...
- 【转】【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
原文地址:http://www.cnblogs.com/baiboy/p/orc8.html 阅读目录 目录 数据库安装 参考文献 相关文章 Oracle 11G RAC数据库安装(八) 概述:写 ...
随机推荐
- Spring Boot认证:整合Jwt
背景 Jwt全称是:json web token.它将用户信息加密到token里,服务器不保存任何用户信息.服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证. 优点 简洁: 可以通过 ...
- 十大排序算法JavaScript实现总结
花费了几周的时间断断续续的练习和模仿与使用JavaScript代码实现了十大排序算法. 里面有每种算法的动图和静态图片演示,看到图片可以自己先按照图片的思路实现一下. github中正文链接,点击查看 ...
- 五、springboot 简单优雅是实现邮件服务
前言 spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写啦. 之前我们配置好mybatis 多数据源的,接下来我们需要做一个邮件服务.比如你注册的时候,需要输入验证码来校 ...
- 【SQL】sql查询同一字段相同属性列的值合计
select type,sum(value) as valueSum from t group by type
- 使用jsr303实现数据校验
除了前端的js验证,服务端也可加入数据验证,springmvc中有两种方式可以验证输入 利用spring自带的验证框架 利用jsr303实现 jsr303实现数据校验 jsr303是java为bean ...
- smp_processor_id()获取当前执行cpu_id
基于Linux 2.6.32内核进行分析,看本篇文章前,建议先看看percpu变量这篇文章 smp_processor_id()用来获取当前cpu的id,首先来看smp_processor_id的定义 ...
- MakaJs:基于 React, Redux 的轻量级前端框架
github: maka.js 留下您宝贵的STAR!谢谢 maka maka源于中文码咖,意为写代码的大咖 一眼即可看懂的前端框架,简约而不简单 1.安装 bash sudo npm i -g @m ...
- Numpy数组操作
""" Numpy 数组操作 修改数组形状 函数 描述 reshape 不改变数据的条件下修改形状 flat 数组元素迭代器 flatten 返回一份数组拷贝,对拷贝所做 ...
- 面试官,不要再问我“Java GC垃圾回收机制”了
Java GC垃圾回收几乎是面试必问的JVM问题之一,本篇文章带领大家了解Java GC的底层原理,图文并茂,突破学习及面试瓶颈. 楔子-JVM内存结构补充 在上篇<JVM之内存结构详解> ...
- 算法学习之剑指offer(三)
题目1 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 如果一个整数不为0,那么这个整数至少有一位是1.如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在 ...