前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kafka(1)-基本术语

kafka(1)-基本术语

作者头像
yiduwangkai
发布2019-09-17 15:44:07
3310
发布2019-09-17 15:44:07
举报
文章被收录于专栏:大数据进阶大数据进阶

topic:自定义的一个队列 broker:broker通常就是一台物理机器,在上面运行kafka server的一个实列,每个broker会给自己分配一个唯一的broker id。broker集群通过zookeeper集群来管理的。在0.9.0中,producer/consumer已经不会依赖zookeeper来获取集群的配置信息,而是通过任意一个broker来获取整个集群的配置信息

如上图所示:只有服务端依赖zk,客户端不依赖zk

partition

kafka的topic,在每个机器上,是用文件存储的。partition就是文件的目录,目录下面包含包含index后缀和log后缀的文件

replica/leader/follower

每个topic的partion的所有消息,都是存储了多份,在多个broker上冗余存储,这多台机器就叫一个replica集合。在这个replica集合中,需要选出1个leader,剩下的是follower。也就是master/slave。发送消息的时候,只会发送给leader,然后leader再把消息同步给followers(以pull的方式,followers去leader上pull,而不是leader push给followers)。这里replica/leader/follower都是逻辑概念,并且是相对"partion"来讲的,而不是"topic"。还有一点是leader收到消息之后,是否直接返回给produce,取决于客户端ack(0,1,all)的配置,然后followers在进行同步。

消息队列的各种策略和语义

1.ack:request.required.acks有三种策略分别如下;0表示不等服务器ack就返回了,性能最高,可能丢数据;1表示leader确认消息存下来了,再返回;all表示leader和当前ISR中所有replica都确认消息后,在返回;

注:在0.9.0以前的版本是用-1表示all

同步发送vs异步发送

0.8.2开始,引入了一套新的Java版的client api,需要如下四个参数

1)队列的最大长度:buffer.memory//缺省32M

2)队列满了,客户端是阻塞,还是抛异常出来:block.on.buffer.full//true:阻塞消息/false:抛异常

3)发送的时候,可以批量发送的数据量:batch.size//default:16384,即16k

4)最长等多长时间,批量发送:linger.ms//缺省是0;//类似TCP/IP协议中的linger algorithm

5)消息的最大长度:max.request.size//缺省是1048576,即1M

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档