热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从零开始构建一个高可靠的RabbitMq集群(1)

从零开始构建一个高可靠的Rab

第一:主备模式:实现RabbitMq的高可用集群,一般在并发和数量不高的情况下,这种模式非常的好用且简单,主备模式也称之为Warren模式。

主节点挂了,从节点提供服务而已,和activemq利用zookeeper做主备一样。



HaProxy配置:

listen rabbitmq_cluster

bind ip:port 

mode tcp          配置tcp模式

balance  roundrobin     主节点  简单的轮询

server  name1  ip:port     check inter 5000 rist 2 fall 2  主节点

server  name2  ip:port    backup  check inter 5000 rist 2 fall 2  备用节点

备注:rabbitMq集群每隔五秒钟(inter)对rabbitmq集群做健康检查,

2次 正确证明服务器可用,2 次失败证明服务器不可用,并且配置主备机制。


远程模式:

可以实现双活的一种模式,简称Shovel模式,所谓Shovel模式就是我们可以把消息进行不同数据中心的复制工作,我们可以跨地域的让两个mq集群互联。

使用了Shovel插件,模型变成了近端同步确认,远端异步确认的方式,大大提高了订单确认速度,并且还能保证可靠性。



如何操作:

Shovel配置,首先启动rabbitmq插件,命令如下:

rabbitmq-plugins enable ampq-client

tabbitmq-plugins enable rabbitmq_shovel

创建配置文件:

rabbitmq.config文件:touch /etc/rabbitmq/rabbitmq.config

添加配置文件rabbitmq.config

最后我们需要服务器和目的地服务器都使用想通的配置文件

具体配置:www.baidu.com


镜像模式:

集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中也是用的最多的,并且实现集群非常的简单,一般互联网大厂都会用这种镜像模式。

Mirror镜像队列,目的是为了保证rabbitmq数据的高可靠性 解决方案,主要就是实现数据的同步,一般来讲是2-3个节点实现数据同步(对于高可靠性解决方案一般是3个节点)


多活模式:

这种模式也是实现异地复制的主流模式,因为Shovel模式配置比较复杂,所以一般来说实现异地模式都是使用这种双活或者多活模型来实现的。这种模型需要依赖rabbitmq的federation插件,可以实现持续可靠的AMQP数据通信,多活模式在实际配置与应用中非常简单。

(一)

RabbitMq部署架构采用双中心模式(多中心),那么在两套或者多套数据中心部署一套RabbitMq集群,各中心的RabbitMq服务除了需要为业务提供正常的消息服务外,中心之间还需要实现部门队列共享。

Federation是一个不需要构建Cluster,而在Brokers之间传递的高性能插件,Federation插件可以在Brokers或者CLuster之间传递消息,链接的双方可以使用不同的users和 virtual host,双方也可以使用版本不同的RabbitMq和Erlang,Federation插件使用 AMQP协议通讯,可以接受不连续的传输。

 Federation exchange,可以看成下游从上游拉取消息,但并不是拉取所有的消息,必须是在下游已经明确定义绑定关系的exchange,也就是实际的物理queue来接受消息,才会从上游拉取消息到下游,使用AMQP协议实现代理通信,下游将会绑定关系组合在一起,绑定和解绑命令发送到上游交换机,因此,Federation exchange只接受具有订阅消息,官方图片如下:





推荐阅读
  • ZeroMQ在云计算环境下的高效消息传递库第四章学习心得
    本章节深入探讨了ZeroMQ在云计算环境中的高效消息传递机制,涵盖客户端请求-响应模式、最近最少使用(LRU)队列、心跳检测、面向服务的队列、基于磁盘的离线队列以及主从备份服务等关键技术。此外,还介绍了无中间件的请求-响应架构,强调了这些技术在提升系统性能和可靠性方面的应用价值。个人理解方面,ZeroMQ通过这些机制有效解决了分布式系统中常见的通信延迟和数据一致性问题。 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • 分布式消息系统之Kafka集群部署
    kafka是基于发布订阅模式的一个分布式消息队列系统,用java语言研发,是ASF旗下的一个开源项目;类似的消息队列服务还有rabbitmq、activemq、zeromq;kaf ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
    PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
  • 阿里巴巴Java后端开发面试:TCP、Netty、HashMap、并发锁与红黑树深度解析 ... [详细]
  • 顶尖编程语言,无可匹敌的选择
    我常常在想,一个人具备怎样的素质和能力,才称得上高级工程师?估计有不少人会说,“基础过硬、熟练掌握一门编程语言、至少看过一个 ... [详细]
  • 精英荟萃:2019年全球互联网通信云大会讲师阵容揭晓
    随着5G标准的落地和物联网技术的创新应用,通信云正在不断推动着人们日常沟通与协作方式的变革,如何通过技术来引导通信云的持续发展,如何将前沿技术应用落地于各行业场景?近日,全球领先的 ... [详细]
  • 分布式一致性算法:Paxos 的企业级实战
    一、简介首先我们这个平台是ES专题技术的分享平台,众所周知,ES是一个典型的分布式系统。在工作和学习中,我们可能都已经接触和学习过多种不同的分布式系统了,各 ... [详细]
  • 字节Java高级岗:java开发cpu吃多线程吗
    前言抱着侥幸心理投了字节跳动后台JAVA开发岗,居然收到通知去面试,一面下整个人来都是懵逼的,不知道我对着面试官都说了些啥(捂脸~~)。侥幸一面居然过了,三天后接到二面通知,结果这 ... [详细]
  • SpringCloud之Bus(消息总线)
    说明:关于SpringCloud系列的文章中的代码都在码云上面地址:https:gitee.comzh_0209_javaspringcloud-ali ... [详细]
  • Java自学知乎!阿里高级算法专家公开10份资料,涨姿势!
    接口概述:接口是Java语言中的一种引用类型,是方法的集合,所以接口的内部主要就是定义方法,包含常量,抽象方法(JDK ... [详细]
author-avatar
fangziqiang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有