kafka相关概念
2023-06-06 本文已影响0人
塔塔斯坦
2016 初学记个笔记
kafka是分布式的, 每个安装的服务进程叫做一个broker
kafka处理的消息是按照topic分类的, 生产和消费消息都要指定topic,topic是消息的一个类型(分类),
对于同一类消息(topic一样的),可以分区(即patition,具体实现为分不同的目录), 当一个消息到来时可以投递到不同的patition(生产者指定或者根据策略自动投递),
每个patition也可以有多个副本(replication-factor,由创建topic时指定),其中有一个leader,别的都是follower(只用来备份),只有leader可以读写数据。
消费者以组的名义来获取消息,pull消息时,要指定groupname和topicname,相同groupname的消费者,各自从不同的patition取数据,也就是常说的同组的不同消费者不可能同时负责同一个patition。
如果所有消费者具有相同的groupname, 那消息在这些消费者之间负载均衡, n个patition,m个消费者,m>n时, m-n个消费者将空闲。
如果所有消费者的groupname都不同, 那每个消息都会到达所有消费者, 这就是广播。
同一个patition中消息时有顺序的,从topic角度是没有顺序的,所有要保证顺序,可以将patition设置为1