Ⅰ kafka-docker上使用+常用指令
生產者向broker發送消息,消費者接收消息,broker是物理概念,部署幾個kafka即幾個broker,topic是邏輯概念,往topic里發送消息會發送到設置好的幾個partion上,每個partion存儲作為不同隊列存儲不同數據,partion有leader和follower備份機制,消息發送時會輪循發送到不同broker的不同partion中,同一消費者只能消費同一分區,通過offset記錄消費位置,消費者組可以訪問一個topic的不同partion
啟動鏡像
啟動kafka可以帶上參數,這樣會自動修改kafka里的配置文件(/opt/kafka_版本/conf/server.properties),否則不帶參數需要自己進入進行手動修改 帶參數版啟動可參考
其中172.17.0.3需要改成自己docker的網橋連接地址
查看已啟動容器
查看所有容器
啟動未啟動的容器
進入kafka容器
創建主題
主題和分區可以理解為:topic是邏輯劃分,kafka通過topic進行區分消息,topic的數據會被存儲到日誌中,如果數據量太大可以引入partion(同時提高讀寫吞吐量)來分段存儲數據。其中replication-factor作用是將任意分區復制到broker上,broker是物理概念,部署了一個kafka可認為broker數為1,我本機只有一個kafka所以這里replication-factor超過1會報錯。 綜上幾個概念可以理解為:集群中有多個broker,創建主題時可以指明topic有多個partitions(消息拆分到不同分區進行存儲,一個partion只能被一個消費者消費--partion內部保證接收數據順序),可以為分區創建多個副本replication,不同副本在不同的broker中(作為備份使用,這里有leader和flower的區分) 。
查看topic信息
集群部署
可以通過compose集群化部署過es,這里通過創建另一個compose.yml文件來部署kafka,配置文件參考 docker-compose集群部署
生產者:
消費者:
方式一:從當前主題的遷移量位置+1開始取數據
方式二:從當前主題第一條消息開始消費
生產者將消息發送broker,broker將消息保存到本地日誌中,消息的保存時有序的
單播消息:
當存在一個生產者,一個消費者組的時候,一個消費者組中只有一個消費者會收到消息
多播消息:
當存在一個生產者,多個消費組,不同消費組只有一個消費者收到消息
查看消費組詳細信息:
CURRENT-OFFSET:最後被消費的偏移量
LOG-END-OFFSET:消息總量(最後一條消息的偏移量)
LAG :積壓了多少條消息
常見問題:
1、如何防止消息丟失
生產者:使用同步消息發送;ack設置為1/all;設置同步分區數>=2
消費者:把自動提交改成手動提交
2、如何防止消息的重復消費
針對網路抖動導致的生產者重試(發送消息),可以設置消費者加鎖解決;
3、消息積壓
消費者使用多線程非同步處理接收數據;創建多個消費者組部署到其他機器上;通過業務架構設計,提升業務層面消費性能。
ps:
緩沖區:kafka默認會創建一個消息緩沖區去存放要發送的消息,大小是32M,每次本地線程會去緩沖區拉16K數據發送到broker,如果不到16K等待10ms也會將數據發送到broker
參考鏈接:
1、kafka安裝教程--推薦
2、kafka配置文件server.properties參數說明
3、創建主題分區數
4、解決docker容器啟動不了的問題
5、通過docker-compose集群部署
6、學習視頻
Ⅱ kafka配置更改了需要重啟嗎
我覺得應該是需要的,一般來說任何的電子設備進行了一些重大的更改都是需要重啟的,特別是你的這個還是更改了設備的這個樣子的。下面是關於配置的(2)kafka修改配置文件分區數擴展閱讀。
硬體方面
1.CPU,這個主要取決於頻率和二級緩存,三級緩存,核心數量。頻率越高、二級緩存越大,三級緩存越大,核心越多,運行速度越快。速度越快的CPU只有三級緩存影響響應速度。
2.內存,內存的存取速度取決於介面、顆粒數量多少與儲存大小(包括內存的介面,如:SDRAM133,DDR333,DDR2-533,DDR2-800,DDR3-1333、DDR3-1600、DDR4-2133),一般來說,內存越大,處理數據能力越強,而處理數據的速度主要看內存屬於哪種類型(如DDR就沒有DDR3處理得快)。一般大型游戲(PUBG、戰地5、俄羅斯釣魚、使命召喚16等)與大型軟體(pr、ae等)都會佔用很多內存,因此,對於游戲玩家來說,越高的內存可以玩越多的游戲。
3.主板,主要還是處理晶元,如:筆記本i965比i945晶元處理能力更強,i945比i910晶元在處理數據的能力又更強些,依此類推。並且更好的主板還可以適配更強大的CPU(中央處理器)。
4.硬碟,硬碟分為固態硬碟(SSD)、機械硬碟(HDD)、混合硬碟(SSHD),固態硬碟速度最快,混合硬碟次之,機械硬碟最差。越大的硬碟存的文件就多,(如存放電影,音樂等)首先硬碟的數據讀取與寫入的速度和硬碟的轉速(分:高速硬碟和低速硬碟,高速硬碟一般用在大型伺服器中,如:10000轉,15000轉;低速硬碟用在一般電腦中,包括筆記本電腦),台式機電腦一般用7200轉,筆記本電腦一般用5400轉,這主要是考慮到高速硬碟在筆記本電腦中由於電腦移動振動意外刮傷硬碟碟片以及功耗和散熱原因。
硬碟速度又因介面不同,速率不同,一般而言,分IDE和SATA(也就是常說的串口)介面,早前的硬碟多是IDE介面,相比之下,存取速度比SATA介面的要慢些。