vi設(shè)計(jì) 站酷公司網(wǎng)站推廣方法
1. Kafka簡介

Apache Kafka 是LinkedIn公司開發(fā)的一款開源的高吞吐、分布式的消息隊(duì)列系統(tǒng),它具有高伸縮性、高可靠性和低延遲等特點(diǎn),因此在大型數(shù)據(jù)處理場(chǎng)景中備受青睞。Kafka 可以處理多種類型的數(shù)據(jù),如事件、日志、指標(biāo)等,廣泛應(yīng)用于實(shí)時(shí)數(shù)據(jù)流處理、日志收集、監(jiān)控和分析等領(lǐng)域。
2. 設(shè)計(jì)架構(gòu)
-
Producer :消息生產(chǎn)者,就是向 kafka broker 發(fā)消息的客戶端。 -
Consumer :消息消費(fèi)者,向 kafka broker 取消息的客戶端。 -
Topic :一個(gè)Topic是消息的分類或主題,它是Kafka中進(jìn)行消息發(fā)布和訂閱的基本單位。Producer(生產(chǎn)者)將消息發(fā)布到一個(gè)或多個(gè)Topic,而Consumer(消費(fèi)者)訂閱一個(gè)或多個(gè)Topic并消費(fèi)其中的消息。 -
Consumer Group:這是 kafka 用來實(shí)現(xiàn)一個(gè) topic 消息的廣播(發(fā)給所有的 consumer)和單播(發(fā)給任意一個(gè) consumer)的手段。一個(gè) topic 可以有多個(gè) Consumer Group。 -
Broker:一臺(tái) kafka 服務(wù)器就是一個(gè) broker。一個(gè)集群由多個(gè) broker 組成。一個(gè) broker 可以容納多個(gè) topic。 -
Partition:為了實(shí)現(xiàn)擴(kuò)展性,一個(gè)非常大的 topic 可以分布到多個(gè) broker上,每個(gè) partition 是一個(gè)有序的隊(duì)列。partition 中的每條消息都會(huì)被分配一個(gè)有序的id(offset)。將消息發(fā)給 consumer,kafka 只保證按一個(gè) partition 中的消息的順序,不保證一個(gè) topic 的整體(多個(gè) partition 間)的順序。 -
Offset:kafka 的存儲(chǔ)文件都是按照 offset.kafka 來命名,用 offset 做名字的好處是方便查找。例如你想找位于 2049 的位置,只要找到 2048.kafka 的文件即可。當(dāng)然 the first offset 就是 00000000000.kafka。


3. Kafka特點(diǎn)
-
高吞吐量、低延遲:kafka每秒可以處理幾十萬條消息,它的延遲最低只有幾毫秒,每個(gè)topic可以分多個(gè)partition, consumer group 對(duì)partition進(jìn)行consume操作。 -
可擴(kuò)展性:kafka集群支持熱擴(kuò)展 -
持久性、可靠性:消息被持久化到本地磁盤,并且支持?jǐn)?shù)據(jù)備份防止數(shù)據(jù)丟失 -
容錯(cuò)性:允許集群中節(jié)點(diǎn)失敗(若副本數(shù)量為n,則允許n-1個(gè)節(jié)點(diǎn)失敗) -
高并發(fā):支持?jǐn)?shù)千個(gè)客戶端同時(shí)讀寫
4. 使用場(chǎng)景
-
日志收集:可以用Kafka可以收集各種服務(wù)的log,通過kafka以統(tǒng)一接口服務(wù)的方式開放給各種consumer,例如hadoop、HBase、Solr等。 -
消息系統(tǒng):解耦和生產(chǎn)者和消費(fèi)者、緩存消息等。 -
用戶活動(dòng)跟蹤:Kafka經(jīng)常被用來記錄web用戶或者app用戶的各種活動(dòng),如瀏覽網(wǎng)頁、搜索、點(diǎn)擊等活動(dòng),這些活動(dòng)信息被各個(gè)服務(wù)器發(fā)布到kafka的topic中,然后訂閱者通過訂閱這些topic來做實(shí)時(shí)的監(jiān)控分析,或者裝載到hadoop、數(shù)據(jù)倉庫中做離線分析和挖掘。 -
運(yùn)營指標(biāo):Kafka也經(jīng)常用來記錄運(yùn)營監(jiān)控?cái)?shù)據(jù)。包括收集各種分布式應(yīng)用的數(shù)據(jù),生產(chǎn)各種操作的集中反饋,比如報(bào)警和報(bào)告。 -
流式處理:比如spark streaming和 Flink。 -
系統(tǒng)解耦:在重要操作完成后,發(fā)送消息,由別的服務(wù)系統(tǒng)來完成其他操作 -
流量削峰:一般用于秒殺或搶購活動(dòng)中,來緩沖網(wǎng)站短時(shí)間內(nèi)高流量帶來的壓力 -
異步處理:通過異步處理機(jī)制,可以把一個(gè)消息放入隊(duì)列中,但不立即處理它,在需要的時(shí)候再進(jìn)行處理
5. 安裝、配置和啟動(dòng)Kafka
要安裝、配置和啟動(dòng)Kafka,請(qǐng)按照以下步驟進(jìn)行操作:
-
下載Kafka:從Apache Kafka官網(wǎng)下載最新版本的Kafka,并解壓到本地目錄。
-
配置Kafka:編輯Kafka的配置文件(
config/server.properties
),根據(jù)需求修改以下配置項(xiàng):-
advertised.listeners
:Kafka Broker的地址和端口配置。 -
zookeeper.connect
:ZooKeeper的地址和端口配置。
-
-
啟動(dòng)ZooKeeper:打開一個(gè)終端窗口,啟動(dòng)ZooKeeper服務(wù)器:
bin/zookeeper-server-start.sh config/zookeeper.properties
。 -
啟動(dòng)Kafka Broker:在另一個(gè)終端窗口中,啟動(dòng)Kafka Broker服務(wù)器:
bin/kafka-server-start.sh config/server.properties
。
頂尖架構(gòu)師棧
關(guān)注回復(fù)關(guān)鍵字
【C01】超10G后端學(xué)習(xí)面試資源
【IDEA】最新IDEA激活工具和碼及教程
【JetBrains軟件名】 最新軟件激活工具和碼及教程
工具&碼&教程
本文由 mdnice 多平臺(tái)發(fā)布