MetaQ技术内幕——源码分析(一)
笔者最近在业务上需要使用到MetaQ,也借此阅读了MetaQ的相关源码,准备分享MetaQ源码分析。先扫扫盲,如果读者对MetaQ已经较为熟悉,可以跳过下一段落。
?
一、MetaQ简介
?
MetaQ(全称Metamorphosis)是一个高性能、高可用、可扩展的分布式消息中间件,,MetaQ具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景,METAQ在阿里巴巴各个子公司被广泛应用,每天转发250亿+条消息。主要应用于异步解耦,Mysql数据复制,收集日志等场景。
?
?主要特点
?
二、MetaQ的总体架构
?
消息中间件消费消息有两种方式,推送消息和拉取消息,一般对于实时性要求非常高的消息中间件,会更多的采用推送的模式,如ActivitiQ,而MetaQ采用的主动拉取消息的模式,通过Zookeeper进行协调,MetaQ分为三部分:Server、Client(包括消息产生者和消费者)以及协调者Zookeeper,总体结构如下:
三、工程结构分析
?
MetaQ的源码可以从以下链接获取:https://github.com/killme2008/Metamorphosis (本序列基于MetaQ 1.4.5进行分析),下载工程到本地,我们发现主要有如下几个工程,先大致介绍一下工程的划分:
metamorphosis-client,生产者和消费者客户端
?工程依赖图大致如下:
源码分析也将以分Server和Client两阶段进行,将优先进行Server的分析,下一篇将正式带大家进入MetaQ的世界。