官方網(wǎng)址:https://kafka.apache.org/
×××:http://archive.apache.org/dist/kafka/
kafka簡(jiǎn)介
Kafka 是一個(gè)分布式的消息緩存系統(tǒng),用于日志處理的分布式消息隊(duì)列。日志數(shù)據(jù)容量大,但對(duì)可靠性要求不高,其日志數(shù)據(jù)主要包括用戶行為(登錄、瀏覽、點(diǎn)擊、分享、喜歡)以及系統(tǒng)運(yùn)行日志(CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)、系統(tǒng)及進(jìn)程狀態(tài))。當(dāng)前很多的消息隊(duì)列服務(wù)提供可靠交付保證,并默認(rèn)是即時(shí)消費(fèi)(不適合離線)。高可靠交付對(duì)日志不是必須的,故可通過(guò)降低可靠性來(lái)提高性能,同時(shí)通過(guò)構(gòu)建分布式的集群,允許消息在系統(tǒng)中累積,使得kafka 同時(shí)支持離線和在線日志處理。Kafka的設(shè)計(jì)理念之一就是同時(shí)提供離線處理和實(shí)時(shí)處理。根據(jù)這一特性,可以使用Storm這種實(shí)時(shí)流處理系統(tǒng)對(duì)消息進(jìn)行實(shí)時(shí)在線處理,同時(shí)使用Hadoop這種批處理系統(tǒng)進(jìn)行離線處理,還可以同時(shí)將數(shù)據(jù)實(shí)時(shí)備份到另一個(gè)數(shù)據(jù)中心,只需要保證這三個(gè)操作所使用的Consumer屬于不同的Consumer Group即可。
1、kafka 集群中的服務(wù)器都叫做broker
2、kafka 有兩類客戶端,一類叫producer(消息生產(chǎn)者),一類叫做consumer(消息消費(fèi)者),客戶端和broker 服務(wù)器之間采用tcp 協(xié)議連接
3、kafka 中不同業(yè)務(wù)系統(tǒng)的消息可以通過(guò)topic 進(jìn)行區(qū)分,而且每一個(gè)消息topic 都會(huì)被分區(qū),以分擔(dān)消息讀寫(xiě)的負(fù)載
4、每一個(gè)分區(qū)都可以有多個(gè)副本,以防止數(shù)據(jù)的丟失
5、某一個(gè)分區(qū)中的數(shù)據(jù)如果需要更新,都必須通過(guò)該分區(qū)所有副本中的leader 來(lái)更新
6、消費(fèi)者可以分組(Consumer Group),比如有兩個(gè)消費(fèi)者組A 和B,共同消費(fèi)一個(gè)topic:order_info,A 和B所消費(fèi)的消息不會(huì)重復(fù)
比如order_info 中有100 個(gè)消息,每個(gè)消息有一個(gè)id,編號(hào)從0-99,那么,如果A組消費(fèi)0-49 號(hào),B 組就消費(fèi)50-99 號(hào)
//生產(chǎn)環(huán)境中也可以讓多個(gè)consumer共同消費(fèi)同一個(gè)topic中的數(shù)據(jù),需要設(shè)置調(diào)整 //代碼段可以實(shí)現(xiàn)
7、消費(fèi)者在具體消費(fèi)某個(gè)topic 中的消息時(shí),可以指定起始偏移量
Kafka系列視頻教程之Kafka核心基礎(chǔ) -博彬
為什么使用kafka
1、作為緩存
2、解(系統(tǒng))耦合
3、時(shí)間小于10ms 基本上是一種實(shí)時(shí)的
他能簡(jiǎn)化,我們系統(tǒng)的設(shè)計(jì),提示公司的開(kāi)發(fā)速度,和效率
冗余
有些情況下,處理數(shù)據(jù)的過(guò)程會(huì)失敗。除非數(shù)據(jù)被持久化,否則將造成丟失。消息隊(duì)列把數(shù)據(jù)進(jìn)行持久化直到它們已經(jīng)被完全處理,通過(guò)這一方式規(guī)避了數(shù)據(jù)丟失風(fēng)險(xiǎn)。許多消息隊(duì)列所采用的"插入-獲取-刪除"范式中,在把一個(gè)消息從隊(duì)列中刪除之前,需要你的處理系統(tǒng)明確的指出該消息已經(jīng)被處理完畢,從而確保你的數(shù)據(jù)被安全的保存直到你使用完畢。
擴(kuò)展性
因?yàn)橄㈥?duì)列解耦了你的處理過(guò)程,所以增大消息入隊(duì)和處理的頻率是很容易的,只要另外增加處理過(guò)程即可。不需要改變代碼、不需要調(diào)節(jié)參數(shù)。擴(kuò)展就像調(diào)大電力按鈕一樣簡(jiǎn)單。
靈活性 & 峰值處理能力
在訪問(wèn)量劇增的情況下,應(yīng)用仍然需要繼續(xù)發(fā)揮作用,但是這樣的突發(fā)流量并不常見(jiàn);如果為以能處理這類峰值訪問(wèn)為標(biāo)準(zhǔn)來(lái)投入資源隨時(shí)待命無(wú)疑是巨大的浪費(fèi)。使用消息隊(duì)列能夠使關(guān)鍵組件頂住突發(fā)的訪問(wèn)壓力,而不會(huì)因?yàn)橥话l(fā)的超負(fù)荷的請(qǐng)求而完全崩潰。
可恢復(fù)性
系統(tǒng)的一部分組件失效時(shí),不會(huì)影響到整個(gè)系統(tǒng)。消息隊(duì)列降低了進(jìn)程間的耦合度,所以即使一個(gè)處理消息的進(jìn)程掛掉,加入隊(duì)列中的消息仍然可以在系統(tǒng)恢復(fù)后被處理。
順序保證
在大多使用場(chǎng)景下,數(shù)據(jù)處理的順序都很重要。大部分消息隊(duì)列本來(lái)就是排序的,并且能保證數(shù)據(jù)會(huì)按照特定的順序來(lái)處理。Kafka保證一個(gè)Partition內(nèi)的消息的有序性。
緩沖
在任何重要的系統(tǒng)中,都會(huì)有需要不同的處理時(shí)間的元素。例如,加載一張圖片比應(yīng)用過(guò)濾器花費(fèi)更少的時(shí)間。消息隊(duì)列通過(guò)一個(gè)緩沖層來(lái)幫助任務(wù)最高效率的執(zhí)行———寫(xiě)入隊(duì)列的處理會(huì)盡可能的快速。該緩沖有助于控制和優(yōu)化數(shù)據(jù)流經(jīng)過(guò)系統(tǒng)的速度。
kafka重要概念
介紹kafka的幾個(gè)重要概念
Broker:消息中間件處理結(jié)點(diǎn),一個(gè)Kafka的server節(jié)點(diǎn)就是一個(gè)broker,多個(gè)broker可以組成一個(gè)Kafka集群;
Topic:一類消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能夠同時(shí)負(fù)責(zé)多個(gè)topic的分發(fā);
Partition:topic物理上的分組,一個(gè)topic可以分為多個(gè)partition,每個(gè)partition是一個(gè)有序的隊(duì);
Segment:每個(gè)partition又由多個(gè)segment file組成;
offset:每個(gè)partition都由一系列有序的、不可變的消息組成,這些消息被連續(xù)的追加到partition中。partition中的每個(gè)消息都有一個(gè)連續(xù)的序列號(hào)叫做offset,用于partition唯一標(biāo)識(shí)一條消息;
message:這個(gè)算是kafka文件中最小的存儲(chǔ)單位,即是 a commit log。
topic:創(chuàng)建topic名稱
partition:分區(qū)編號(hào)
offset:表示該partition已經(jīng)消費(fèi)了多少message
logsize:表示該paritition生產(chǎn)了多少的message
lag:表示有多少條message未被消費(fèi)
owner:表示消費(fèi)者
create:表示該partition創(chuàng)建時(shí)間
last seen:表示消費(fèi)狀態(tài)刷新最新時(shí)間
kafka的優(yōu)點(diǎn):
消息隊(duì)列kafka特性 https://blog.csdn.net/qq_36236890/article/details/81174504
1、單機(jī)吞吐量:
10萬(wàn)級(jí)別,這是kafka大的優(yōu)勢(shì),就是他的吞吐量高,一般配合大數(shù)據(jù)類的系統(tǒng)來(lái)進(jìn)行實(shí)施數(shù)據(jù)計(jì)算,日志采集等場(chǎng)景
2、topic數(shù)據(jù)對(duì)吞吐量的影響:
topic從幾十個(gè)到上百個(gè)不等,但是topic越多,會(huì)很大程度的影響吞吐量,所以在同等機(jī)器下,kafka經(jīng)量保證topic數(shù)量不要過(guò)度。如果要支撐大規(guī)模的topic的話,需要增加更多的集群資源。
3、時(shí)效性:
延遲控制在ms以內(nèi)
4、可用性:
非常高,kafka是分布是的,一個(gè)數(shù)據(jù)多個(gè)副本,少數(shù)機(jī)器的宕機(jī),不會(huì)丟數(shù)據(jù),不會(huì)導(dǎo)致不可用
5、消息可靠性
經(jīng)過(guò)參數(shù)優(yōu)化配置,消息可以做到0丟失
6、功能支持
功能較為簡(jiǎn)單,主要支持簡(jiǎn)單的MQ功能,在大數(shù)據(jù)領(lǐng)域的實(shí)時(shí)計(jì)算以及日志采集被大規(guī)模使用,是事實(shí)上的標(biāo)準(zhǔn)
7、優(yōu)劣勢(shì)總結(jié)
kafka的特點(diǎn)其實(shí)很明顯,就是僅僅提供較少的核心功能,但是提供較高的吞吐量,ms級(jí)別的延遲,較高的可用性以及可靠性,而且是分布式的,可以任意的擴(kuò)展,同時(shí)kafka也是做好的是支撐少量的topic數(shù)量即可,保證其吞吐量,而且kafka唯一的一點(diǎn)劣勢(shì)就是可能出現(xiàn)就消息的重復(fù)消費(fèi),那么對(duì)數(shù)據(jù)準(zhǔn)確性會(huì)產(chǎn)生影響,在大數(shù)據(jù)領(lǐng)域中以及日志收集中,這點(diǎn)輕微可以忽略。
kafka的特性就是天然適合大數(shù)據(jù)實(shí)時(shí)計(jì)算以及日志的收集。
Kafka天生就是一個(gè)分布式的消息隊(duì)列,它可以由多個(gè)broker組成,每個(gè)broker是一個(gè)節(jié)點(diǎn);你創(chuàng)建一個(gè)topic,這個(gè)topic可以劃分為多個(gè)partition,每個(gè)partition可以存在于不同的broker上,每個(gè)partition就放一部分?jǐn)?shù)據(jù)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。