Kafka学习札记

一.安装配置

1.部署Zookeeper,注意一个Zookeeper集群最好不要超过7个点(要保持一致性,太多点,效率会很差);

2.安装Zookeeper,下载安装包的时候,地址:https://apache.org/dist/zookeeper/stable/,如果要使用下载带bin的安装包,如果需要源码下载无bin的安装包;

3.完成java安装配置;

=========================================作用在消息=============================================>>

作用在消息上:

4.kafka配置文件中的num.partitions这个参数,一定要配置大于broker(kafka集群中的一个服务器节点)的数量,这样才能保证分区分布在所有的broker中;

5.kafka通过log.retention.hours来设置数据的保留时间,默认是168(一周时间),推荐用log.retention.ms来设置,因为同时存在多项设置的时候,kafka会选择单位小的设置的值;

6.kafka通过设置log.retention.bytes来设置数据的保留大小,默认大小是1GB,这个大小会用在每一个分区上,超过的话,旧的数据就会被删除;

<<=======================================作用在消息===============================================

=========================================作用在日志片段=========================================>>

作用在日志片段上:

7.kafka通过log.segment.bytes来设置日志片段数据过期的数据量;

8.kafka通过log.segment.ms来设置日志片段数据过期的时间;

<<=======================================作用在日志片段===========================================

9.磁盘的性能影响生产者,内存影响消费者;

10.kafka除了可以通过调整自身参数优化外,还可以通过调整系统配置优化(虚拟内存、磁盘、网络)

二、使用

1.生产者

1)初始化样例:

private Properties kafkaProps = new Properties();
kafkaProps.put ("bootstrap.servers","broker1:9092,broker2:9092");
kafkaProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
kafkaProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
producer = new KafkaProducer <String, String>(kafkaProps);
 
2)发送有3种方式:
    a)发送并忘记; b)同步发送; c)异步发送;
 
3)顺序保证,为了保证顺序,需要将retries参数设置大于0(保证消息写入成功),max.in.flight.requests.per.connection设置大于1(这样会保证发送的批次不会乱掉,但是严重影响吞吐量)
 
4)分区策略
    a)轮询策略; b)随机策略; c)按消息建保存策略;
 
5)序列化
    a)可以使用Kafka内置的序列化器; b)使用Avro序列化; c)自定义序列化器;
 
2.消费者
 
1)消费者组,因为一个topic有多个分区,一个消费者只能从一个topic获取消息,但是一个topic如果拥有多个分区,那么一个消费者,只能从一个分区中获取消息,所以需要一个消费者组(消费者不要超过topic中的分区数目,否则会被闲置);
 
2)再均衡,就是消费者停止发送心跳一定时间后,触发群组协调器broker对于群组中的消费者对于分区的重新分配;
 
3)新版本(0.10.1或者更高版本)Kafka在处理需要耗时较长的消息,可以通过设置max.poll.interval.ms这个参数来解决;
 
 

未完待续...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章