`
wbj0110
  • 浏览: 1602632 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

高可用配置(异步复制和同步复制)-metaq

阅读更多

介绍

Meta相比于kafka的一个重要特性就是消息高可用方案的实现,我们称之为HA方案。消息在发送到broker之后立即写入磁盘才返回客户端告诉消息生产者消息发送成功,通过unflushThresholdunflushInterval两个参数的控制,可以保证单机消息数据的安全性,只要机器的磁盘没有永久损坏,消息总可以在重启后恢复并正常投递给消费者们。但是,如果遇到了磁盘永久损坏或者数据文件永久损坏的情况,那么该broker上的消息数据将可能永久丢失。为了防止这种情况的发生,一个可行的方案就是将消息数据复制到多台机器,类似mysql的主从复制功能。

同步复制和异步复制

meta提供类似mysql主从复制的异步复制和同步功能,分别对应不同的可靠级别。理论上说同步复制能带来更高的可靠级别,异步复制因为延迟的存在,可能会丢失极少量的消息数据,相应地,同步复制会带来性能的损失,因为要同步写入两台甚至更多的broker机器上才算写入成功。

在实际实践中,我更推荐采用异步复制的架构,因为异步复制的架构相对简单,并且易于维护和恢复,对性能也没有影响。而同步复制对运维要求相对很高,机制复杂容易出错,故障恢复也比较麻烦。异步复制加上磁盘做磁盘阵列,足以应对非常苛刻的数据可靠性要求。

异步复制配置

假设你已经配置了一台broker服务器,并且配置了一个topic为test,现在你希望test能复制到另一台slave broker上来保证消息数据的高可用。你可以这样做:

1.首先,你需要部署一个新的broker,配置server.ini从master broker拷贝一份。

2.其次,配置slave文件。编辑conf/async_slave.properties:

#slave编号,大于等于0表示作为slave启动,同一个master下的slave编号应该设不同值.
slaveId=0

#作为slave启动时向master订阅消息的group,如果没配置则默认为meta-slave-group
#不同的slaveId请使用不同的group
slaveGroup=meta-slave-group

#slave数据同步的最大延时,单位毫秒  
slaveMaxDelayInMills=500

#是否自动从master同步server.ini, 1.4.2新增选项
#第一次仍然需要自己拷贝server.ini,后续可以通过设置此选项为true来自动同步
autoSyncMasterConfig=true

配置参数的含义请自己看注释。可见,一个master可以复制到多个slave。

3.执行下列命令启动slave:

bin/metaServer.sh start slave

4.第一次复制因为需要跟master完全同步需要耗费一定时间,你可以在数据文件的目录观察复制情况。

5.请注意,异步复制的slave将参与消费者的消费活动,消息消费者可以从slave中获取消息并消费,消费者会随机从master和slaves中挑选一台作为消费broker。

6.请注意,从1.4.2开始,可以通过autoSyncMasterConfig选项配置是否自动同步master的server.ini到异步复制的slave上,当master的server.ini文件变更并通过bin/metaServer.sh reload之后,slave将监控到这一变更并自动同步。

异步复制的局限

  • 异步复制有延迟,虽然可以通过设定slaveMaxDelayInMills来控制延迟。

异步复制的故障处理

  • Master永久故障: 将slave作为master启动,去除启动参数中的slave即可,也就是metaServer.sh restart
  • Slave永久故障: 启动新的broker并配置作为master新的slave启动。
  • 来自淘宝
分享到:
评论

相关推荐

    metaq-server-1.4.6.2.tar.gz

    其在阿里巴巴的实践证明,MetaQ在高并发、高可用的场景下表现出色,值得开发者深入学习和应用。通过了解和掌握MetaQ的特性和使用,我们可以更好地设计和优化分布式系统,提升系统的稳定性和效率。

    Metaq原理与应用

    Metaq 是一种高性能、高可用的消息中间件,其设计灵感来源于 Kafka,但并不严格遵循任何特定的规范,如 JMS(Java Message Service)或 CORBA Notification 规范。Metaq 提供了丰富的特性来解决 Messaging System 中...

    MetaQ 分布式消息服务中间件.pdf

    综上所述,MetaQ分布式消息服务中间件在架构设计上采用了分布式和高可用性的关键设计,其包含的特性如消息过滤、消息持久化、以及多种消息复制模式都是为了满足现代分布式系统对于消息队列服务的高性能、高可靠性和...

    Metaq详细手册.docx

    - **高可用方案**:采用Master/Slave异步和同步复制策略,确保服务的高可用性。 - **广播消息**:提供了专门的客户端实现,支持广播消息的发送。 - **事务支持**:兼容JTA(Java Transaction API),支持本地事务...

    支付宝钱包系统架构内部剖析(架构图)

    - **高可用复制**:MetaQ提供了异步复制和同步复制两种模式,确保即使在发生故障的情况下,消息仍然能够得到可靠的传递。 - **灵活的offset存储**:除了常见的数据库存储方式外,MetaQ还支持磁盘存储、Zookeeper存储...

    【系统架构】最全最强解析:支付宝钱包系统架构内部剖析(架构图).docx

    4. 支持HA复制,包括异步复制和同步复制,保证消息的可靠性 5. 支持异步发送消息 6. 消费消息失败,支持本地恢复 7. 多种offset存储支持,数据库、磁盘、zookeeper,可自定义实现 8. 支持group commit,提升数据可靠...

    阿里rocketMQ

    RocketMQ提供了同步和异步两种发送模式,同步模式确保消息被成功发送,而异步模式则提高了消息发送的性能。 2. **Consumer**:消费者是消息的接收方,可以从RocketMQ Broker拉取或订阅消息。消费者有两种消费模式:...

    开源MQ技术介绍

    - **高可用性**:支持主从切换、故障转移等机制来保证服务的连续性和数据的完整性。 - **扩展性**:能够支持多种协议、接入方式和自定义策略。 - **可管理性**:提供监控、管理和配置的功能,便于运维团队操作。 ##...

    RocketMQ学习文档

    1. **RocketMQ简介**:RocketMQ是由阿里巴巴开源的一款高可用、高性能的消息中间件,它最初是基于Metaq发展而来,经过不断的优化和迭代,现已成为Apache顶级项目。RocketMQ的设计目标是提供低延迟、高吞吐量以及强大...

    rocketmq-note.pdf

    RocketMQ在微服务、流计算、物联网(IoT)、异步解耦、数据同步等多个场景下有广泛应用,其商业版本Aliware MQ在阿里巴巴云上提供了更全面的服务和支持。 总而言之,RocketMQ是一款强大的消息中间件,它通过提供消息...

    分布式消息引擎Apache RocketMQ最佳实践

    - **数据同步**:实现数据库之间的异步数据同步,提高数据的一致性和完整性。 - **实时计算**:配合流处理框架如Apache Flink或Apache Spark Streaming,进行实时数据分析和处理。 ##### 3.2 最佳实践 - **合理...

    Aliware-MQ培训资料

    消息中间件的原理可以概括为同步用户请求和异步用户请求两个方面,通过引入消息中间件,可以实现分布式、异步、解耦和削峰填谷等目标。 #### 二、消息中间件原理 消息中间件原理涉及的JMS模型,其包含两种主要模式...

    阿里RocketMQ用户指南V3.2.4.pdf

    在消息持久化方面,RocketMQ提供了高度灵活的配置选择,支持同步刷盘和异步刷盘两种方式,以适应不同的业务需求。消息的可靠性保证分为至少一次和确保一次两种模式,确保消息不会因为任何原因丢失。 知识点五:高...

    kafka入门介绍

    与其他消息系统相比,如RabbitMQ、Redis、ZeroMQ、ActiveMQ、MetaQ/RocketMQ等,卡夫卡具有高性能跨语言的分布式发布/订阅消息系统的特性,支持数据持久化,具有完全分布式的特性,并能够同时支持在线和离线处理。...

    RocketMQ原理简介

    在消息传递过程中,RocketMQ通过不同的刷盘策略保证消息的持久性,如异步刷盘和同步刷盘。当Broker的Buffer满了的时候,可以通过流控和消息压缩等机制来处理消息堆积问题。为了解决消息消费失败的问题,RocketMQ支持...

    阿里云ons指南

    阿里云ONS(消息队列服务)是基于阿里云提供的分布式的、高可靠性的消息服务产品,它来源于阿里内部广泛使用的消息中间件MetaQ,亦即后来的开源项目RocketMQ。ONS支持海量消息的生产与消费,以无单点故障、高可扩展...

    分布式协调工具-ZooKeeper实现动态负载均衡

    ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。 1、Zookeeper...

Global site tag (gtag.js) - Google Analytics