topic是消费分类存储的队列,可以按照消息类型来分topic存储。
replication是topic复制副本个数,用于解决数据丢失,防止leader topic宕机后,其他副本可以快代替。
broker是缓存代理,Kafka集群中的一台或多台服务器统称broker,用来保存producer发送的消息。Broker没有副本机制,一旦broker宕机,该broker的消息将都不可用。
partition是topic的物理分组,在创建topic的时候,可以指定partition 数量。每个partition是逻辑有序的,保证每个消息都是顺序插入的,而且每个消息的offset在不同partition的是唯一不同的
偏移量。kafka为每条在分区的消息保存一个偏移量offset,这也是消费者在分区的位置。比如一个偏移量是5的消费者,表示已经消费了从0-4偏移量的消息,下一个要消费的消息的偏移量是5。每次消息处理完后,要么主动提交offset,要么自动提交,把offset偏移到下一位,如处理offset=6消息。在kafka配置中,如果enable_auto_commit=True和auto_commit_interval_ms=xx,那表示每xx 毫秒自动提交偏移量
分组。是指在消费同一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的配置主要分四类,分别是zookeeper、server、consumer、producer。其他的配置可以忽略。
zk的配置比较简单,也可以默认不改.dataDir是zk存储节点配置的目录地址,clientPort是zk启动的端口,默认2181,maxClientCnxns是限制ip的连接此处,设置0表示无连接次数,一般情况根据业务部署情况,配置合理的值。
在公司的测试环境中,有的应用需要远程连接kafka,本地有时也是需要连接到kafka进行Debug,这就需要将kafka配置成外部可连接。想要实现这种效果,有两种实现方法,第一种方法是将所有kafka的连接都配置成公网IP连接。第二种方法是采用kafka的内外分离配置。方法一虽然能够实现kafka的外部连接,可是服务器上面对kafka的连接也会默认使用公网IP的方式连接,而不是内网,这样会给实例的公网带宽带来很大的压力,应用一多,就会造成实例无法进行登录。而方法二就可以有效的避免这种现象了,它是将云上本地应用采用内网来连接kafka,而同时又采用不同的端口配置外网连接,这样能够有效的减少公网带宽的压力。
在原有配置的基础上加上或者更改如下配置,配置接受外网连接的端口为9093,同时打开安全组的9093端口,配置过后通过重启kafka即可通过9093在本地连接kafka。
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT主要分别定义内部和外部连接采用的安全协议
listeners=INTERNAL://<内网IP>:9092,EXTERNAL://0.0.0.0:9093主要是定义内部和外部连接监听的地址端口
advertised.listeners=INTERNAL://<内网IP>:9092,EXTERNAL://<外网IP>:9093主要是提交给zookeeper来实现对kafka内部和外部的连接,最开始改配置只是配置了外部的连接,没有内部的连接,所以对kafka的连接都是通过外部连接。
inter.broker.listener.name=INTERNAL主要是制定kafka集群内部broker之前通过INTERNAL的配置来进行内部通讯。
参考连接:
http://www.devtalking.com/articles/kafka-practice-16/
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)