入門 Kafka

https://kafka.apache.org/intro
應(yīng)用場(chǎng)景
異步解構(gòu):在上下游沒(méi)有強(qiáng)依賴的業(yè)務(wù)關(guān)系或針對(duì)單次請(qǐng)求不需要立刻處理的業(yè)務(wù); 系統(tǒng)緩沖:有利于解決服務(wù)系統(tǒng)的吞吐量不一致的情況,尤其對(duì)處理速度較慢的服務(wù)來(lái)說(shuō)起到緩沖作用; 消峰作用:對(duì)于短時(shí)間偶現(xiàn)的極端流量,對(duì)后端的服務(wù)可以啟動(dòng)保護(hù)作用; 數(shù)據(jù)流處理:集成 spark 做實(shí)事數(shù)據(jù)流處理。
Kafka 拓?fù)鋱D(多副本機(jī)制)

Kafka 核心組件
broker
topic
partition
topic 的分區(qū),一個(gè) topic 可以包含多個(gè) partition,topic 消息保存在各個(gè) partition 上;由于一個(gè) topic 能被分到多個(gè)分區(qū)上,給 kafka 提供給了并行的處理能力,這也正是 kafka 高吞吐的原因之一。 partition 物理上由多個(gè) segment 文件組成,每個(gè) segment 大小相等,順序讀寫(這也是 kafka 比較快的原因之一,不需要隨機(jī)寫)。每個(gè) Segment 數(shù)據(jù)文件以該段中最小的 offset ,文件擴(kuò)展名為.log。當(dāng)查找 offset 的 Message 的時(shí)候,通過(guò)二分查找快找到 Message 所處于的 Segment 中。

offset
消息在日志中的位置,可以理解是消息在 partition 上的偏移量,也是代表該消息的唯一序號(hào)。 同時(shí)也是主從之間的需要同步的信息。

Producer
Consumer
Consumer Group
Zookeeper

服務(wù)治理
數(shù)據(jù)同步
ISR




Kafka 故障恢復(fù)

生產(chǎn)者發(fā)生消息給 leader,這個(gè)時(shí)候 leader 完成數(shù)據(jù)存儲(chǔ),突然發(fā)生故障,沒(méi)有給 producer 返回 ack; 通過(guò) ZK 選舉,其中一個(gè) follower 成為 leader,這個(gè)時(shí)候 producer 重新請(qǐng)求新的 leader,并存儲(chǔ)數(shù)據(jù)。
Kafka 為什么這么快
順序?qū)懘疟P
Page Cache

零拷貝
傳統(tǒng)的一次應(yīng)用程請(qǐng)求數(shù)據(jù)的過(guò)程

零拷貝的方式

分區(qū)分段
數(shù)據(jù)壓縮
Kafka 安裝
安裝 JDK
yum -y list Java*
yum install java-1.8.0-openjdk-devel.x86_64
Java -version
安裝 Zookeeper
tar -zxvf zookeeper-3.4.9.tar.gz
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
# zookeeper內(nèi)部的基本單位,單位是毫秒,這個(gè)表示一個(gè)tickTime為2000毫秒,在zookeeper的其他配置中,都是基于tickTime來(lái)做換算的
tickTime=2000
# 集群中的follower服務(wù)器(F)與leader服務(wù)器(L)之間 初始連接 時(shí)能容忍的最多心跳數(shù)(tickTime的數(shù)量)。
initLimit=10
#syncLimit:集群中的follower服務(wù)器(F)與leader服務(wù)器(L)之間 請(qǐng)求和應(yīng)答 之間能容忍的最多心跳數(shù)(tickTime的數(shù)量)
syncLimit=5
# 數(shù)據(jù)存放文件夾,zookeeper運(yùn)行過(guò)程中有兩個(gè)數(shù)據(jù)需要存儲(chǔ),一個(gè)是快照數(shù)據(jù)(持久化數(shù)據(jù))另一個(gè)是事務(wù)日志
dataDir=/tmp/zookeeper
## 客戶端訪問(wèn)端口
clientPort=2181
vim ~/.bash_profile
export ZK=/usr/local/src/apache-zookeeper-3.7.0-bin
export PATH=$PATH:$ZK/bin
export PATH
// 啟動(dòng)
zkServer.sh start


安裝 Kafka
tar -xzvf kafka_2.12-2.0.0.tgz
export ZK=/usr/local/src/apache-zookeeper-3.7.0-bin
export PATH=$PATH:$ZK/bin
export KAFKA=/usr/local/src/kafka
export PATH=$PATH:$KAFKA/bin
nohup kafka-server-start.sh 自己的配置文件路徑/server.properties &

推薦閱讀
手把手教你 Oracle 數(shù)據(jù)庫(kù)升級(jí)!


評(píng)論
圖片
表情
