文档章节

metaq的基本概念术语

chaun
 chaun
发布于 2016/05/13 10:43
字数 1786
阅读 38
收藏 0
点赞 2
评论 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
粉丝 85
博文 262
码字总数 96237
作品 0
深圳
高级程序员
消息中间件metaq理解

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

最爱肉肉 ⋅ 2016/11/17 ⋅ 0

初识淘宝消息中间件MetaQ(一)

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

陈小扁 ⋅ 2016/09/08 ⋅ 0

实时处理方案架构-笔记.docx

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

hiqj ⋅ 2015/09/10 ⋅ 0

淘宝的消息中间件(2013)

这是一篇老帖子了,我是来学习的。原文在这里:http://jm-blog.aliapp.com/?p=3483。问题是图片都没有了。我费了很大功夫才把原文的图片给找回来。排版之后重新发布一遍。 淘宝的notify是一个...

鱼煎 ⋅ 2015/08/19 ⋅ 0

Jafka源码粗略解读之四-log及其他

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

黄亿华 ⋅ 2013/08/24 ⋅ 0

阿里中间件——消息中间件Notify和MetaQ

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

Eller ⋅ 2016/10/27 ⋅ 0

消息队列推拉的区别

拉模式: 点对点消费,如果没有消费者在监听队列,消息将保留在队列中,直至消费者连接到队列,在这种模型中,消息不是自动推动给消费者的,而是要由消费者从队列中请求活动(拉模式)。优点...

qq948939246 ⋅ 03/12 ⋅ 0

Metamorphosis(Metaq)在项目中的使用

Metamorphosis(Metaq)在项目中的使用 metaq的wiki介绍参考如下:metaq-wiki;服务端下载地址:http://download.csdn.net/detail/facetoqiang/9595008 也可以在google资源库重下载(记得翻墙):...

zzuqiang ⋅ 2016/08/04 ⋅ 0

Oracle数据库集群入门培训教程_Oracle RAC集群体系架构解析

课程目标 风哥本课程讲解Oracle数据库基础入门培训教程之Oracle RAC集群体系架构,内容包括:集群基本概念、Oracle RAC集群架构、Oracle RAC集群相关术语、Oracle RAC集群相关进程、Oracle ...

风哥Oracle ⋅ 2017/06/12 ⋅ 0

各大公司开源收集

阿里 阿里中间件团队博客http://jm.taobao.org/2016/11/03/metaq-high-performance-analysis/

Jr小王子 ⋅ 2016/12/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 13分钟前 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部