在IT领域中,构建高性能且高可用的消息队列是一项关键任务,特别是在现代分布式系统中。本文档聚焦于如何通过结合Zookeeper、Apache ActiveMQ和Google LevelDB来实现这一目标。首先,让我们来看看这三种技术的作用。 Zookeeper作为Hadoop的子项目,是一个可靠的分布式协调服务,主要用于简化分布式系统的配置管理、命名服务、分布式同步和组服务等功能。它的主要目标是提供一个用户友好的接口,背后是高效且稳定的分布式服务支撑。许多分布式开源项目,如Kafka、HBase和Solr,都选择使用Zookeeper进行协调。 ActiveMQ是Apache开发的一款流行的消息总线,遵循JMS(Java Message Service)1.1和J2EE(Java 2 Enterprise Edition)1.4标准,具有强大的功能和广泛的兼容性。传统上,消息服务器会依赖于关系型数据库来持久化消息,但性能瓶颈往往存在。新版的ActiveMQ引入了LevelDB,这是一种由Google工程师开发的NoSQL分布式缓存,特别适合高写入性能场景,可以处理大规模的键值对数据。 LevelDB作为LevelDB项目的产物,它简化了Bigtable(HBase前身)中的TabletServer角色,专注于高效的键值存储。它的设计初衷是为了应对十亿级规模的数据存储需求,提供了极高的写入性能。在ActiveMQ中,集成LevelDB可以显著提升消息的持久化速度和可靠性。 构建高可用的消息队列时,Zookeeper的角色至关重要。通过Zookeeper,可以实现ActiveMQ集群的主备切换和容灾恢复。一个典型的配置方案可能涉及三个Zookeeper节点,奇数节点数量有助于提高容错性,如三节点可以容忍单点故障,五节点可容忍两台故障。这样的架构确保即使在部分节点宕机的情况下,消息队列服务仍能继续运行,提供连续性和稳定性。 利用Zookeeper的分布式协调能力、ActiveMQ的JMS支持和LevelDB的高性能存储,可以有效地搭建一个高性能、高可用的消息队列系统。这对于分布式应用和微服务架构中的消息传递至关重要,能够保证系统的可靠性和扩展性。
异步消息服务器 为了保证消息的可靠性 就需要持久化消息 曾经可以通过jdbc的方式持久化消息到关系型数据库
但是关系型数据库的读写性能往往成为消息服务器的拼接 现在新版的activemq支持google的nosql 分布式缓存leveldb(超高性能的写操作)
通过zookeeper来做分布式协调 可以支持activemq集群的主备自动切换和容灾性
zookeeper与activemq最新存储replicatedLevelDB整合
zookeeper介绍:ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。几乎所有的分布式开源项目都是用zookeeper来做分布式协调的
比如 Apache kafka,hbase,solr 等等
leveldb介绍:LevelDb就是google两位大神级别的工程师发起的开源项目,简而言之,LevelDb是能够处理十亿级别规模Key-Value型数据持久性存储的C++ 程序库。
作者两位大神是Bigtable(hbase 就是从bigtable演化来的)的设计和实现者,如果了解Bigtable或hbase的话,应该知道在这个影响深远的分布式存储系统中有两个核心的部分:
Master Server和Tablet Server。其中Master Server做一些管理数据的存储以及分布式调度工作,实际的分布式数据存储以及读写操作是由Tablet Server完成的,
而LevelDb则可以理解为一个简化版的Tablet Server。
ActiveMQ:是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现
安装和部署 zookeeper+activemq+leveldb
zookeeper安装
下载 zookeeper http://zookeeper.apache.org/releases.html
要想实现容灾性 至少需要3个zookeeper节点 最好奇数的节点 因为3台和4台效果是一样额
这种配置方案能够实现(n-1)/2的容错率,也就是三台服务器允许挂一台,五个能当掉2个,依次类推。
假设有3个zookeeper集群
例子可以在同一台机器上 机器多的情况下 再3个不同的服务器上即可
下载tar.gz包
在 /conf/下新增 zoo.cfg 文件 输入以下内容 配置项可上网查
#心跳检测时间
tickTime=2000
initLimit=10
syncLimit=5
#数据目录
dataDir=/zookeeper/data1
dataLogDir=/zookeeper/log1
clientPort=2181
#zookeeper集群列表
server.1=192.168.1.49:2888:3888
server.2=192.168.1.49:2988:3988
server.3=192.168.1.49:2898:3898
另外两个zookeeper的 zoo.cfg也一样配置 只是 dataDir和dataLogDir 路径记得改一下
注意:在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,
则myid文件中就输入这个数字,例如:
echo "1" > /zookeeper/zoo1/myid
echo "2" > /zookeeper/zoo2/myid
echo "3" > /zookeeper/zoo3/myid
启动3个zookeeper
/zookeeper/zoo1/bin/zkServer.sh start
/zookeeper/zoo2/bin/zkServer.sh start
/zookeeper/zoo3/bin/zkServer.sh start
剩余10页未读,继续阅读
- 粉丝: 4
- 资源: 47
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦