ActiveMq学习⑨__基于zookeeper和LevelDB搭建ActiveMQ集群

引入消息中间件后如何保证其高可用?
基于zookeeper和LevelDB搭建ActiveMQ集群。集群仅提供主备方式的高可用集群功能,避免单点故障
http://activemq.apache.org/masterslave
在这里插入图片描述
LevelDB,5.6版本之后推出了LecelDB的持久化引擎,它使用了自定义的索引代替常用的BTree索引,其持久化性能高于KahaDB,虽然默认的持久化方式还是KahaDB,但是LevelDB可能会是趋势。
在5.9版本还提供了基于LevelDB和Zookeeper的数据复制方式,作为Master-Slave方式的首选数据复制方案。

Zookeeper+LevelDB的Master-Slave

从ActiveMQ5.9开始,ActiveMQ的集群实现方式取消了传统的Masster-Slave方式。增加了基于Zookeeper+LevelDB的Master-Slave实现方式,从5.9版本后也是官网的推荐。
基于Zookeeper和LevelDB搭建ActiveMQ集群,集群仅提供主备方式的高可用集群功能,避免单点故障。
官网:http://activemq.apache.org/replicated-leveldb-store

Replicated LevelDB Store使用Apache ZooKeeper从一组配置为复制LevelDB存储的代理节点中选择一个master。然后将所有从LevelDB存储与主机同步,通过从主机复制所有更新来保持它们的最新状态。
Replicated LevelDB Store使用与LevelDB存储相同的数据文件,因此您可以随时在已复制和未复制之间切换代理配置。

官网集群原理图

在这里插入图片描述
节点仲裁是什么
ActiveMQ节点仲裁是指在ActiveMQ集群中,当某个节点失效时,其他节点需要通过选举产生一个新的主节点来保证集群的正常运行。
集群中仲裁节点的作用
节点仲裁的作用是确保集群中只有一个主节点,避免出现多个主节点导致消息重复消费或消息丢失等问题。节点仲裁通常是通过ZooKeeper来实现的,ZooKeeper会监控ActiveMQ集群中各个节点的状态,并在节点失效时进行选举产生新的主节点。

说明:
使用Zookeeper集群注册所有的ActiveMQ Broker但`只有其中一个Broker可以提供服务,它将被视为Master,其他的Broker处于待机状态被视为Slave。
如果Master因故障而不能提供服务,Zookeeper会从Slave中选举出一个Broker充当Master。Slave连接Master并同步他们的存储状态,Slave不接受客户端连接。所有的存储操作都将被复制到连接至Maste的Slaves。
如果Master宕机得到了最新更新的Slave会变成Master。故障节点在恢复后会重新加入到集群中并连接Master进入Slave模式。

所有需要同步的消息操作都将等待存储状态被复制到其他法定节点的操作完成才能完成。
所以,如给你配置了replicas=3,name法定大小是(3/2)+1 = 2。Master将会存储更新然后等待(2-1)=1个Slave存储和更新完成,才汇报success,至于为什么是2-1,阳哥的zookeeper讲解过自行复习。
有一个node要作为观察者存在。当一个新的Master被选中,你需要至少保障一个法定node在线以能够找到拥有最新状态的node,这个node才可以成为新的Master。

因此,推荐运行至少3个replica nodes以防止一个node失败后服务中断。

部署规划和步骤

警告

LevelDB已经被官方废弃,不再受到支持。这是因为LevelDB的维护者已经不再维护该项目,而且LevelDB在某些情况下可能会出现数据损坏的问题。因此,官方建议使用更稳定的存储引擎,例如JDBC或KahaDB。但是我们还要学习
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/182001.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Windows-软件-FFmpeg】(01)通过CMD运行FFmpeg进行操作,快速上手

前言 通过"cmd"运行"ffmpeg"进行操作,快速上手; 实操 【实操一】 说明 使用"ffmpeg"来合并音频文件和视频文件 ; 环境 Windows 11 专业版(22621.2428); 代码 &#xf…

【入门Flink】- 04Flink部署模式和运行模式【偏概念】

部署模式 在一些应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求。Flink为各种场景提供了不同的部署模式,主要有以下三种:会话模式(Session Mode)、单作业模式(Per-Job Mode&…

ArcGIS for Android 禁止地图旋转

ArcGIS for Android 禁止地图旋转 话不多说,直接上代码!!! public class LoadMap extends AppCompatActivity {// 地图private MapView mapView;private ArcGISMap map;Overrideprotected void onCreate(Bundle savedInstanceSta…

如何搭建低成本亚马逊aws云服务器

0. 环境 win10 火狐浏览器 1. 登录 https://aws.amazon.com/cn/ -> 登录 -> 根用户 -> ********, **** 如果未有,需要注册,去年我注册的,麻烦之处是需要添加信用卡。可以淘宝aws搜索商家帮忙处理。 2. 控制台 在控制台主页&…

ZZ038 物联网应用与服务赛题第I套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (I卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用的各类软件工…

微服务之初始微服务

文章目录 一、服务架构演变1.单体架构2.分布式架构 二、认识微服务三、总结四、微服务技术对比五、SpringCloud注意 一、服务架构演变 1.单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。 优点: 架构简单部署成本…

Kubernetes Dashboard 用户名密码方式登录

Author:rab 前言 为了 K8s 集群安全,默认情况下 Dashboard 以 Token 的形式登录的,那如果我们想以用户名/密码的方式登录该怎么操作呢?其实只需要我们创建用户并进行 ClusterRoleBinding 绑定即可,接下来是具体的操作…

开源 Wiki 软件 wiki.js

wiki.js简介 最强大、 可扩展的开源Wiki 软件。使用 Wiki.js 美观直观的界面让编写文档成为一种乐趣!根据 AGPL-v3 许可证发布。 官方网站:https://js.wiki/ 项目地址:https://github.com/requarks/wiki 主要特性: 随处安装&a…

NVIDIA-SMI has failed because it couldn“t communicate with the NVIDIA driver .

文章目录 报错原因分析解决办法防患于未然 报错 执行nvidia-smi报错 NVIDIA-SMI has failed because it couldn"t communicate with the NVIDIA driver . Make sure that the atest NVIDIA driver is installed and running.运行使用gpu的docker容器时 NVIDIA Docker …

这款AI-3D模型实现了无数人的建模梦

hi,同学们,本期是第25期AI生产力工具教程 别说各位,连我也不敢信,现在制作3D模型比泡杯奶茶的时间还要快! 最近发现了一个天花板级的图片生成3D模型的AI工具——Artefacts.Ai,喂1张图片,就能创…

ADS安装问题

1、已有老版本,需要安装新版本,自动跳过证书安装目录设置 解决办法(ADS2019-2023版本都适用): ADS2019安装细节以及需要避免的坑 2、安装报错 解决办法,删除C盘里面的隐藏文件Zero G Registry&#xff1…

圣杯布局/双飞翼布局/flex/grid等,实现CSS三栏自适应布局的几种方法

简介 三栏布局是网页设计中常用的布局,即网页中的内容被分为三块:左侧/中间/右侧。其中两侧部分宽度固定,中间部分宽度自适应的根据浏览器宽度撑满剩余空间。而三栏布局也有很多变形,比如两栏或者N栏布局,上中下三栏布…

分布式单元化

一 分布式单元化 1.1 两地三中心 顾名思义,两地指的是两个城市:同城,异地。三中心指的是三个数据中心:生产中心、同城容灾中心、异地容灾中心。 在同一个城市或者临近的城市建设两个相同的系统,双中心具备相当的业…

C++之set/multiset 和 map/multimap的使用

关联式容器 在初阶阶段,我们已经接触过STL中的部分容器: 比如:vector、list、deque、forward_list(C11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。 今天要了解的几个容器称为关联式容器: 关联式容器也是用来…

C/C++网络编程基础知识超详细讲解第三部分(系统性学习day13)

懒大王感谢大家的关注和三连支持~ 目录 前言 一、并发服务器 1.进程并发服务器 实例代码如下: 2.线程并发服务器 实例代码如下: 二、域通信 域通信TCP实例代码如下: 三、广播与组播(UDP) 1.广播 实例代码如下: …

《向量数据库指南》——开源框架NVIDIA Merlin 向量数据库Milvus

NVIDIA Merlin & Milvus 推荐系统 pipeline 中至关重要的一环便是为用户检索并找到最相关的商品。为了实现这一目标,通常会使用低维向量(embedding)表示商品,使用数据库存储及索引数据,最终对数据库中数据进行近似最近邻(ANN)搜索。这些向量表示是通过深度学习模型获…

STM32单片机在线升级,手机在线升级STM32单片机,固件远程下载方法,局域网在线程序下载

STM32单片机,是我们最常见的一种MCU。通常我们在使用STM32单片机都会遇到程序在线升级下载的问题。 STM32单片机的在线下载通常需要以下几种方式完成: 1、使用ST提供的串口下载工具,本地完成固件的升级下载。 2、自行完成系统BootLoader的编写…

使用阿里云服务器,httplib库在listen过程中,出现Cannot assign requested address错误???

今天,在做一个小项目的时候,使用httplib库进行建立tcp连接,但是一旦程序开始,并没有等待tcp连接的到来,而是直接结束了。 打印一下strerror(errno) 根本就没有进行客户端的连接。 找了一下午,检测是否…

大数据毕业设计选题推荐-收视点播数据分析-Hadoop-Spark-Hive

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

javaee实验:搭建maven+spring boot开发环境,开发“Hello,Spring Boot”应用

目录 mavenspringboot实验目的实验内容环境的搭建 在开发中,maven和spring都是非常常用、非常重要的管理工具和框架,今天就在这里使用idea进行环境的搭建和创建第一个spring程序 maven 1.1maven是一个跨平台的项目管理工具(主要管理jar包&am…