精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

玩了分布式這么久,你不會連Kafka都不清楚吧

開源 分布式 Kafka
Kafka 現(xiàn)在在企業(yè)和互聯(lián)網(wǎng)項目中的應(yīng)用越來越多了,本篇文章就從 Kafka 的基礎(chǔ)開始帶你一展 Kafka 的宏圖。

 Kafka 現(xiàn)在在企業(yè)和互聯(lián)網(wǎng)項目中的應(yīng)用越來越多了,本篇文章就從 Kafka 的基礎(chǔ)開始帶你一展 Kafka 的宏圖。

[[280600]] 

圖片來自 Pexels

什么是 Kafka

Kafka 是一個分布式流式平臺,它有三個關(guān)鍵能力:

  • 訂閱發(fā)布記錄流,它類似于企業(yè)中的消息隊列或企業(yè)消息傳遞系統(tǒng)。
  • 以容錯的方式存儲記錄流。
  • 實時記錄流。

Kafka 的應(yīng)用:

  • 作為消息系統(tǒng)。
  • 作為存儲系統(tǒng)。
  • 作為流處理器。

Kafka 可以建立流數(shù)據(jù)管道,可靠地在系統(tǒng)或應(yīng)用之間獲取數(shù)據(jù)。建立流式應(yīng)用傳輸和響應(yīng)數(shù)據(jù)。

Kafka 作為消息系統(tǒng)

Kafka 作為消息系統(tǒng),它有三個基本組件:

  • Producer : 發(fā)布消息的客戶端
  • Broker:一個從生產(chǎn)者接受并存儲消息的客戶端
  • Consumer : 消費者從 Broker 中讀取消息

在大型系統(tǒng)中,會需要和很多子系統(tǒng)做交互,也需要消息傳遞,在諸如此類系統(tǒng)中,你會找到源系統(tǒng)(消息發(fā)送方)和目的系統(tǒng)(消息接收方)。

為了在這樣的消息系統(tǒng)中傳輸數(shù)據(jù),你需要有合適的數(shù)據(jù)管道:

這種數(shù)據(jù)的交互看起來就很混亂,如果我們使用消息傳遞系統(tǒng),那么系統(tǒng)就會變得更加簡單和整潔。

Kafka 運行在一個或多個數(shù)據(jù)中心的服務(wù)器上作為集群運行:

  • Kafka 集群存儲消息記錄的目錄被稱為 Topics。
  • 每一條消息記錄包含三個要素:鍵(Key)、值(Value)、時間戳(Timestamp)。

核心 API

Kafka 有四個核心 API,它們分別是: 

  • Producer API,它允許應(yīng)用程序向一個或多個 Topics 上發(fā)送消息記錄。
  • Consumer API,允許應(yīng)用程序訂閱一個或多個 Topics 并處理為其生成的記錄流。
  • Streams API,它允許應(yīng)用程序作為流處理器,從一個或多個主題中消費輸入流并為其生成輸出流,有效的將輸入流轉(zhuǎn)換為輸出流。
  • Connector API,它允許構(gòu)建和運行將 Kafka 主題連接到現(xiàn)有應(yīng)用程序或數(shù)據(jù)系統(tǒng)的可用生產(chǎn)者和消費者。例如,關(guān)系數(shù)據(jù)庫的連接器可能會捕獲對表的所有更改。

Kafka 基本概念

Kafka 作為一個高度可擴展可容錯的消息系統(tǒng),它有很多基本概念,下面就來認(rèn)識一下這些 Kafka 專屬的概念。

Topic

Topic 被稱為主題,在 Kafka 中,使用一個類別屬性來劃分消息的所屬類,劃分消息的這個類稱為 Topic。

Topic 相當(dāng)于消息的分配標(biāo)簽,是一個邏輯概念。主題好比是數(shù)據(jù)庫的表,或者文件系統(tǒng)中的文件夾。

Partition

Partition 譯為分區(qū),Topic 中的消息被分割為一個或多個的 Partition,它是一個物理概念,對應(yīng)到系統(tǒng)上就是一個或若干個目錄,一個分區(qū)就是一個提交日志。消息以追加的形式寫入分區(qū),先后以順序的方式讀取。

注意:由于一個主題包含無數(shù)個分區(qū),因此無法保證在整個 Topic 中有序,但是單個 Partition 分區(qū)可以保證有序。消息被迫加寫入每個分區(qū)的尾部。Kafka 通過分區(qū)來實現(xiàn)數(shù)據(jù)冗余和伸縮性。

分區(qū)可以分布在不同的服務(wù)器上,也就是說,一個主題可以跨越多個服務(wù)器,以此來提供比單個服務(wù)器更強大的性能。

Segment

Segment 被譯為段,將 Partition 進一步細(xì)分為若干個 Segment,每個 Segment 文件的大小相等。

Broker

Kafka 集群包含一個或多個服務(wù)器,每個 Kafka 中服務(wù)器被稱為 Broker。Broker 接收來自生產(chǎn)者的消息,為消息設(shè)置偏移量,并提交消息到磁盤保存。

Broker 為消費者提供服務(wù),對讀取分區(qū)的請求作出響應(yīng),返回已經(jīng)提交到磁盤上的消息。

Broker 是集群的組成部分,每個集群中都會有一個 Broker 同時充當(dāng)了集群控制器(Leader)的角色,它是由集群中的活躍成員選舉出來的。

每個集群中的成員都有可能充當(dāng) Leader,Leader 負(fù)責(zé)管理工作,包括將分區(qū)分配給 Broker 和監(jiān)控 Broker。

集群中,一個分區(qū)從屬于一個 Leader,但是一個分區(qū)可以分配給多個 Broker(非 Leader),這時候會發(fā)生分區(qū)復(fù)制。

這種復(fù)制的機制為分區(qū)提供了消息冗余,如果一個 Broker 失效,那么其他活躍用戶會重新選舉一個 Leader 接管。

Producer

生產(chǎn)者,即消息的發(fā)布者,其會將某 Topic 的消息發(fā)布到相應(yīng)的 Partition 中。

生產(chǎn)者在默認(rèn)情況下把消息均衡地分布到主題的所有分區(qū)上,而并不關(guān)心特定消息會被寫到哪個分區(qū)。不過,在某些情況下,生產(chǎn)者會把消息直接寫到指定的分區(qū)。

Consumer

消費者,即消息的使用者,一個消費者可以消費多個 Topic 的消息,對于某一個 Topic 的消息,其只會消費同一個 Partition 中的消息。

在了解完 Kafka 的基本概念之后,我們通過搭建 Kafka 集群來進一步深刻認(rèn)識一下 Kafka。

確保安裝環(huán)境

安裝 Java 環(huán)境

在安裝 Kafka 之前,先確保 Linux 環(huán)境上是否有 Java 環(huán)境,使用 java -version 命令查看 Java 版本,推薦使用 Jdk 1.8 。

如果沒有安裝 Java 環(huán)境的話,可以按照這篇文章進行安裝:

  1. https://www.cnblogs.com/zs-notes/p/8535275.html 

安裝 Zookeeper 環(huán)境

Kafka 的底層使用 Zookeeper 儲存元數(shù)據(jù),確保一致性,所以安裝 Kafka 前需要先安裝 Zookeeper,Kafka 的發(fā)行版自帶了 Zookeeper ,可以直接使用腳本來啟動,不過安裝一個 Zookeeper 也不費勁。

Zookeeper 單機搭建

Zookeeper 單機搭建比較簡單,直接從官網(wǎng)下載一個穩(wěn)定版本的 Zookeeper:

  1. https://www.apache.org/dyn/closer.cgi/zookeeper/ 

這里我使用的是 3.4.10,下載完成后,在 Linux 系統(tǒng)中的 /usr/local 目錄下創(chuàng)建 Zookeeper 文件夾。

然后使用 xftp 工具(xftp 和 xshell 工具都可以在官網(wǎng) https://www.netsarang.com/zh/xshell/ 申請免費的家庭版)把下載好的 Zookeeper 壓縮包放到 /usr/local/zookeeper 目錄下。

如果下載的是一個 tar.gz 包的話,直接使用 tar -zxvf zookeeper-3.4.10.tar.gz 解壓即可。

如果下載的是 zip 包的話,還要檢查一下 Linux 中是否有 unzip 工具,如果沒有的話,使用 yum install unzip 安裝 zip 解壓工具,完成后使用 unzip zookeeper-3.4.10.zip 解壓即可。

解壓完成后,cd 到 /usr/local/zookeeper/zookeeper-3.4.10 ,創(chuàng)建一個 data 文件夾,然后進入到 conf 文件夾下,使用 mv zoo_sample.cfg zoo.cfg 進行重命名操作。

然后使用 vi 打開 zoo.cfg ,更改一下dataDir=/usr/local/zookeeper/zookeeper-3.4.10/data ,保存。

進入 bin 目錄,啟動服務(wù)輸入命令 ./zkServer.sh start 輸出下面內(nèi)容表示搭建成功:

關(guān)閉服務(wù)輸入命令,./zkServer.sh stop:

使用 ./zkServer.sh status 可以查看狀態(tài)信息。

Zookeeper 集群搭建

①準(zhǔn)備條件

需要三個服務(wù)器,這里我使用了 CentOS7 并安裝了三個虛擬機,并為各自的虛擬機分配了 1GB 的內(nèi)存,在每個 /usr/local/ 下面新建 Zookeeper 文件夾。

把 Zookeeper 的壓縮包挪過來,解壓,完成后會有 zookeeper-3.4.10 文件夾,進入到文件夾,新建兩個文件夾,分別是 data 和 log 文件夾。

注:上一節(jié)單機搭建中已經(jīng)創(chuàng)建了一個 data 文件夾,就不需要重新創(chuàng)建了,直接新建一個 log 文件夾,對另外兩個新增的服務(wù)需要新建這兩個文件夾。

②設(shè)置集群

新建完成后,需要編輯 conf/zoo.cfg 文件,三個文件的內(nèi)容如下:‍

  1. tickTime=2000 
  2. initLimit=10 
  3. syncLimit=5 
  4. dataDir=/usr/local/zookeeper/zookeeper-3.4.10/data 
  5. dataLogDir=/usr/local/zookeeper/zookeeper-3.4.10/log 
  6. clientPort=12181 
  7. server.1=192.168.1.7:12888:13888 
  8. server.2=192.168.1.8:12888:13888 
  9. server.3=192.168.1.9:12888:13888 

server.1 中的這個 1 表示的是服務(wù)器的標(biāo)識也可以是其他數(shù)字,表示這是第幾號服務(wù)器,這個標(biāo)識要和下面我們配置的 myid 的標(biāo)識一致。

192.168.1.7:12888:13888 為集群中的 ip 地址,第一個端口表示的是 master 與 slave 之間的通信接口,默認(rèn)是 2888。

第二個端口是 Leader 選舉的端口,集群剛啟動的時候選舉或者 Leader 掛掉之后進行新的選舉的端口,默認(rèn)是 3888。

現(xiàn)在對上面的配置文件進行解釋:

  • tickTime:這個時間是作為 Zookeeper 服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發(fā)送一個心跳。
  • initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這里所說的客戶端不是用戶連接 Zookeeper 服務(wù)器的客戶端,而是 Zookeeper 服務(wù)器集群中連接到 Leader 的 Follower 服務(wù)器)初始化連接時最長能忍受多少個心跳時間間隔數(shù)。

當(dāng)已經(jīng)超過 5 個心跳的時間(也就是 tickTime)長度后 Zookeeper 服務(wù)器還沒有收到客戶端的返回信息,那么表明這個客戶端連接失敗。總的時間長度就是 5*2000=10 秒。

  • syncLimit:這個配置項標(biāo)識 Leader 與 Follower 之間發(fā)送消息,請求和應(yīng)答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 5*2000=10 秒。
  • dataDir:快照日志的存儲路徑。
  • dataLogDir:事務(wù)日志的存儲路徑,如果不配置這個那么事務(wù)日志會默認(rèn)存儲到 dataDir 指定的目錄,這樣會嚴(yán)重影響 ZK 的性能,當(dāng) ZK 吞吐量較大的時候,產(chǎn)生的事務(wù)日志、快照日志太多。
  • clientPort:這個端口就是客戶端連接 Zookeeper 服務(wù)器的端口,Zookeeper 會監(jiān)聽這個端口,接受客戶端的訪問請求。

③創(chuàng)建 myid 文件

在了解完其配置文件后,現(xiàn)在來創(chuàng)建每個集群節(jié)點的 myid ,我們上面說過,這個 myid 就是 server.1 的這個 1 ,類似的,需要為集群中的每個服務(wù)都指定標(biāo)識,使用 echo 命令進行創(chuàng)建:

  1. # server.1 
  2. echo "1" > /usr/local/zookeeper/zookeeper-3.4.10/data/myid 
  3. # server.2 
  4. echo "2" > /usr/local/zookeeper/zookeeper-3.4.10/data/myid 
  5. # server.3 
  6. echo "3" > /usr/local/zookeeper/zookeeper-3.4.10/data/myid 

④啟動服務(wù)并測試

配置完成,為每個 ZK 服務(wù)啟動并測試,我在 Windows 電腦的測試結(jié)果如下。

啟動服務(wù)(每臺都需要執(zhí)行):

  1. cd /usr/local/zookeeper/zookeeper-3.4.10/bin 
  2. ./zkServer.sh start 

使用 ./zkServer.sh status 命令檢查服務(wù)狀態(tài):

192.168.1.7 --- follower:

192.168.1.8 --- leader:

192.168.1.9 --- follower:

ZK 集群一般只有一個 Leader,多個 Follower,主一般是相應(yīng)客戶端的讀寫請求,而從主同步數(shù)據(jù),當(dāng)主掛掉之后就會從 Follower 里投票選舉一個 Leader 出來。

Kafka 集群搭建

準(zhǔn)備條件

準(zhǔn)備條件如下:

  • 搭建好的 Zookeeper 集群
  • Kafka 壓縮包
  1. https://www.apache.org/dyn/closer.cgi?path=/kafka/2.3.0/kafka_2.12-2.3.0.tgz 

在 /usr/local 下新建 Kafka 文件夾,然后把下載完成的 tar.gz 包移到 /usr/local/kafka 目錄下,使用 tar -zxvf 壓縮包進行解壓。

解壓完成后,進入到 kafka_2.12-2.3.0 目錄下,新建 log 文件夾,進入到 config 目錄下。

我們可以看到有很多 properties 配置文件,這里主要關(guān)注 server.properties 這個文件即可。

Kafka 啟動方式有兩種:

  • 一種是使用 Kafka 自帶的 Zookeeper 配置文件來啟動(可以按照官網(wǎng)來進行啟動,并使用單個服務(wù)多個節(jié)點來模擬集群http://kafka.apache.org/quickstart#quickstart_multibroker)。
  • 一種是通過使用獨立的 ZK 集群來啟動,這里推薦使用第二種方式,使用 ZK 集群來啟動。

②修改配置項

需要為每個服務(wù)都修改一下配置項,也就是 server.properties, 需要更新和添加的內(nèi)容有:

  1. broker.id=0 //初始是0,每個 server 的broker.id 都應(yīng)該設(shè)置為不一樣的,就和 myid 一樣 我的三個服務(wù)分別設(shè)置的是 1,2,3 
  2. log.dirs=/usr/local/kafka/kafka_2.12-2.3.0/log 
  3.  
  4. #在log.retention.hours=168 下面新增下面三項 
  5. message.max.byte=5242880 
  6. default.replication.factor=2 
  7. replica.fetch.max.bytes=5242880 
  8.  
  9. #設(shè)置zookeeper的連接端口 
  10. zookeeper.connect=192.168.1.7:2181,192.168.1.8:2181,192.168.1.9:2181 

配置項的含義:

  1. broker.id=0  #當(dāng)前機器在集群中的唯一標(biāo)識,和zookeeper的myid性質(zhì)一樣 
  2. port=9092 #當(dāng)前kafka對外提供服務(wù)的端口默認(rèn)是9092 
  3. host.name=192.168.1.7 #這個參數(shù)默認(rèn)是關(guān)閉的,在0.8.1有個bug,DNS解析問題,失敗率的問題。 
  4. num.network.threads=3 #這個是borker進行網(wǎng)絡(luò)處理的線程數(shù) 
  5. num.io.threads=8 #這個是borker進行I/O處理的線程數(shù) 
  6. log.dirs=/usr/local/kafka/kafka_2.12-2.3.0/log #消息存放的目錄,這個目錄可以配置為“,”逗號分割的表達式,上面的num.io.threads要大于這個目錄的個數(shù)這個目錄,如果配置多個目錄,新創(chuàng)建的topic他把消息持久化的地方是,當(dāng)前以逗號分割的目錄中,那個分區(qū)數(shù)最少就放那一個 
  7. socket.send.buffer.bytes=102400 #發(fā)送緩沖區(qū)buffer大小,數(shù)據(jù)不是一下子就發(fā)送的,先回存儲到緩沖區(qū)了到達一定的大小后在發(fā)送,能提高性能 
  8. socket.receive.buffer.bytes=102400 #kafka接收緩沖區(qū)大小,當(dāng)數(shù)據(jù)到達一定大小后在序列化到磁盤 
  9. socket.request.max.bytes=104857600 #這個參數(shù)是向kafka請求消息或者向kafka發(fā)送消息的請請求的最大數(shù),這個值不能超過java的堆棧大小 
  10. num.partitions=1 #默認(rèn)的分區(qū)數(shù),一個topic默認(rèn)1個分區(qū)數(shù) 
  11. log.retention.hours=168 #默認(rèn)消息的最大持久化時間,168小時,7天 
  12. message.max.byte=5242880  #消息保存的最大值5M 
  13. default.replication.factor=2  #kafka保存消息的副本數(shù),如果一個副本失效了,另一個還可以繼續(xù)提供服務(wù) 
  14. replica.fetch.max.bytes=5242880  #取消息的最大直接數(shù) 
  15. log.segment.bytes=1073741824 #這個參數(shù)是:因為kafka的消息是以追加的形式落地到文件,當(dāng)超過這個值的時候,kafka會新起一個文件 
  16. log.retention.check.interval.ms=300000 #每隔300000毫秒去檢查上面配置的log失效時間(log.retention.hours=168 ),到目錄查看是否有過期的消息如果有,刪除 
  17. log.cleaner.enable=false #是否啟用log壓縮,一般不用啟用,啟用的話可以提高性能 
  18. zookeeper.connect=192.168.1.7:2181,192.168.1.8:2181,192.168.1.9:2181 #設(shè)置zookeeper的連接端口 

③啟動 Kafka 集群并測試

啟動服務(wù),進入到 /usr/local/kafka/kafka_2.12-2.3.0/bin 目錄下:

  1. # 啟動后臺進程 
  2. ./kafka-server-start.sh -daemon ../config/server.properties 

檢查服務(wù)是否啟動:

  1. # 執(zhí)行命令 jps 
  2. 6201 QuorumPeerMain 
  3. 7035 Jps 
  4. 6972 Kafka 

Kafka 已經(jīng)啟動,創(chuàng)建 Topic 來驗證是否創(chuàng)建成功:

  1. # cd .. 往回退一層 到 /usr/local/kafka/kafka_2.12-2.3.0 目錄下 
  2. bin/kafka-topics.sh --create --zookeeper 192.168.1.7:2181 --replication-factor 2 --partitions 1 --topic cxuan 

對上面的解釋:

  • Replication-factor 2:復(fù)制兩份
  • Partitions 1:創(chuàng)建1個分區(qū)
  • Topic:創(chuàng)建主題

查看我們的主題是否創(chuàng)建成功:

  1. bin/kafka-topics.sh --list --zookeeper 192.168.1.7:2181 

啟動一個服務(wù)就能把集群啟動起來。

在一臺機器上創(chuàng)建一個發(fā)布者:

  1. # 創(chuàng)建一個broker,發(fā)布者 
  2. ./kafka-console-producer.sh --broker-list 192.168.1.7:9092 --topic cxuantopic 

在一臺服務(wù)器上創(chuàng)建一個訂閱者:

  1. # 創(chuàng)建一個consumer, 消費者 
  2. bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.7:9092 --topic cxuantopic --from-beginning 

注意:這里使用 --zookeeper 的話可能出現(xiàn) zookeeper is not a recognized option 的錯誤,這是因為 Kafka 版本太高,需要使用 --bootstrap-server 指令。

測試結(jié)果如下:

發(fā)布:

消費:

④其他命令

顯示 topic:

  1. bin/kafka-topics.sh --list --zookeeper 192.168.1.7:2181 
  2.  
  3. # 顯示 
  4. cxuantopic 

查看 topic 狀態(tài):

  1. bin/kafka-topics.sh --describe --zookeeper 192.168.1.7:2181 --topic cxuantopic 
  2.  
  3. # 下面是顯示的詳細(xì)信息 
  4. Topic:cxuantopic PartitionCount:1 ReplicationFactor:2 Configs: 
  5. Topic: cxuantopic Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2 
  6.  
  7. # 分區(qū)為為1  復(fù)制因子為2   主題 cxuantopic 的分區(qū)為0  
  8. # Replicas: 0,1   復(fù)制的為1,2 

Leader 負(fù)責(zé)給定分區(qū)的所有讀取和寫入的節(jié)點,每個節(jié)點都會通過隨機選擇成為 Leader。

Replicas 是為該分區(qū)復(fù)制日志的節(jié)點列表,無論它們是 Leader 還是當(dāng)前處于活動狀態(tài)。

Isr 是同步副本的集合。它是副本列表的子集,當(dāng)前仍處于活動狀態(tài)并追隨Leader。至此,Kafka 集群搭建完畢。

⑤驗證多節(jié)點接收數(shù)據(jù)

剛剛我們都使用的是相同的 ip 服務(wù),下面使用其他集群中的節(jié)點,驗證是否能夠接受到服務(wù)。

在另外兩個節(jié)點上使用:

  1. bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.7:9092 --topic cxuantopic --from-beginning 

然后再使用 Broker 進行消息發(fā)送,經(jīng)測試三個節(jié)點都可以接受到消息。

配置詳解

在搭建 Kafka 的時候我們簡單介紹了一下 server.properties 中配置的含義,現(xiàn)在我們來詳細(xì)介紹一下參數(shù)的配置和概念。

常規(guī)配置

這些參數(shù)是 Kafka 中最基本的配置:

broker.id:每個 Broker 都需要有一個標(biāo)識符,使用 broker.id 來表示。它的默認(rèn)值是 0,它可以被設(shè)置成其他任意整數(shù),在集群中需要保證每個節(jié)點的 broker.id 都是唯一的。

port:如果使用配置樣本來啟動 Kafka ,它會監(jiān)聽 9092 端口,修改 port 配置參數(shù)可以把它設(shè)置成其他任意可用的端口。

zookeeper.connect:用于保存 Broker 元數(shù)據(jù)的地址是通過 zookeeper.connect 來指定。

localhost:2181:表示運行在本地 2181 端口。該配置參數(shù)是用逗號分隔的一組 hostname:port/path 列表。

每一部分含義如下:

  • hostname 是 Zookeeper 服務(wù)器的服務(wù)名或 IP 地址。
  • port 是 Zookeeper 連接的端口。
  • /path 是可選的 Zookeeper 路徑,作為 Kafka 集群的 chroot 環(huán)境。如果不指定,默認(rèn)使用跟路徑。

log.dirs:Kafka 把消息都保存在磁盤上,存放這些日志片段的目錄都是通過 log.dirs 來指定的。它是一組用逗號分隔的本地文件系統(tǒng)路徑。

如果指定了多個路徑,那么 Broker 會根據(jù) "最少使用" 原則,把同一分區(qū)的日志片段保存到同一路徑下。

要注意,Broker 會向擁有最少數(shù)目分區(qū)的路徑新增分區(qū),而不是向擁有最小磁盤空間的路徑新增分區(qū)。

num.recovery.threads.per.data.dir:對于如下三種情況,Kafka 會使用可配置的線程池來處理日志片段:

  • 服務(wù)器正常啟動,用于打開每個分區(qū)的日志片段。
  • 服務(wù)器崩潰后啟動,用于檢查和截斷每個分區(qū)的日志片段。
  • 服務(wù)器正常關(guān)閉,用于關(guān)閉日志片段。

默認(rèn)情況下,每個日志目錄只使用一個線程。因為這些線程只是在服務(wù)器啟動和關(guān)閉時會用到,所以完全可以設(shè)置大量的線程來達到并行操作的目的。

特別是對于包含大量分區(qū)的服務(wù)器來說,一旦發(fā)生崩潰,在進行恢復(fù)時使用井行操作可能會省下數(shù)小時的時間。

設(shè)置此參數(shù)時需要注意,所配置的數(shù)字對應(yīng)的是 log.dirs 指定的單個日志目錄。

也就是說,如果 num.recovery.threads.per.data.dir 被設(shè)為 8,并且 log.dir 指定了 3 個路徑,那么總共需要 24 個線程。

auto.create.topics.enable:默認(rèn)情況下,Kafka 會在如下 3 種情況下創(chuàng)建主題:

  • 當(dāng)一個生產(chǎn)者開始往主題寫入消息時
  • 當(dāng)一個消費者開始從主題讀取消息時
  • 當(dāng)任意一個客戶向主題發(fā)送元數(shù)據(jù)請求時

delete.topic.enable:如果你想要刪除一個主題,你可以使用主題管理工具。

默認(rèn)情況下,是不允許刪除主題的,delete.topic.enable 的默認(rèn)值是 false 因此你不能隨意刪除主題。

這是對生產(chǎn)環(huán)境的合理性保護,但是在開發(fā)環(huán)境和測試環(huán)境,是可以允許你刪除主題的,所以,如果你想要刪除主題,需要把 delete.topic.enable 設(shè)為 true。

主題默認(rèn)配置

Kafka 為新創(chuàng)建的主題提供了很多默認(rèn)配置參數(shù),下面就來一起認(rèn)識一下這些參數(shù)。

num.partitions:num.partitions 參數(shù)指定了新創(chuàng)建的主題需要包含多少個分區(qū)。

如果啟用了主題自動創(chuàng)建功能(該功能是默認(rèn)啟用的),主題分區(qū)的個數(shù)就是該參數(shù)指定的值。該參數(shù)的默認(rèn)值是 1。要注意,我們可以增加主題分區(qū)的個數(shù),但不能減少分區(qū)的個數(shù)。

default.replication.factor:這個參數(shù)比較簡單,它表示 Kafka 保存消息的副本數(shù)。

如果一個副本失效了,另一個還可以繼續(xù)提供服務(wù),default.replication.factor 的默認(rèn)值為 1,這個參數(shù)在你啟用了主題自動創(chuàng)建功能后有效。

log.retention.ms:Kafka 通常根據(jù)時間來決定數(shù)據(jù)可以保留多久。默認(rèn)使用 log.retention.hours 參數(shù)來配置時間,默認(rèn)是 168 個小時,也就是一周。

除此之外,還有兩個參數(shù) log.retention.minutes 和 log.retentiion.ms 。這三個參數(shù)作用是一樣的,都是決定消息多久以后被刪除,推薦使用 log.retention.ms。

log.retention.bytes:另一種保留消息的方式是判斷消息是否過期。它的值通過參數(shù) log.retention.bytes 來指定,作用在每一個分區(qū)上。

也就是說,如果有一個包含 8 個分區(qū)的主題,并且 log.retention.bytes 被設(shè)置為 1GB,那么這個主題最多可以保留 8GB 數(shù)據(jù)。

所以,當(dāng)主題的分區(qū)個數(shù)增加時,整個主題可以保留的數(shù)據(jù)也隨之增加。

log.segment.bytes:上述的日志都是作用在日志片段上,而不是作用在單個消息上。

當(dāng)消息到達 Broker 時,它們被追加到分區(qū)的當(dāng)前日志片段上,當(dāng)日志片段大小到達 log.segment.bytes 指定上限(默認(rèn)為 1GB)時,當(dāng)前日志片段就會被關(guān)閉,一個新的日志片段被打開。

如果一個日志片段被關(guān)閉,就開始等待過期。這個參數(shù)的值越小,就越會頻繁的關(guān)閉和分配新文件,從而降低磁盤寫入的整體效率。

log.segment.ms:上面提到日志片段經(jīng)關(guān)閉后需等待過期,那么 log.segment.ms 這個參數(shù)就是指定日志多長時間被關(guān)閉的參數(shù)。

log.segment.ms 和 log.retention.bytes 也不存在互斥問題。日志片段會在大小或時間到達上限時被關(guān)閉,就看哪個條件先得到滿足。

message.max.bytes:Broker 通過設(shè)置 message.max.bytes 參數(shù)來限制單個消息的大小,默認(rèn)是 1000 000, 也就是 1MB。

如果生產(chǎn)者嘗試發(fā)送的消息超過這個大小,不僅消息不會被接收,還會收到 Broker 返回的錯誤消息。

跟其他與字節(jié)相關(guān)的配置參數(shù)一樣,該參數(shù)指的是壓縮后的消息大小,也就是說,只要壓縮后的消息小于 mesage.max.bytes,那么消息的實際大小可以大于這個值。

這個值對性能有顯著的影響。值越大,那么負(fù)責(zé)處理網(wǎng)絡(luò)連接和請求的線程就需要花越多的時間來處理這些請求。它還會增加磁盤寫入塊的大小,從而影響 IO 吞吐量。

文章參考:

  • Kafka【第一篇】Kafka 集群搭建
  • https://juejin.im/post/5ba792f5e51d450e9e44184d
  • https://blog.csdn.net/k393393/article/details/93099276
  • 《Kafka 權(quán)威指南》
  • https://www.learningjournal.guru/courses/kafka/kafka-foundation-training/broker-configurations/

 【編輯推薦】

 

責(zé)任編輯:武曉燕 來源: Java 極客技術(shù)
相關(guān)推薦

2020-11-25 09:49:05

Hibernate

2022-01-25 12:41:31

ChromeResponse接口

2022-11-26 17:54:05

2020-08-18 08:22:46

歸并排序

2020-02-15 15:33:55

Python如何運作

2020-09-10 16:10:17

js繼承模式前端

2021-03-10 08:56:37

Zookeeper

2022-02-08 13:39:35

LinuxUNIX系統(tǒng)

2024-12-10 13:00:00

C++引用

2021-11-08 10:00:19

require前端模塊

2021-07-21 10:10:14

require前端代碼

2022-05-15 21:52:04

typeTypeScriptinterface

2021-07-27 07:31:16

JavaArrayList數(shù)組

2019-06-25 15:00:53

SpringNullJava

2020-11-11 07:32:18

MySQL InnoDB 存儲

2024-02-29 09:08:56

Encoding算法加密

2019-12-04 12:33:48

程序員技術(shù)設(shè)計

2020-12-07 11:05:21

HttpClient代碼Java

2021-05-27 21:18:56

谷歌Fuchsia OS操作系統(tǒng)

2021-05-28 06:16:28

藍牙Wi-FiNFC
點贊
收藏

51CTO技術(shù)棧公眾號

久久国产精品波多野结衣av| 国产日韩欧美久久| 亚洲欧美综合一区二区| 天堂久久一区二区三区| 一级做a爰片久久毛片美女图片| 一区二区三区免费播放| 四虎亚洲成人| 久久欧美一区二区| 91精品中文在线| 日韩三级视频在线播放| 日韩av片子| 精品国产乱码久久久久久浪潮| 天天摸天天碰天天添| av观看在线| 久久久久国产免费免费 | 国内精品视频一区二区三区| 国产黄在线看| caoporen国产精品视频| 国产色综合天天综合网| 日韩精品在线免费视频| 亚洲天堂一区二区三区四区| 亚洲精品一区二区久| a级大片免费看| 中文字幕av一区二区三区佐山爱| 国产精品成人一区二区艾草 | 性活交片大全免费看| 色成人免费网站| 亚洲va欧美va国产va天堂影院| 亚洲综合第一| 久色视频在线| 成人国产精品免费观看视频| 成人国产精品免费视频| 精产国品一区二区| 亚洲深夜激情| 欧美激情久久久久久| 草草草视频在线观看| zjzjzjzjzj亚洲女人| 欧美一级特黄视频| 亚洲一级二级| 久久久精品欧美| 能直接看的av| 国产成人影院| 国产午夜精品久久久| 人妻av一区二区| 免费观看亚洲视频大全| 欧美日韩二区三区| 在线观看av日韩| 日韩欧美一区二区三区在线观看| 精品国产91久久久| 国产免费黄色小视频| 麻豆福利在线观看| 亚洲综合色自拍一区| 国内外成人激情免费视频| 在线观看麻豆蜜桃| 国产精品色在线观看| 日本免费高清不卡| 免费成人av电影| 久久众筹精品私拍模特| 精品一区二区三区日本| 婷婷伊人综合中文字幕| av资源网一区| 久久久久久久久久码影片| 五月婷婷开心中文字幕| 99久久国产综合精品麻豆| 国产欧美日韩在线播放| 四虎精品一区二区三区| 97se亚洲国产综合自在线| 好吊妞www.84com只有这里才有精品| 亚洲精品综合久久| 成人av网址在线观看| 久草精品电影| 国产一级网站视频在线| 国产欧美精品一区二区色综合朱莉| 日韩激情视频| 1pondo在线播放免费| 自拍偷拍欧美激情| 成人国产在线看| 第一福利在线视频| 一本到不卡精品视频在线观看| 蜜臀av午夜一区二区三区| 日韩经典一区| 日韩无一区二区| 青青草视频网站| 欧美日韩精品一区二区视频| 色婷婷av一区二区三区久久| 欧美三级日本三级| 99riav1国产精品视频| 国产不卡av在线免费观看| 亚洲天堂手机在线| 丁香六月久久综合狠狠色| 久久久久久a亚洲欧洲aⅴ| а天堂8中文最新版在线官网| 中文字幕亚洲一区二区av在线| 9191国产视频| 欧美激情护士| 欧美日韩国产综合一区二区三区| 99热这里只有精品2| 欧美黑白配在线| 日韩在线视频观看正片免费网站| 五月天丁香激情| 免费久久99精品国产自在现线| 国产精品一区二区电影| 亚洲高清视频网站| 久久久久久97三级| 国产欧美久久久久| 国产亚洲人成a在线v网站 | 97视频在线观看视频免费视频 | 国产成人在线网站| 快播亚洲色图| 三级福利片在线观看| 亚洲成人精品一区二区| 亚洲 高清 成人 动漫| 永久免费观看精品视频| 精品国产凹凸成av人导航| 波多野结衣av在线观看| 伊人成综合网| 欧美激情精品久久久久| 亚洲综合精品国产一区二区三区| bt7086福利一区国产| 欧美凹凸一区二区三区视频| 免费观看在线黄色网| 亚洲国产视频一区二区| 亚洲精品高清无码视频| 韩国精品福利一区二区三区| 亚洲护士老师的毛茸茸最新章节| 老司机深夜福利网站| 精品9999| 国产欧美日韩高清| 精品国产99久久久久久宅男i| 97精品超碰一区二区三区| www.在线观看av| 国产黄色一区| 精品成人在线观看| 国产福利在线导航| 久久国产99| 国产一区不卡在线观看| 黄色片网站在线观看| 天天色 色综合| 日本r级电影在线观看| 国产精品麻豆久久| 国产欧美一区二区三区久久| 国产精品99999| 91久久一区二区| 中文字幕一区三区久久女搜查官| 亚洲国产精品久久久天堂| 7m精品福利视频导航| 国产美女三级无套内谢| 中文字幕乱码久久午夜不卡| 国产中文字幕二区| 高潮久久久久久久久久久久久久| 久久国产视频网站| 久草视频在线免费| 波多野洁衣一区| 欧美黑人在线观看| 91九色美女在线视频| 日韩欧美色综合| www中文在线| 日本亚洲视频在线| 日韩jizzz| 午夜无码国产理论在线| 亚洲欧美日韩国产中文专区| 老熟妇一区二区三区| 福利电影一区二区| 一本一道久久a久久综合精品| 丰满少妇一区| 色偷偷噜噜噜亚洲男人| 波多野结衣人妻| 一色桃子久久精品亚洲| 女教师高潮黄又色视频| 伊人色**天天综合婷婷| 成人免费网站在线| 麻豆系列在线观看| 欧美一三区三区四区免费在线看 | 中文在线观看av| 国产欧美日韩另类视频免费观看| 亚洲国产精品毛片av不卡在线| 国产一区二区三区四区五区| 国产精品盗摄久久久| 国产福利在线| 欧美精品久久久久久久久老牛影院| 国产99在线 | 亚洲| 久久99精品网久久| 日本大胆人体视频| 啪啪激情综合网| 欧美最顶级丰满的aⅴ艳星| 最新真实国产在线视频| 在线综合视频播放| 熟妇高潮精品一区二区三区| 欧美在线三区| 成人在线激情视频| a视频在线观看免费| 欧美精品一区二区三区一线天视频| 国产欧美一区二区三区在线看蜜臂 | 欧美性做爰毛片| 日韩美女一级视频| 精品国产1区2区| 99久久久免费精品| 成人国产精品免费网站| 亚洲人成无码www久久久| 91国语精品自产拍| 91久久久久久国产精品| 黄色aa久久| 精品国产一区二区三区四区在线观看 | 女人黄色免费在线观看| 亚洲精品视频在线观看视频| 夜夜嗨aⅴ一区二区三区| 午夜不卡在线视频| 玖草视频在线观看| 国产精品自产自拍| 三级a在线观看| 国产一区美女| 免费电影一区| 97视频一区| 茄子视频成人在线| brazzers在线观看| 久久精品在线视频| 免费观看毛片网站| 欧美日韩激情一区| 中文字幕手机在线视频| 亚洲香蕉伊在人在线观| 国产精品久久国产精麻豆96堂| jizz一区二区| 少妇欧美激情一区二区三区| 亚洲视频1区| 日本丰满少妇xxxx| 亚洲一区二区日韩| 日韩一区二区电影在线观看| 免费福利视频一区| 91精品久久久久久久久久另类 | 欧美性猛交xxxx久久久| 国产亚洲成人av| 亚洲免费色视频| 久久国产高清视频| 亚洲视频资源在线| 成人三级视频在线观看| 国产精品免费网站在线观看| 老熟妇一区二区| 久久久国产午夜精品| 国产激情在线免费观看| 91免费版在线看| 黄色录像a级片| 99re热这里只有精品视频| 欧美xxxxx精品| av成人免费在线观看| 中文字幕乱码一区| 99国产精品99久久久久久| 亚洲欧美日韩色| 成人短视频下载| 超碰男人的天堂| 久久综合狠狠综合| 丁香激情五月少妇| 国产精品久久久久久久久快鸭| 成人无码av片在线观看| 国产精品久久777777| 国产激情无码一区二区三区| 亚洲欧洲中文日韩久久av乱码| 国产一二三四区| 洋洋av久久久久久久一区| 久久免费公开视频| 精品毛片三在线观看| 午夜婷婷在线观看| 欧美三级乱人伦电影| 国产精品怡红院| 欧美成人aa大片| 亚洲欧美日韩动漫| 最新91在线视频| 在线观看午夜av| 高清一区二区三区四区五区| 美女扒开腿让男人桶爽久久软| 国产91热爆ts人妖在线| 日韩国产一二三区| 91在线观看网站| 日韩av不卡一区| 一本久久a久久精品vr综合| 亚洲精品888| 大肉大捧一进一出好爽视频| 青青草97国产精品免费观看无弹窗版| 中文字幕1234区| 99久久久久免费精品国产| x88av在线| 一区二区三区不卡视频在线观看| 国产精品suv一区二区三区| 欧美午夜影院一区| 亚洲成a人片77777精品| 亚洲色图第一页| 97影院秋霞午夜在线观看| 777精品视频| 亚洲欧美在线综合| 久久精品ww人人做人人爽| 久久中文字幕av一区二区不卡| 日韩国产小视频| 日韩电影在线观看电影| 又色又爽又黄18网站| 国产午夜精品久久久久久免费视| 在线免费观看亚洲视频| 日韩欧美成人网| 国产男男gay体育生网站| 日韩激情片免费| 91小视频xxxx网站在线| 国产ts一区二区| 日韩成人18| 午夜一区二区三区| 亚洲免费精品| 国产亚洲色婷婷久久| 国产日韩欧美综合在线| 国产精品第一页在线观看| 欧美日韩在线观看一区二区| 亚洲av片一区二区三区| 超碰91人人草人人干| 欧美极品免费| 国产一区二区三区四区hd| 99精品全国免费观看视频软件| 99999精品视频| 成人免费看黄yyy456| 久草手机视频在线观看| 在线观看一区二区视频| 香蕉视频911| 久久久久久久91| 国产95亚洲| 亚洲精品一区二区三区樱花| 美女精品在线观看| 制服丝袜在线第一页| 亚洲欧美另类久久久精品 | 亚洲精品一区二区三区精华液 | 欧美亚洲另类视频| 亚洲精品在线播放| 性欧美18一19内谢| 免费高清视频精品| jizz中文字幕| 欧洲国产伦久久久久久久| 午夜av免费观看| 高清亚洲成在人网站天堂| 国产极品模特精品一二| 黄色一级片黄色| 国产成人高清视频| 麻豆亚洲av成人无码久久精品| 在线电影国产精品| 日韩黄色影院| 91久久久国产精品| 亚洲精品国产首次亮相| 日韩精品aaa| 椎名由奈av一区二区三区| 国产一区二区小视频| 精品国模在线视频| 久久国产精品美女| 成人午夜视频免费观看| 国产精品自在在线| 精品无码人妻一区二区三| 精品精品欲导航| aa视频在线观看| 久久久精品动漫| 日韩国产在线观看一区| 亚洲一级理论片| 欧美一区二区性放荡片| 四虎影视成人| 精品乱码一区二区三区| 久久大逼视频| 免费一级suv好看的国产网站| 欧美高清dvd| 色黄网站在线观看| 精品乱码一区| 日本欧美加勒比视频| 永久免费未视频| 日韩你懂的在线观看| 蜜臀久久精品| 色一情一乱一伦一区二区三区| 免费在线成人网| 欧美精品一区二区成人| 亚洲精品久久久久久久久久久久 | 国产精品一二| 性欧美一区二区| 欧美一区二区三区四区高清| 爱福利在线视频| 日韩精品一线二线三线| 国内成人精品2018免费看| 国产真实乱人偷精品视频| 亚洲男人av在线| 成人综合日日夜夜| 欧美视频在线观看网站 | 久操免费在线视频| 亚洲精选在线观看| 性欧美video另类hd尤物| 免费特级黄色片| 亚洲国产激情av| 国产激情视频在线播放| 日韩免费在线观看视频| 中文字幕乱码亚洲无线精品一区| 亚洲国产精品无码久久久久高潮| 欧美色网站导航| 黄页网站在线| 手机成人在线| 成人一区二区三区在线观看| 久久久久久久亚洲| 欧美激情亚洲国产| 日韩欧美电影| 日韩少妇一区二区| 欧美福利视频一区| 日韩电影大全网站| 男女激情免费视频| 国产精品乱码久久久久久|