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元数据. 单一节点中:会将数据存储到内存,同时将持久化元数据保存到硬盘. 集群中: 存储到磁盘上.内存中. 集群 ...
随机推荐
- Mac笔记本使用小道解答集
如何设置Mac默认应用程序 https://www.jianshu.com/p/0f912e6c846c 苹果本安装微软雅黑 下载微软雅黑字体Mac版 解压.ttf 拖拽放入 我的电脑/资源库/fon ...
- 数据结构 5 哈希表/HashMap 、自动扩容、多线程会出现的问题
上一节,我们已经介绍了最重要的B树以及B+树,使用的情况以及区别的内容.当然,本节课,我们将学习重要的一个数据结构.哈希表 哈希表 哈希也常被称作是散列表,为什么要这么称呼呢,散列.散列.其元素分布较 ...
- 鸡汤 & 毒鸡汤
1.别低估任何人. 2.你没那么多观众,别那么累. 3.温和对人对事.不要随意发脾气,谁都不欠你的. 4.现在很痛苦,等过阵子回头看看,会发现其实那都不算事. 5.和对自己有恶意的人绝交.人有绝交,才 ...
- Vue2.0 【第一季】第7节 v-bind指令
目录 Vue2.0 [第一季] 第7节 v-bind指令 第7节 v-bind指令 v-bind缩写 绑定CSS样式 Vue2.0 [第一季] 第7节 v-bind指令 第7节 v-bind指令 v- ...
- Vue2.0 【第四季】第1节 实例入门-实例属性
目录 Vue2.0 [第四季]第1节 实例入门-实例属性 第1节 实例入门-实例属性 一.Vue和Jquery.js一起使用 二.实例调用自定义方法 Vue2.0 [第四季]第1节 实例入门-实例属性 ...
- 029.核心组件-Controller Manager
一 Controller Manager原理 1.1 Controller Manager概述 一般来说,智能系统和自动系统通常会通过一个"控制系统"来不断修正系统的工作状态.在K ...
- vue基础----自定义组件directive ,bind,update,insert
<div id="app"> <input type="text" v-limit.3="msg" v-focus> ...
- 《Linux环境进程间通信》系列文章链接
深刻理解 Linux 进程间通信(IPC) http://www.ibm.com/developerworks/cn/linux/l-ipc/index.html Linux 环境进程间通信(一): ...
- PLINQ 并行操作Linq
C#并行编程-PLINQ:声明式数据并行 目录 C#并行编程-相关概念 C#并行编程-Parallel C#并行编程-Task C#并行编程-并发集合 C#并行编程-线程同步原语 C#并行编程-P ...
- mysql索引查找原理及优化
常见查找方法 1.顺序查找(linear search ) 1. 最基本的查询算法当然是顺序查找(linear search),也就是对比每个元素的方法,不过这种算法在数据量很大时效率是极低的. 2. ...