kafka术语和配置介绍

一、kakfa整体架构

kafka架构

二、术语科普

producer & consumer

producer 是生产者,负责消息生产,上游程序中按照标准的消息格式组装(按照每个消息事件的字段定义)发送到指定的topic。producer生产消息的时候,不会因为consumer处理能力不够,而阻塞producer的生产。consumer会从指定的topic 拉取消息,然后处理消费,并提交offset(消息处理偏移量,消费掉的消息并不会主动删除,而是kafka系统根据保存周期自动消除)。

Topic

topic是消费分类存储的队列,可以按照消息类型来分topic存储。

replication

replication是topic复制副本个数,用于解决数据丢失,防止leader topic宕机后,其他副本可以快代替。

broker

broker是缓存代理,Kafka集群中的一台或多台服务器统称broker,用来保存producer发送的消息。Broker没有副本机制,一旦broker宕机,该broker的消息将都不可用。

partition

partition是topic的物理分组,在创建topic的时候,可以指定partition 数量。每个partition是逻辑有序的,保证每个消息都是顺序插入的,而且每个消息的offset在不同partition的是唯一不同的

offset

偏移量。kafka为每条在分区的消息保存一个偏移量offset,这也是消费者在分区的位置。比如一个偏移量是5的消费者,表示已经消费了从0-4偏移量的消息,下一个要消费的消息的偏移量是5。每次消息处理完后,要么主动提交offset,要么自动提交,把offset偏移到下一位,如处理offset=6消息。在kafka配置中,如果enable_auto_commit=True和auto_commit_interval_ms=xx,那表示每xx 毫秒自动提交偏移量

group

分组。是指在消费同一topic的不同consumer。每个consumer都有唯一的groupId,同一groupId 属于同一个group。不同groupId的consumer相互不影响。对于一个topic,同一个group的consumer数量不能超过 partition数量。比如,Topic A 有 16个partition,某一个group下有2个consumer,那2个consumer分别消费8个partition,而这个group的consumer数量最多不能超过16个。

三、kafka的配置

kafka的配置主要分四类,分别是zookeeper、server、consumer、producer。其他的配置可以忽略。

zookeeper配置

zk的配置比较简单,也可以默认不改.dataDir是zk存储节点配置的目录地址,clientPort是zk启动的端口,默认2181,maxClientCnxns是限制ip的连接此处,设置0表示无连接次数,一般情况根据业务部署情况,配置合理的值。

dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=0                       

server配置

############################# Server Basics #############################

# 每一个broker在集群中的唯一表示,要求是正数。当该服务器的IP地址发生改变时,broker.id没有变化,则不会影响consumers的消息情况
broker.id=0

############################# Socket Server Settings #############################
#默认kafka连接ip和端口
#listeners=PLAINTEXT://:9092

#broker处理消息的最大线程数,一般情况下不需要去修改
num.network.threads=3
# broker处理磁盘IO的线程数,数值应该大于你的硬盘数,默认不修改
num.io.threads=8
# socket的发送缓冲区,根据可以服务性能可调
socket.send.buffer.bytes=102400
# socket的接受缓冲区,根据可以服务性能可调
socket.receive.buffer.bytes=102400

# socket请求的最大数值,防止server 内存溢出,message.max.bytes必然要小于socket.request.max.bytes,否则会被topic创建时的指定参数覆盖
socket.request.max.bytes=104857600
############################# Log Basics #############################

# 日志目录
log.dirs=/tmp/kafka-logs

# 不指定partition数量情况下的默认数量
num.partitions=1

# The number of threads per data directory to be used for log recovery at startup and flushing at shutdown.
# This value is recommended to be increased for installations with data dirs located in RAID array.
num.recovery.threads.per.data.dir=1

############################# Internal Topic Settings  #############################
# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state"
# For anything other than development testing, a value greater than 1 is recommended for to ensure availability such as 3.
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1

############################# Log Retention Policy #############################
# 默认保留 7天的消息记录
log.retention.hours=168

#消息总存储达到的最大数量,如果超过这个字节数,无论是否达到7天,都会删除
log.retention.bytes=1073741824

# topic的分区是以一堆segment文件存储的,这个控制每个segment的大小,会被topic创建时的指定参数覆盖
log.segment.bytes=1073741824
# 日志清理策略选择有:delete和compact主要针对过期数据的处理,或是日志文件达到限制的额度,会被 topic创建时的指定参数覆盖
log.retention.check.interval.ms=300000

############################# Zookeeper #############################

#zookeeper配置
zookeeper.connect=localhost:2181

# zookeeper的连接超时
zookeeper.connection.timeout.ms=6000

group.initial.rebalance.delay.ms=0

producer配置

############################# Producer Basics #############################

#broker 列表;格式: host1:port1,host2:port2 ...
bootstrap.servers=localhost:9092

# 数据存储的压缩格式,默认是none,其他: none, gzip, snappy, lz4, zstd
compression.type=none

# 指定分区处理类。默认kafka.producer.DefaultPartitioner 
#partitioner.class=

# 写请求的超时
#request.timeout.ms=

consumer配置

#(必需)zookeeper连接服务器地址  
zookeeper.connect=zk01:2181,ka02:2181,zk03:2181  
  
#zookeeper的session的过期时间  
zookeeper.session.timeout.ms=5000  
  
# zookeeper连接超时
zookeeper.connectiontimeout.ms=10000    
  
#指定多久消费者更新offset到zookeeper中  
zookeeper.sync.time.ms=2000  
  
#(必需)consumer group id    
group.id=test-consumer-group    
  
#自动向zookeeper提交offset信息,和下面的auto.commit.interval.ms结合起来使用,合理的自动提交间隔,可以防止rebalance
auto.commit.enable=true  
  
#自动更新时间  
auto.commit.interval.ms=1000  
  
#当前consumer的标识  
consumer.id=xxx  
  
#消费者客户端编号,用于区分不同客户端,默认客户端程序自动产生  
client.id=xxx  
  
#最大取多少块缓存到消费者(默认10)  
queued.max.message.chunks=50  
  
#当有新的consumer加入到group时,将会reblance.  
rebalance.max.retries=5  
  
#获取消息的最大尺寸,broker不会向consumer输出大于此值得chunk  
fetch.min.bytes=655360  
  
#当消息尺寸不足时,server阻塞的时间,如果超时,立即发送给consumer  
fetch.wait.max.ms=5000  
socket.receive.buffer.bytes=655360  
  
#重置reset的极致,smallest:自动设置reset到最小的offset.
auto.offset.reset=smallest 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容