RabbitMQ集群架构(HA)并结合.NET Core实操
一、前言
已经一年没有更新博客了,由于公司事务比较多,并且楼主我也积极在公司项目中不断实践.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 欢迎加群交流
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!
微信公众号:欢迎关注 QQ技术交流群: 欢迎加群

RabbitMQ集群架构(HA)并结合.NET Core实操的更多相关文章
- RabbitMQ系列(六)你不知道的RabbitMQ集群架构全解
前言 本文将系统的介绍一下RabbitMQ集群架构的特点.异常处理.搭建和使用中要注意的一些细节. 知识点 一.为什么使用集群? 二.集群的特点 三.集群异常处理 四.集群节点类型 五.集群搭建方法 ...
- rabbitmq系统学习(三)集群架构
RabbitMQ集群架构模式 主备模式 实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单.主备模式也称为Warren模式 HaProxy配置 listen r ...
- RabbitMQ集群和失败处理
RabbitMQ内建集群的设计用于完成两个目标:允许消费者和生产者在RabbitMQ节点在奔溃的情况下继续运行,以及通过添加更多的节点来线性扩展消息通信的吞吐量.当失去一个RabbitMQ节点时客户端 ...
- rabbitmq集群安装与配置(故障恢复)
0.首先按照http://www.cnblogs.com/zhjh256/p/5922562.html在至少两个节点安装好(不建议单机,没什么意义) 1.先了解rabbitmq集群架构,http:// ...
- 高可用rabbitmq集群服务部署步骤
消息队列是非常基础的关键服务,为保证公司队列服务的高可用及负载均衡,现通过如下方式实现: RabbitMQ Cluster + Queue HA + Haproxy + Keepalived 3台ra ...
- RabbitMQ分布式集群架构和高可用性(HA)
(一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配置方式 RabbitMQ可以通过三种方法来部署分布 ...
- 关于RabbitMQ分布式集群架构
RabbitMQ分布式集群架构和高可用性(HA) (一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配 ...
- openstack controller ha测试环境搭建记录(五)——配置rabbitmq集群
配置rabbitmq集群的步骤非常简单,因为其本身含集群功能,参考openstack官网文档:http://docs.openstack.org/ha-guide/controller-ha-rabb ...
- 集群架构和CentOS7安装RabbitMQ集群(单机版)
1. 集群架构 1.1 四种内部元数据 队列元数据.交换器元数据.绑定元数据.vhost元数据. 单一节点中:会将数据存储到内存,同时将持久化元数据保存到硬盘. 集群中: 存储到磁盘上.内存中. 集群 ...
随机推荐
- Python基础-检测密码,一些网站会给密码强加一些规则。
输入一个字符串,检测是否是合法的密码:1)密码必须包含8个字符2)密码只能包含英文字母和数字3)密码至少包含两个数字 首先我讲一下用到的方法 s为字符串 len(s) 求出字符串的长度. list(s ...
- Layabox UI 笔记
1.UI List 官方文档是 https://ldc2.layabox.com/doc/?language=zh&nav=zh-js-3-3-7 通常用List的时候会出现滚动条按钮比例拉 ...
- javascript中的中介者模式——迪米特法则
”迪米特法则“——最少知识原则,不和陌生人说话,就是说,一个对象应当对其他对象有尽可能少的了解.talk only to your immediate friends.初衷是:降低对象之间的耦合度. ...
- 基于springcloud框架搭建项目-Eureka篇(一)
springcloud项目近年来算是很流行的了,不少公司项目目前都用到了,毕竟优点很多,刚好公司项目用到了,根据自己的理解,简单搭建一下,以便以后学习 这里简单的介绍一下它: SpringCloud, ...
- 15 Spring Data JPA概述
Spring Data JPA 概述 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和 ...
- [pdo_mysql.lo] Error 1 或者 [php_mysql.lo] Error 1
make: *** [pdo_mysql.lo] Error 1 make: *** [php_mysql.lo] Error 1 这是因为这是因为在编译时需要 MySQL 的头的文件.而它按默认搜索 ...
- 关于form表单:hover没有修改表单子元素样式
原来在写todolist的时候遇到的一个问题 是关于form表单的hover属性设置背景颜色 想要实现的效果如下: 但是一开始直接给form加hover选择器的时候是这样: 可以看到这样子直接加会使得 ...
- socket TCP 从0实现音频传输 ALSA 播放
RTP标准是采用 UDP 发送,有不少现成的开源库,但不在本文讨论的范围内.UDP 用户数据报,不提供流程,安全传输的功能,但速度快,能提供多播,广播,没有序列号 SEQ ,有 MTU 限制,1500 ...
- Excel之在单元格中生成随机密码
公式 =CHAR(INT(RAND()*26+97))&INT(RAND()*10)&CHAR(INT(RAND()*26+97))&INT(RAND()*10) 分析 CHA ...
- 2020年启蒙及小学识字练字APP或小程序测评榜
语文教学改革后,小学识字练字方面显得越来越重要.而市场上大大小小的识字练字应用琳琅满目,不同的定位,不同的核心功能,不同的费用.应该怎么选呢? 本篇将从多个角度对主流识字练字应用进行评测,评估对象为主 ...