一、前言


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

说到MQ,大家应该都听过,像RabbitMQ,Kfaka,Activemq,rocketmq等,消息队列是一种跨进程的通信机制,主要用于上下游之间传递消息的,主要给我们解决了“应用解耦”、“流量削峰”、“异步通信”等,下图是针对MQ的对比图,如果不完善的地方请海涵:

二、RabbitMQ说明


1、在这么多的MQ中,我为什么选择使用RabbitMQ呢?其实最主要的原因是它是部署最广泛的开源消息代理,有成千上万的用户,社区支持性非常好,支持许多操作系统和云环境上运行,也支持多种消息传递协议,关键还是部署简单,在高并发、高可用中有成熟的方案,详情见官方文档:RabbitMQ

 2、在针对RabbitMQ集群架构方案中,有四种架构模式,主备模式、镜像模式、远程模式、多活模式,每种架构都可以算很实用,在企业中“镜像模式”也是用的最多的,最普遍的。

3、RabbitMQ 六种工作模式

点对点模式(一对一)、工作队列模式、发布订阅模式、路由模式、topics以及RPC模式,下面分别来介绍一下这几种:

A、点对点模式(一对一):主要就是一个生产者对应一个消费者;

B、工作队列模式:即一对多,一个生产者产生的数据可以被多个消费者消费,但各个消费者获取的数据是不一致的,应该消息都是经过一个队列中获取的;

C、发布订阅模式:引入了交换机exchange,生产者产生的数据发布到exchange中,exchange分发到不同的队列中,每一个队列里面的数据都是一模一样的,给多个消费者消费;

D、routing模式:在pub/sub的基础上引入了routingkey的概念,即exchange会按照routingkey把消息分发到不同的队列中,给不同的消费者使用;

E、topics模式:在routing模式的基础上对routingkey 加入了  *  和 #  的概念,*  代表 单字符串匹配,#  代表 多字符串匹配,如 key为 beijing.chaoyang.20200312 =>  *.*.*.20200312 或者 #.20200312 ;

F、RPC模式:针对生产者产生的数据,消费者消费后会给生产者一个反馈,即远程过程调用。

三、RabbitMQ集群架构搭建


1、在做集群搭建的时候我都有一种习惯,就是习惯了先画图,规划处环境,然后才开始部署,如下图,整个集群的构建

主要分为两部分内容:haproxy 集群高可用以及 RabbitMQ集群

A、在haproxy集群架构中主要涉及到haproxy的负载均衡和引入keepalived的VIP实现故障转移和健康检查

B、RabbitMQ集群采用镜像模式来实现数据的同步,由于数据是直接存在mq服务器中,因此为了保证高可靠,则需要搭建3台奇数节点。

2、针对于环境规划图

由于我是本地部署,因此我采用的是本地虚拟机,5台,如果大家电脑配置不是很好,可以起3台虚拟机跑测试即可。

在 rabbitmq安装中需要安装erlang运行环境

大家可以在elang官网以及rabbitmq官网中下载即可

elang官网:https://www.erlang-solutions.com/

rabbitmq官网:https://www.rabbitmq.com/download.html

3、安装完毕后,就可以看到我们的3个节点

 4、目前为止给大家介绍了集群架构图,如果大家想继续深入,可以去看我录制的视频,大家多多支持(扫描二维码,有惊喜)

在此次特殊时期也录制了一期技术课程,只为给大家在升职加薪的道路上提供一份帮助,大家多多关照,如果针对技术视频有bug的,欢迎大家批评指正。

如果有不懂的,可以加下面的QQ群,欢迎咨询

asp.net core 交流群:787464275 欢迎加群交流
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!

作者:LouieGuo
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!

微信公众号:欢迎关注                                                 QQ技术交流群: 欢迎加群

                

RabbitMQ集群架构(HA)并结合.NET Core实操的更多相关文章

  1. RabbitMQ系列(六)你不知道的RabbitMQ集群架构全解

    前言 本文将系统的介绍一下RabbitMQ集群架构的特点.异常处理.搭建和使用中要注意的一些细节. 知识点 一.为什么使用集群? 二.集群的特点 三.集群异常处理 四.集群节点类型 五.集群搭建方法 ...

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

    RabbitMQ集群架构模式 主备模式 实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单.主备模式也称为Warren模式 HaProxy配置 listen r ...

  3. RabbitMQ集群和失败处理

    RabbitMQ内建集群的设计用于完成两个目标:允许消费者和生产者在RabbitMQ节点在奔溃的情况下继续运行,以及通过添加更多的节点来线性扩展消息通信的吞吐量.当失去一个RabbitMQ节点时客户端 ...

  4. rabbitmq集群安装与配置(故障恢复)

    0.首先按照http://www.cnblogs.com/zhjh256/p/5922562.html在至少两个节点安装好(不建议单机,没什么意义) 1.先了解rabbitmq集群架构,http:// ...

  5. 高可用rabbitmq集群服务部署步骤

    消息队列是非常基础的关键服务,为保证公司队列服务的高可用及负载均衡,现通过如下方式实现: RabbitMQ Cluster + Queue HA + Haproxy + Keepalived 3台ra ...

  6. RabbitMQ分布式集群架构和高可用性(HA)

    (一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配置方式 RabbitMQ可以通过三种方法来部署分布 ...

  7. 关于RabbitMQ分布式集群架构

    RabbitMQ分布式集群架构和高可用性(HA) (一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配 ...

  8. openstack controller ha测试环境搭建记录(五)——配置rabbitmq集群

    配置rabbitmq集群的步骤非常简单,因为其本身含集群功能,参考openstack官网文档:http://docs.openstack.org/ha-guide/controller-ha-rabb ...

  9. 集群架构和CentOS7安装RabbitMQ集群(单机版)

    1. 集群架构 1.1 四种内部元数据 队列元数据.交换器元数据.绑定元数据.vhost元数据. 单一节点中:会将数据存储到内存,同时将持久化元数据保存到硬盘. 集群中: 存储到磁盘上.内存中. 集群 ...

随机推荐

  1. ASP.NET Core身份认证服务框架IdentityServer4 介绍

    IdentityServer4是ASP.NET Core 2的OpenID Connect和OAuth 2.0框架.它可以在您的应用程序中提供以下功能: 它使你的应用程序具有如下特点: 认证即服务 适 ...

  2. 内网渗透之信息收集-windows系统篇

    windows 用户相关 query user #查看当前在线的用户 whoami #查看当前用户 net user #查看当前系统全部用户 net1 user #查看当前系统全部用户(高权限命令) ...

  3. 03 Uipath调用VBA脚本,处理excel文档格式

    前言: 在平时我们的工作中,经常需要使用Uipath自动的导入大量数据到Excel表格中,但是却发现,数据导入到Excel之后,格式却是很乱,基本不能看,就像下图: ​ 而Uipath对Excel的操 ...

  4. Effective Go笔记

    一 格式化 使用gofmt程序对go源码进行格式化,以便统一编码风格,可直接在GoLand进行配置[1].Go源码格式使用tab作为缩进,且很少使用括号. 二 注释 Go支持块注释/**/和行注释// ...

  5. .NET实现一个简单的IOC容器

    目录 1.主要细节 2.具体示例 参考及示例代码下载 shanzm-2020年3月17日 20:06:01 1.主要细节 使用反射程序集的方式获取对象的类型 通过反射的方式获取指定类型的的所有公共属性 ...

  6. [BUG]document.body.scrollTop=0不生效(回到顶部)

    描述 让body回滚到最顶部,设置 document.body.scrollTop = 0; . 微信内,安卓设备可以,ios设备不可以.   原因 MDN中 scrollTop是这样定义的 一个元素 ...

  7. 【springboot spring mybatis】看我怎么将springboot与spring整合mybatis与druid数据源

    目录 概述 1.mybatis 2.druid 壹:spring整合 2.jdbc.properties 3.mybatis-config.xml 二:java代码 1.mapper 2.servic ...

  8. Natas16 Writeup(正则匹配,php命令执行)

    Natas16: 源码如下 <? $key = ""; if(array_key_exists("needle", $_REQUEST)) { $key ...

  9. 【简说Python WEB】数据库

    目录 [简说Python WEB]数据库 数据库表 docker安装MySQL Flask-SQLAlchemy操纵MySQL数据库 初始化 定义模型 定义关系 数据库的CRUD操作 创建表 inse ...

  10. 洛谷1074 靶状数独dfs 排序、记录、搜索

    题目网址:https://www.luogu.com.cn/problem/P1074 大意就是在一个9*9的数独中填数,要求行列宫都是九个互不相同的数字,给定一定的得分机制,要求求解最大得分.思路大 ...