文档章节

metaq的基本概念术语

chaun
 chaun
发布于 2016/05/13 10:43
字数 1786
阅读 38
收藏 0

概念和术语 Meta的概念和术语介绍

消息生产者 也称为Message Producer,一般简称为producer,负责产生消息并发送消息到meta服务器。

消息消费者 也称为Message Consumer,一般简称为consumer,负责消息的消费,meta采用pull模型,由消费者主动从meta服务器拉取数据并解析成消息并消费。

Topic 消息的主题,由用户定义并在服务端配置。producer发送消息到某个topic下,consumer从某个topic下消费消息。

分区(partition) 同一个topic下面还分为多个分区,如meta-test这个topic我们可以分为10个分区,分别有两台服务器提供,那么可能每台服务器提供5个分区,假设服务器id分别为0和1,则所有分区为0-0、0-1、0-2、0-3、0-4、1-0、1-1、1-2、1-3、1-4。

分区跟消费者的负载均衡机制有很大关系,具体见集群和负载均衡。

Message 消息,负载用户数据并在生产者、服务端和消费者之间传输。

Broker 就是meta的服务端或者说服务器,在消息中间件中也通常称为broker。

消费者分组(Group) 消费者可以是多个消费者共同消费一个topic下的消息,每个消费者消费部分消息。这些消费者就组成一个分组,拥有同一个分组名称,通常也称为消费者集群

Offset 消息在broker上的每个分区都是组织成一个文件列表,消费者拉取数据需要知道数据在文件中的偏移量,这个偏移量就是所谓offset。Offset是绝对偏移量,服务器会将offset转化为具体文件的相对偏移量。详细内容参见#消息的存储结构

同组和不同组:是指10个consumer是否同一个分组,如果是同一个分组则共同分担消费同一个topic;否则,每个consumer完整消费该topic。通俗地说,同组就是一条消息只会被分组内一个consumer消费,不同组,则一条消息会被每个consumer消费。

数据可靠性参数 Meta保证消息可靠性是建立在磁盘可靠性的基础上,发送的每一条消息都保证是在“写入磁盘”的情况下才返回给客户端应答。这里有两个关键参数可以控制:

数据删除策略配置 默认情况下,meta是会保存不断添加的消息,然后定期对“过期”的数据进行删除或者归档处理,这都是通过下列参数控制的: deleteWhen: 何时执行删除策略的cron表达式,默认是0 0 6,18 * * ?,也就是每天的早晚6点执行处理策略。 deletePolicy: 数据删除策略,默认超过7天即删除,这里的168是小时,10s表示10秒,10m表示10分钟,10h表示10小时,不明确指定单位默认为小时。delete是指删除,超过指定时间的数据文件将被彻底从磁盘删除。也可以选择archive策略,即不对过期的数据文件做删除而是归档,当使用archive策略的时候可以选择是否压缩数据文件,如167,archive,true即选择将更改时间超过7天的数据文件归档并压缩为zip文件,如果不选择压缩,则重命名为扩展名为arc的文件。 上述两个参数都可以被topic单独配置所覆盖,也就是每个topic可以指定自己独特的删除策略。通常来说,对于不重要的topic可以将更早地将他们删除来节省磁盘空间。

zookeeper配置 meta服务端会将自身id,topic信息和socket地址发送到zookeeper上,让客户端可以发现并连接服务器。Zookeeper相关的配置放在[zookeeper]模块下面: zk.zkEnable: 是否启用zookeeper,也就是是否将信息注册到zookeeper上。默认为true。对于同步复制的slave来说,本参数会被强制设置为false。 zk.zkConnect: zookeeper服务器列表,例如localhost:1281这样的字符串。默认也是localhost:2181。请设置你的zk集群地址列表。 zk.zkSessionTimeoutMs: zookeeper的session timeout,默认为30秒。单位毫秒。 zk.zkConnectionTimeoutMs: zookeeper的连接超时时间,默认同样为30秒,单位毫秒。 zk.zkSyncTimeMs: 预期的zk集群间数据同步延迟,默认为5秒,这个参数对服务器无意义。

新增Topic热部署 在新增或者删除topic并保存server.ini之后,可以通过下列命令热加载新的配置文件并生效: bin/metaServer.sh reload

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

采用pull模型,消息的实时性有保证吗? Metamorphosis在消费端采用pull的模型,consumer主动去broker拉取数据,而不是类似大多数MQ那样由broker主动push数据给消费者。可能很多人担心采用pull模型后,会不会消息的实时性降低了,从发送到消费的整个时间周期拉长了。 实际上,meta中消息的实时性受很多因素影响,不能简单地说实时性一定会降低,主要影响因素如下 broker上配置的批量force消息的阈值,默认是1000条force一次。这个值越大,则实时性越低。 消费者每次抓取的数据大小,这个值越大,则实时性越低,但是吞吐量越高。 Topic的分区数目对实时性也有较大影响,分区数目越多,则磁盘压力越大,导致消息投递的实时性降低。 消费者重试抓取的时间间隔,越长则延迟越严重。 消费者抓取数据的线程数 可见,消息实时性在meta里受到很多因素的影响,meta可以让用户自己决定如何在响应性和吞吐量之间做平衡,通过配置来合理设置参数,达到应用方需要的实时性,实际测试,消息消费的延迟可以在几毫秒到几秒之间。

© 著作权归作者所有

共有 人打赏支持
chaun
粉丝 88
博文 270
码字总数 96237
作品 0
深圳
高级程序员
消息中间件metaq理解

Java Message Service (JMS)Java的消息中间件. metaq作为i额消息中间件,应该是在这个范畴中.二者范围有一定差异. jms应该说是一种规范. metaq是一种框架,用于实现消息推送的功能. 1.metaq的消...

最爱肉肉
2016/11/17
19
0
初识淘宝消息中间件MetaQ(一)

前言 再说mq之前我们先说说背景吧,MQ(message queue简称消息队列)主要作用不是通讯,主要是用于解除子系统间的耦合,所以异构系统间的通讯实际并不是mq发挥作用的场景,那反而是RPC(remot...

陈小扁
2016/09/08
323
0
实时处理方案架构-笔记.docx

1、数据接入层 该部分有多种数据收集方式,包括使用消息队列(MetaQ),直接通过网络 Socket传输数据,前端业务系统专有数据采集API,对Log问价定时监控。 2、为什么选择消息队列? 为什么不...

hiqj
2015/09/10
72
0
Jafka源码粗略解读之四-log及其他

这几天琢磨其他的东西,Jafka源码搁置了,对其解读已经失去了兴趣。为了给自己一个交代,还是写个结尾系列吧。 log Log模块并非是log4j一套,而是Jafka的消息持久化系统,当初一扫而过,这么...

黄亿华
2013/08/24
0
0
阿里中间件——消息中间件Notify和MetaQ

3.1、Notify Notify是淘宝自主研发的一套消息服务引擎,是支撑双11最为核心的系统之一,在淘宝和支付宝的核心交易场景中都有大量使用。消息系统的核心作用就是三点:解耦,异步和并行。下面让...

Eller
2016/10/27
357
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

弹性工作制的魔咒

简评:你找到了一份完美的工作 —— 可以提前离开公司,还可以在晚上从家里回复邮件。既然如此,你为什么还会有那么强的负罪感呢? 或许是弹性工作制魔咒在作祟。 很多享受弹性工作制的人会始...

极光推送
6分钟前
0
0
KAFKA介绍(分布式架构)

Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以...

明理萝
12分钟前
0
1
os::NodeHandle::subscribe回调函数绑定对象

void Foo::callback(const std_msgs::Empty::ConstPtr& message){}Foo foo_object;ros::Subscriber sub = handle.subscribe("my_topic", 1, &Foo::callback, &foo_object); 参考: ht......

itfanr
14分钟前
0
0
React16.4 开发简书项目 从零基础入门到实战

React16.4 开发简书项目 从零基础入门到实战 关注我的订阅号下载 React16.4 开发简书项目 从零基础入门到实战

蜗牛奔跑
16分钟前
0
0
day57-20180815-流利阅读笔记-待学习

社恐怎么办?这个漫画或许能治愈你 毛西 2018-08-15 1.今日导读 近日,芬兰漫画家卡罗利娜·科尔霍宁创作的绘本《芬兰人的噩梦》在中国大火。一时间书中的主人公马蒂成为了人们茶余饭后热议的...

aibinxiao
20分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部