`
javahacker2
  • 浏览: 43812 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

metaq源码分析(一)

 
阅读更多

一、MetaQ简介

 

MetaQ(全称Metamorphosis)是一个高性能、高可用、可扩展的分布式消 息中间件,,MetaQ具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景,METAQ在阿 里巴巴各个子公司被广泛应用,每天转发250亿+条消息。主要应用于异步解耦,Mysql数据复制,收集日志等场景。

 

 主要特点

 

  • 生产者、服务器和消费者都可分布
  • 消息存储顺序写
  • 性能极高,吞吐量大
  • 支持消息顺序
  • 支持本地和XA事务
  • 客户端pull,随机读,利用sendfile系统调用,zero-copy ,批量拉数据
  • 支持消费端事务
  • 支持消息广播模式
  • 支持异步发送消息
  • 支持http协议
  • 支持消息重试和recover
  • 数据迁移、扩容对用户透明
  • 消费状态保存在客户端
  • 支持同步和异步复制两种HA

二、MetaQ的总体架构

 

消息中间件消费消息有两种方式,推 送消息和拉取消息,一般对于实时性要求非常高的消息中间件,会更多的采用推送的模式,如ActivitiQ,而MetaQ采用的主动拉取消息的模式,通过 Zookeeper进行协调,MetaQ分为三部分:Server、Client(包括消息产生者和消费者)以及协调者Zookeeper,总体结构如 下:

 

 

 

三、工程结构分析

 

MetaQ的源码可以从以下链接获取:https://github.com/killme2008/Metamorphosis (本序列基于MetaQ 1.4.5进行分析),下载工程到本地,我们发现主要有如下几个工程,先大致介绍一下工程的划分:

 


 

    • metamorphosis-client,生产者和消费者客户端
    • metamorphosis-client-extension,扩展的客户端。用于将消费处理失败的消息存入notify(未提供),和使用meta作为log4j appender,可以透明地使用log4j API发送消息到meta
    • metamorphosis-commons,客户端和服务端一些公用的东西
    • metamorphosis-dashboard, metaq的Web信息展示
    • metamorphosis-example,客户端使用的例子
    • metamorphosis-http-client,使用http协议的客户端
    • metamorphosis-server,服务端工程
    • metamorphosis-server-wrapper,扩展的服务端,用于将其他插件集成到服务端,提供扩展功能,支持高可用的同步异步复制
    • metamorphosis-storm-spout,用于将meta消息接入到twitter storm集群做实时分析
    • metamorphosis-tools,提供服务端管理和操作的一些工具

 工程依赖图大致如下:

 

 

 

源码分析也将以分Server和Client两阶段进行,将优先进行Server的分析,下一篇将正式带大家进入MetaQ的世界。

分享到:
评论

相关推荐

    metamorphosis(metaq)

    Metamorphosis,简称MetaQ,是一款高效、稳定、可扩展的消息队列系统,由阿里巴巴开发并开源,主要用于解决分布式环境下的异步处理、解耦以及数据传输等问题。在1.4.3版本中,MetaQ提供了更优化的性能和更多的功能...

    Metaq原理与应用

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

    metaQ向spark传数据

    MetaQ是腾讯开源的一款分布式消息中间件,常用于实时数据处理系统中的消息传递。而Spark则是一个强大的、通用的并行计算框架,专为大数据分析设计,尤其擅长实时流处理。当我们需要将MetaQ中的数据传递到Spark进行...

    metaq-server-1.4.6.2.tar.gz

    1. 日志收集:MetaQ可用于收集分布在各服务器上的日志,统一管理和分析,提高运维效率。 2. 数据同步:在分布式数据库或缓存系统中,MetaQ可以作为数据变更的传播通道,保证数据的一致性。 3. 异步处理:对于耗时...

    metaq-server-1.4.6.2客户端+服务端

    MetaQ是阿里巴巴开源的一款分布式消息中间件,它主要用于在大规模分布式系统中提供高效、可靠的消息传递服务。MetaQ Server 1.4.6.2版本是这个中间件的一个特定发行版,包含了服务端和客户端的组件,以及相关的...

    Metaq在JDk 7下的异常及解决方案

    本文将深入解析这一异常的具体情况,分析其原因,并提出相应的解决方案。 异常现象主要表现为:在尝试清理内存映射文件时,由于Java反射机制调用了`java.nio.DirectByteBuffer`类中的`viewedBuffer()`方法,导致`...

    metaq-server-1.4.6.2.zip 和原版一样就是换了个名字

    最后,MetaQ还提供了丰富的监控和管理工具,包括日志分析、性能指标监控和Web管理界面,方便运维人员进行故障排查和系统调优。 综上所述,MetaQ服务器1.4.6.2版本在保持原有功能的基础上,可能针对性能、稳定性和...

    Metaq详细手册.docx

    《Metaq详细手册》 Metaq,源自LinkedIn的开源消息中间件Kafka的Java实现——Memorphosis,针对淘宝内部的应用需求进行了定制和优化。它遵循一系列设计原则,旨在提供高效、可靠且灵活的消息传递服务。 1. **消息...

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

    MetaQ是一款分布式消息服务中间件,其核心功能基于发布-订阅模型。在这一模型中,发布者(Producer)将消息发布到MetaQ,MetaQ会储存这些消息,而订阅者(Consumer)则通过pull方式来消费这些消息。具体而言,消费者...

    metaQ的安装包

    MetaQ,全称为“Meta Message Queue”,是阿里巴巴开源的一款分布式消息中间件,主要用于解决大规模分布式系统中的消息传递问题。MetaQ 提供了高可用、高可靠的消息服务,支持多种消息模型,如点对点(Point-to-...

    metaq消息中间件服务端、客户端资源汇集

    Metamorphosis是淘宝开源的一个Java消息中间件,他类似apache-kafka,但不是一个简单的山寨拷贝,而是做了很多改进和优化,项目的主页在淘蝌蚪上。服务端、客户端、javadoc都包含在内。

    阿里消息中间件MetaQ学习Demo.zip

    阿里消息中间件MetaQ学习Demo

    支付宝之所以牛逼的原因:来看内部架构剖析

    Metamorphosis(MetaQ)是一个高性能、高可用、可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景,在...

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

    在支付宝钱包系统架构中,一个非常关键的技术组件是Metamorphosis (MetaQ),这是一款高性能、高可用的分布式消息中间件。MetaQ的引入极大地提高了支付宝系统处理海量数据的能力,并且增强了系统的稳定性。 - **性能...

    Metamorphosis, 一种高可用高性能的分布式.zip

    Metamorphosis, 一种高可用高性能的分布式 #新闻MetaQ 1.4.6.2 发布。更新日志MetaQ 1.4.6.1 发布。更新日志MetaQ 1.4.5.1 发布。更新日志MetaQ 1.4.5发布。更新日志meta: 一个用于的ruby 客户端。 源代码

    阿里rocketMQ

    阿里RocketMQ是一款开源的消息中间件,它在阿里巴巴集团内部广泛使用,并且被社区接纳成为Apache顶级项目。RocketMQ的设计目标是提供低延迟、高可靠、高可扩展的消息传递服务,适用于大规模分布式系统中的消息通讯。...

    RocketMQ最全介绍与实战.pdf

    RocketMQ 的前世今生是 Metaq,Metaq 在阿里巴巴集团内部、蚂蚁金服、菜鸟等各业务中被广泛使用,接入了上万个应用系统中。 RocketMQ 的使用场景包括应用解耦、流量削峰等。应用解耦系统的耦合性越高,容错性就越低...

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

    生产者负载均衡:metaq发送消息的时候,生产者在发送消息的时候必须选择一台broker上的一个分区来发送消息,因此metaq在运行过程中,会把所有broker和对应的分区信息全部注册到ZK指定节点上,默认的策略是一个依次...

    Storm项目:流数据监控(下)

    该文档为storm模拟项目系列文档之一,是MetaQ与storm接口的说明文档,主要介绍了如何集成MetaQ到项目代码中。软件(阿里),其对应的许多技术文档还是比较容易看的,并且Github提供了许多的应用实例,所以使用MetaQ...

Global site tag (gtag.js) - Google Analytics