欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:Kafka基本原理|特性

柚子快報(bào)激活碼778899分享:Kafka基本原理|特性

http://yzkb.51969.com/

Kafka是什么

Kafka是最初由Linkedin公司開(kāi)發(fā),是一個(gè)分布式、支持分區(qū)的(partition)、多副本的(replica),基于zookeeper協(xié)調(diào)的分布式消息系統(tǒng) 它的最大的特性就是可以實(shí)時(shí)的處理大量數(shù)據(jù)以滿足各種需求場(chǎng)景:比如基于hadoop的批處理系統(tǒng)、低延遲的實(shí)時(shí)系統(tǒng)、storm/Spark流式處理引擎,web/nginx日志、訪問(wèn)日志,消息服務(wù)等等,用scala語(yǔ)言編寫(xiě),Linkedin于2010年貢獻(xiàn)給了Apache基金會(huì)并成為頂級(jí)開(kāi)源 項(xiàng)目。

Kafka的主要應(yīng)用場(chǎng)景

日志收集: 通過(guò)Kafka收集和聚合來(lái)自不同源的日志數(shù)據(jù)。 流式處理: 利用Kafka進(jìn)行實(shí)時(shí)數(shù)據(jù)流的處理和分析。 事件sourcing: 基于Kafka的事件驅(qū)動(dòng)架構(gòu)進(jìn)行應(yīng)用開(kāi)發(fā)。 數(shù)據(jù)管道: 使用Kafka在不同系統(tǒng)間傳輸和共享數(shù)據(jù)。

Kafka的特性

高吞吐:能夠每秒處理數(shù)百萬(wàn)條消息,滿足大規(guī)模數(shù)據(jù)處理的需求,延遲最低只有幾毫秒

擴(kuò)展性:kafka集群支持熱擴(kuò)展,無(wú)需停機(jī)即可擴(kuò)展節(jié)點(diǎn)及節(jié)點(diǎn)上線。

持久性、可靠性:消息被持久化到本地磁盤(pán),并且支持?jǐn)?shù)據(jù)備份防止數(shù)據(jù)丟失

容錯(cuò)性:允許集群中節(jié)點(diǎn)失?。ㄈ舾北緮?shù)量為n,則允許n-1個(gè)節(jié)點(diǎn)失?。?/p>

高并發(fā):支持?jǐn)?shù)千個(gè)客戶端同時(shí)讀寫(xiě)

Kafka 的架構(gòu)原理

kafaka 底層架構(gòu) Producer:Producer即生產(chǎn)者,消息的產(chǎn)生者,是消息的入口。 Broker:kafka集群中包含一個(gè)或者多個(gè)服務(wù)實(shí)例(節(jié)點(diǎn)),這種服務(wù)實(shí)例被稱為broker(一個(gè)broker就是一個(gè)節(jié)點(diǎn)/一個(gè)服務(wù)器) Topic:每條發(fā)布到kafka集群的消息都屬于某個(gè)類(lèi)別,這個(gè)類(lèi)別就叫做topic Partition:partition是一個(gè)物理上的概念也叫分區(qū),每個(gè)topic包含一個(gè)或者多個(gè)partition。分區(qū)的作用是做負(fù)載,提高kafka的吞吐量。 Replication:每一個(gè)分區(qū)都有多個(gè)副本,副本的作用是做備胎。當(dāng)主分區(qū)(Leader)故障的時(shí)候會(huì)選擇一個(gè)備胎(Follower)上位,成為L(zhǎng)eader。在kafka中默認(rèn)副本的最大數(shù)量是10個(gè),且副本的數(shù)量不能大于Broker的數(shù)量,follower和leader是在不同的機(jī)器,同一機(jī)器對(duì)同一個(gè)分區(qū)也只可能存放一個(gè)副本(包括自己)。 Message:每一條發(fā)送的消息主體。 Consumer:消費(fèi)者,即消息的消費(fèi)方,是消息的出口。 Consumer Group:將多個(gè)消費(fèi)者組成一個(gè)消費(fèi)者組,同一個(gè)分區(qū)的數(shù)據(jù)只能被消費(fèi)者組中的某一個(gè)消費(fèi)者消費(fèi)。 Zookeeper:kafka集群依賴zookeeper來(lái)保存集群的的元信息,來(lái)保證系統(tǒng)的可用性。

kafaka 的主要組件

producer(生產(chǎn)者) producer主要是用于生產(chǎn)消息,是kafka當(dāng)中的消息生產(chǎn)者,生產(chǎn)的消息通過(guò)topic進(jìn)行歸類(lèi),保存到kafka的broker里面去。 topic(主題) kafka將消息以topic為單位進(jìn)行歸類(lèi); topic特指kafka處理的消息源(feeds of messages)的不同分類(lèi); topic是一種分類(lèi)。kafka主題始終是支持多用戶訂閱的;也就是說(shuō),一 個(gè)主題可以有零個(gè),一個(gè)或者多個(gè)消費(fèi)者訂閱寫(xiě)入的數(shù)據(jù); 在kafka集群中,可以有無(wú)數(shù)的主題; 生產(chǎn)者和消費(fèi)者消費(fèi)數(shù)據(jù)一般以主題為單位,更細(xì)粒度可以到分區(qū)級(jí)別。 partition(分區(qū)) kafka當(dāng)中,topic是消息的歸類(lèi),一個(gè)topic可以有多個(gè)分區(qū)(partition),每個(gè)分區(qū)保存部分topic的數(shù)據(jù),所有的partition當(dāng)中的數(shù)據(jù)全部合并起來(lái),就是一個(gè)topic當(dāng)中的所有的數(shù)據(jù)。 一個(gè)broker服務(wù)下,可以創(chuàng)建多個(gè)分區(qū); 每一個(gè)分區(qū)會(huì)有一個(gè)編號(hào):編號(hào)從0開(kāi)始。 每一個(gè)分區(qū)內(nèi)的數(shù)據(jù)是有序的,但全局的數(shù)據(jù)不能保證是有序的。(有序是指生產(chǎn)什么樣順序,消費(fèi)時(shí)也是什么樣的順序) consumer(消費(fèi)者) consumer是kafka當(dāng)中的消費(fèi)者,主要用于消費(fèi)kafka當(dāng)中的數(shù)據(jù),消費(fèi)者一定是歸屬于某個(gè)消費(fèi)組中的。 consumer group(消費(fèi)者組) 消費(fèi)者組由一個(gè)或者多個(gè)消費(fèi)者組成,同一個(gè)組中的消費(fèi)者對(duì)于同一條消息只消費(fèi)一次。

每個(gè)消費(fèi)者都屬于某個(gè)消費(fèi)者組,如果不指定,那么所有的消費(fèi)者都屬于默認(rèn)的組。

每個(gè)消費(fèi)者組都有一個(gè)ID,即group ID。組內(nèi)的所有消費(fèi)者協(xié)調(diào)在一起來(lái)消費(fèi)一個(gè)訂閱主題( topic)的所有分區(qū)(partition)。當(dāng)然,每個(gè)分區(qū)只能由同一個(gè)消費(fèi)組內(nèi)的一個(gè)消費(fèi)者(consumer)來(lái)消費(fèi),可以由不同的消費(fèi)組來(lái)消費(fèi)。

partition數(shù)量決定了每個(gè)consumer group中并發(fā)消費(fèi)者的最大數(shù)量。如下圖:

如上面左圖所示,如果只有兩個(gè)分區(qū),即使一個(gè)組內(nèi)的消費(fèi)者有4個(gè),也會(huì)有兩個(gè)空閑的。 如上面右圖所示,有4個(gè)分區(qū),每個(gè)消費(fèi)者消費(fèi)一個(gè)分區(qū),并發(fā)量達(dá)到最大4。

在來(lái)看如下一幅圖:

如上圖所示,不同的消費(fèi)者組消費(fèi)同一個(gè)topic,這個(gè)topic有4個(gè)分區(qū),分布在兩個(gè)節(jié)點(diǎn)上。左邊的 消費(fèi)組1有兩個(gè)消費(fèi)者,每個(gè)消費(fèi)者就要消費(fèi)兩個(gè)分區(qū)才能把消息完整的消費(fèi)完,右邊的 消費(fèi)組2有四個(gè)消費(fèi)者,每個(gè)消費(fèi)者消費(fèi)一個(gè)分區(qū)即可。

總結(jié)下kafka中分區(qū)與消費(fèi)組的關(guān)系

消費(fèi)組: 由一個(gè)或者多個(gè)消費(fèi)者組成,同一個(gè)組中的消費(fèi)者對(duì)于同一條消息只消費(fèi)一次。 某一個(gè)主題下的分區(qū)數(shù),對(duì)于消費(fèi)該主題的同一個(gè)消費(fèi)組下的消費(fèi)者數(shù)量,應(yīng)該小于等于該主題下的分區(qū)數(shù)。 同一個(gè)分區(qū)下的數(shù)據(jù),在同一時(shí)刻,不能同一個(gè)消費(fèi)組的不同消費(fèi)者消費(fèi)。 分區(qū)數(shù)越多,同一時(shí)間可以有越多的消費(fèi)者來(lái)進(jìn)行消費(fèi),消費(fèi)數(shù)據(jù)的速度就會(huì)越快,提高消費(fèi)的性能。

partition replicas(分區(qū)副本) kafka 中的分區(qū)副本如下圖所示:

kafka 分區(qū)副本

副本數(shù)(replication-factor):控制消息保存在幾個(gè)broker(服務(wù)器)上,一般情況下副本數(shù)等于broker的個(gè)數(shù)。

一個(gè)broker服務(wù)下,不可以創(chuàng)建多個(gè)副本因子。創(chuàng)建主題時(shí),副本因子應(yīng)該小于等于可用的broker數(shù)。

副本因子操作以分區(qū)為單位的。每個(gè)分區(qū)都有各自的主副本和從副本;

主副本叫做leader,從副本叫做 follower(在有多個(gè)副本的情況下,kafka會(huì)為同一個(gè)分區(qū)下的所有分區(qū),設(shè)定角色關(guān)系:一個(gè)leader和N個(gè) follower),處于同步狀態(tài)的副本叫做in-sync-replicas(ISR);

follower通過(guò)拉的方式從leader同步數(shù)據(jù)。 消費(fèi)者和生產(chǎn)者都是從leader讀寫(xiě)數(shù)據(jù),不與follower交互。

副本因子的作用:讓kafka讀取數(shù)據(jù)和寫(xiě)入數(shù)據(jù)時(shí)的可靠性。

副本因子是包含本身,同一個(gè)副本因子不能放在同一個(gè)broker中。

如果某一個(gè)分區(qū)有三個(gè)副本因子,就算其中一個(gè)掛掉,那么只會(huì)剩下的兩個(gè)中,選擇一個(gè)leader,但不會(huì)在其他的broker中,另啟動(dòng)一個(gè)副本(因?yàn)樵诹硪慌_(tái)啟動(dòng)的話,存在數(shù)據(jù)傳遞,只要在機(jī)器之間有數(shù)據(jù)傳遞,就會(huì)長(zhǎng)時(shí)間占用網(wǎng)絡(luò)IO,kafka是一個(gè)高吞吐量的消息系統(tǒng),這個(gè)情況不允許發(fā)生)所以不會(huì)在另一個(gè)broker中啟動(dòng)。

如果所有的副本都掛了,生產(chǎn)者如果生產(chǎn)數(shù)據(jù)到指定分區(qū)的話,將寫(xiě)入不成功。

lsr表示:當(dāng)前可用的副本。

kafka中的數(shù)據(jù)不丟失機(jī)制

生產(chǎn)者生產(chǎn)數(shù)據(jù)不丟失 發(fā)送消息方式 生產(chǎn)者發(fā)送給kafka數(shù)據(jù),可以采用同步方式或異步方式

同步方式:

發(fā)送一批數(shù)據(jù)給kafka后,等待kafka返回結(jié)果:

生產(chǎn)者等待10s,如果broker沒(méi)有給出ack響應(yīng),就認(rèn)為失敗。 生產(chǎn)者重試3次,如果還沒(méi)有響應(yīng),就報(bào)錯(cuò). 異步方式:

發(fā)送一批數(shù)據(jù)給kafka,只是提供一個(gè)回調(diào)函數(shù):

先將數(shù)據(jù)保存在生產(chǎn)者端的buffer中。buffer大小是2萬(wàn)條 。 滿足數(shù)據(jù)閾值或者數(shù)量閾值其中的一個(gè)條件就可以發(fā)送數(shù)據(jù)。 發(fā)送一批數(shù)據(jù)的大小是500條。 注:如果broker遲遲不給ack,而buffer又滿了,開(kāi)發(fā)者可以設(shè)置是否直接清空buffer中的數(shù)據(jù)。

ack機(jī)制(確認(rèn)機(jī)制) 生產(chǎn)者數(shù)據(jù)發(fā)送出去,需要服務(wù)端返回一個(gè)確認(rèn)碼,即ack響應(yīng)碼;ack的響應(yīng)有三個(gè)狀態(tài)值0,1,-1

0:生產(chǎn)者只負(fù)責(zé)發(fā)送數(shù)據(jù),不關(guān)心數(shù)據(jù)是否丟失,丟失的數(shù)據(jù),需要再次發(fā)送

1:partition的leader收到數(shù)據(jù),不管follow是否同步完數(shù)據(jù),響應(yīng)的狀態(tài)碼為1

-1:所有的從節(jié)點(diǎn)都收到數(shù)據(jù),響應(yīng)的狀態(tài)碼為-1

如果broker端一直不返回ack狀態(tài),producer永遠(yuǎn)不知道是否成功;producer可以設(shè)置一個(gè)超時(shí)時(shí)間10s,超過(guò)時(shí)間認(rèn)為失敗。

broker中數(shù)據(jù)不丟失 在broker中,保證數(shù)據(jù)不丟失主要是通過(guò)副本因子(冗余),防止數(shù)據(jù)丟失。 消費(fèi)者消費(fèi)數(shù)據(jù)不丟失 在消費(fèi)者消費(fèi)數(shù)據(jù)的時(shí)候,只要每個(gè)消費(fèi)者記錄好offset值即可,就能保證數(shù)據(jù)不丟失。也就是需要我們自己維護(hù)偏移量(offset),可保存在 Redis 中。

參考文章:https://www.cnblogs.com/itlz/p/14292104.html

柚子快報(bào)激活碼778899分享:Kafka基本原理|特性

http://yzkb.51969.com/

參考文章

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19581367.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄