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這個參數來解決;
 
 

未完待續...

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