rabbitmq系统学习(三)集群架构

RabbitMQ集群架构模式

主备模式

  1. 实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单。主备模式也称为Warren模式
  2. HaProxy配置
listen rabbitmq_cluster
bind 0.0.0.0:5672 # 配置TCP模式
mode tcp #简单的轮询
balance roundrobin #主节点
server bhz76 192.168.11.76:5672 check inter 5000 rise 2 fall 3
server bhz77 192.168.11.77:5672 backup check inter 5000 rise 2 fall 3 # 备用节点
# 备注: rabbitmq集群节点配置 #inter 每隔五秒对mq集群做健康检查,2次正确证明服务器可用,3次失败证明服务器不可用,并且配置主备机制

远程模式

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

镜像模式(用的最多)

  1. 集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中用的最多。并且实现集群非常的简单

异地多活模式

  1. 实现异地数据复制的主流模式,需要依赖rabbitmq的federation插件
  2. 采用双中心模式,需要在两套或多套数据中心各部署一套RabbitMQ集群,各中心RabbitMQ服务除了需要为业务提供正常的消息服务外,中心之间还需要实现部分队列消息共享

安装

  1. /etc/hostname 取名
  2. 复制/var/lib/rabbitmq/.erlang.cookie 文件到每台服务器
  3. rabbitmq-server -detached
  4. rabbitmqctl stop_app
  5. rabbitmqctl join_cluster --ram [email protected] #主机名,ram内存方式存储,模式磁盘方式
  6. rabbitmqctl start_app
  7. 移除节点 rabbitmqctl forget_cluster_node [email protected]
  8. 修改集群名称 rabbitmqctl set_cluster_name rabbitmq_cluster1
  9. 查看集群状态 rabbitmqctl cluster_status

Haproxy

  1. 高可用负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机。
  2. 单进程,时间驱动模型显著降低了上下文切换的开销以及内存占用
  3. 在任何可用的情况下,单缓冲机制能以不复制任何数据的方式完成读写操作,这会节约大量的CPU时钟周期及内存宽带

KeepAlived

  1. 通过VRRP协议实现高可用功能,VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,它的出现目的是为了解决静态路由单点故障问题,它能够保证党个别节点宕机时,整个网络可以不间断地运行,所以,Keepalived一方面具有配置管理LVS负载均衡的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可以实现系统网络服务的高可用功能

延迟插件

  1. 消息的延迟推送、定时任务(消息)的执行。包括一些消息重试策略的配置使用,以及用于业务削峰限流、降级的异步延迟消息机制,都是延迟队列的实际应用场景
  2. rabbitmq插件库地址

    www.rabbitmq.com/community-plugins.html

  3. 下载插件rabbitmq_delayed_message_exchange

互联网大厂SET架构

BAT/TMD大厂单元化架构设计衍变

  1. 单个大型分布式体系的集群,通过加机器+集群内部拆分(kv/mq、Mysql等),虽然具备一定的可扩展性,但是随着业务量的进一步增长,整个集群规模逐渐变得巨大,从而会在某个点上达到瓶颈,无法满足扩展性需求,并且大集群内核心服务出现问题,会影响全网所有用户
  2. 如滴滴打车、美团外卖,订单量巨大,每天上2000w,会面临以下问题
    1. 容灾问题
    2. 资源扩展问题
    3. 大集群拆分问题
  3. 同城“双活”架构
  4. 两地三中心架构
  5. SET化方案目标
    • 业务:解决业务遇到的扩展性和容灾等需求,支撑业务的高速发展
    • 通用性:架构侧形成统一通用的解决方案,方便各业务接入使用

SET化架构策略

  1. SET化架构设计

  2. 流量路由
    • 按照特殊的key(通常为userid)进行路由,判断某次请求该路由到中心集群还是单元化集群;
  3. 中心集群:
    • 未进行单元化改造的服务(通常不在核心交易链路,比如供应链系统)称为中心集群,跟当前架构保持一致
  4. 单元化集群:
    • 每个单元化集群只负责本单元内的流量处理,以实现流量拆分以及故障隔离
    • 每个单元化集群,前期只储存本单元产生的交易数据,后续会做双向数据同步,实现容灾切换需求
  5. 中间件(RPC、KV、MQ等):
    • RPC:对于SET服务,调用封闭在SET内;对于非SET服务,沿用现有路由逻辑
    • KV:支持分SET的数据生产和查询
    • MQ:支持分SET的消息生产和消费
  6. 数据同步:
    • 全局数据(数据量小且变化不大,比如商家的菜品数据)部署在中心集群,其他单元化集群同步全局数据到本单元化内
    • 未来演变为异地多活架构时,各单元化集群数据需要进行双向同步来实现容灾需要
  7. 集装箱式扩展
    • SET的封装性支持更灵活的部署扩展性,比如SET一键创建/下线,SET一键发布等
  8. SET化架构图

未完待续...

原文地址:https://www.cnblogs.com/sky-chen/p/10035395.html

时间: 2024-10-04 07:08:59

rabbitmq系统学习(三)集群架构的相关文章

Linux服务器企业集群架构部署搭建(一)----环境配置要求与系统基础优化

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 本文作者:燁未央_Estelle版权声明:测试学习,不足之处,欢迎指正.允许转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明 第一章 集群架构搭建部署目标1.1 本次架构部署配置概况提示,本次集群架构所使用的服务器均为VM虚拟机进行模拟搭建测试及学习. ①两台linux服务器作为负载均衡服务器(LVS-01/LVS-02),基本模式:LVS-DR+keepalived.负责分发所

Linux服务器集群架构部署搭建(三)NFS文件系统、SSH、批量分发管理、实时同步(2)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第四章 部署配置inotfiy+rsync实时同步 4.1 实时同步inotfiy+rsync的操作步骤 ①备份服务器[email protected]运行rsync进程作为rsync的服务端.NFS作为rsync的客户端. ②在备份服务器安装并正常启动rsync进程服务.并设置修改配置文件.实现远程拉取.推送备份. ③在客户端N

RabbitMQ分布式集群架构

RabbitMQ分布式集群架构和高可用性(HA) https://blog.csdn.net/woogeyu/article/details/51119101 (一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配置方式 RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovel cluster: 不支持跨网段,用于同一个网段内的局域网 可以随意的

你不知道的RabbitMQ集群架构全解

RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchange介绍与实践 RabbitMQ事务和Confirm发送方消息确认--深入解读 使用Docker部署RabbitMQ集群 你不知道的RabbitMQ集群架构全解 前言 本文将系统的介绍一下RabbitMQ集群架构的特点.异常处理.搭建和使用中要注意的一些细节. 知识点 一.为什么使用集群? 二.集群的特点 三.集群异常处理 四.集群节点类型 五.集群

Linux服务器企业集群架构部署搭建(二)----linux系统基础脚本优化、内核优化

第四章 linux系统内核优化相关 参考文章: linux内核TCP相关参数解释 http://os.chinaunix.net/a2008/0918/985/000000985483.shtml linux内核参数优化 http://blog.chinaunix.net/uid-29081804-id-3830203.html linux内核调整和内核参数详解 http://blog.csdn.net/cnbird2008/article/details/4419354 linux运维老男孩培

RabbitMQ集群架构(HA)并结合.NET Core实操

原文:RabbitMQ集群架构(HA)并结合.NET Core实操 一.前言 已经一年没有更新博客了,由于公司事务比较多,并且楼主我也积极在公司项目中不断实践.net core.DDD以及Abp vnext,也积累了一些吐血经验,目前我在做一家在线教育公司负责智慧校园业务,所涉及到的数据一天达上百万,并且还需要对这些并发数据进行解析转化,在此次的过程中也涉及到了使用RabbitMQ进行业务的解耦和流量削峰来应对如此大量的请求:过程是痛苦的,但结果是美好的. 说到MQ,大家应该都听过,像Rabbi

MongoDB分片存储的集群架构实现

MongoDB分片存储的集群架构实现 如果需要存储大量数据,或者系统的读写吞吐量很大的时候,单个server就很难满足需求了.这个时候我们可以使用MongoDB的分片机制来解决这些问题. 分片的基本概念 分片(sharding)是一种水平扩展(horizontal scaling)的方式,把一个大的数据集分散到多个片服务器上,所有的片服务器将组成一个逻辑上的数据库来存储这个大的数据集.分片对用户(应用层)是透明的,用户不会知道数据很被存放到哪个片服务器上. 这种方式有两个好处: 分片之后,每个片

Galera Cluster——一种新型的高一致性MySQL集群架构

原文链接:https://www.sohu.com/a/147032902_505779,最近被分配定位mysql的问题,学习下. 1. 何谓Galera Cluster 何谓Galera Cluster?就是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster及MariaDB Cluster,都是基于Galera的,所以这里都统称为Galera Cluster了,

搭建 RabbitMQ Server 高可用集群

阅读目录: 准备工作 搭建 RabbitMQ Server 单机版 RabbitMQ Server 高可用集群相关概念 搭建 RabbitMQ Server 高可用集群 搭建 HAProxy 负载均衡 因为公司测试服务器暂不能用,只能在自己电脑上重新搭建一下 RabbitMQ Server 高可用集群,正好把这个过程记录下来,以便日后查看. 公司测试服务器上的 RabbitMQ 集群,我搭建的是三台服务器,因为自己电脑空间有限,这边只能搭建两台服务器用作高可用集群,用的是 Vagrant 虚拟机