最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Kafka的基本概念及其關(guān)鍵原理

2023-07-29 20:12 作者:小技術(shù)君  | 我要投稿

Apache Kafka是一種分布式事件存儲和流處理平臺。該項目旨在提供一個統(tǒng)一的、高吞吐量、低延遲的平臺,用于處理實時數(shù)據(jù)流。

圖片

?Kafka可以通過Kafka Connect連接到外部系統(tǒng)(用于數(shù)據(jù)導(dǎo)入/導(dǎo)出),并提供Kafka Streams庫用于流處理應(yīng)用程序。?它有許多用例,包括分布式日志記錄、流處理、數(shù)據(jù)集成和發(fā)布/訂閱消息傳遞。?Kafka是一個數(shù)據(jù)流系統(tǒng),允許開發(fā)人員實時響應(yīng)新事件的發(fā)生。?Kafka的架構(gòu)由存儲層和計算層組成。存儲層旨在高效存儲數(shù)據(jù),并且是一個分布式系統(tǒng),如果存儲需求隨時間增長,可以輕松地擴展系統(tǒng)以適應(yīng)增長。

計算層由四個核心組件組成:

1.生產(chǎn)者(Producer)2.消費者(Consumer)3.流處理(Streams)4.連接器(Connectors)API,使得Kafka可以在分布式系統(tǒng)中擴展應(yīng)用程序。

1. 生產(chǎn)者和消費者API:?Kafka強大的應(yīng)用程序?qū)拥幕A(chǔ)是用于訪問存儲的兩個基本API,即用于寫入事件的生產(chǎn)者API和用于讀取事件的消費者API。在這兩個API之上構(gòu)建了用于集成和處理的API。

2. Kafka Connect:?Kafka Connect建立在生產(chǎn)者和消費者API之上,提供了一種將數(shù)據(jù)在Kafka和外部系統(tǒng)之間集成的簡單方法。源連接器從外部系統(tǒng)中獲取數(shù)據(jù)并將其發(fā)送到Kafka主題。接收器連接器從Kafka主題獲取數(shù)據(jù)并將其寫入外部系統(tǒng)。

3. Kafka Streams:?用于處理到達(dá)的事件的Kafka Streams是一個Java庫,建立在生產(chǎn)者和消費者API之上。Kafka Streams允許您執(zhí)行實時流處理、強大的轉(zhuǎn)換和事件數(shù)據(jù)的聚合。

基本概念

消息(Message)

?消息是信息的記錄。每條消息都有一個可選的鍵,用于將消息路由到適當(dāng)?shù)姆謪^(qū),以及必需的值,即實際的信息。消息的鍵和值都是字節(jié)數(shù)組。

Kafka主題(Kafka Topics)

圖片

?主題是事件的日志。?Apache Kafka的最基本的組織單元是主題,類似于關(guān)系數(shù)據(jù)庫中的表。?您可以創(chuàng)建不同的主題來保存不同類型的事件,并創(chuàng)建不同的主題來保存過濾和轉(zhuǎn)換后的同一類型的事件。

重要屬性:

?首先,它們是追加寫入的:當(dāng)您將新消息寫入日志時,它總是追加到末尾。?其次,它們只能通過在日志中尋找任意偏移量來進(jìn)行讀取,然后按順序掃描日志條目進(jìn)行讀取。?第三,日志中的事件是不可變的 - 一旦某件事發(fā)生,幾乎不可能撤消它。?日志本質(zhì)上也是持久的。傳統(tǒng)的企業(yè)消息系統(tǒng)具有主題和隊列,用于臨時存儲消息以在源和目標(biāo)之間進(jìn)行緩沖。?每個主題可以配置為在達(dá)到一定年齡后過期數(shù)據(jù)。

Kafka分區(qū)(Kafka Partitioning)

圖片

?為了在主題中分布事件的存儲和處理,Kafka使用分區(qū)的概念。一個主題由一個或多個分區(qū)組成,這些分區(qū)可以存在于Kafka集群中的不同節(jié)點上。?分區(qū)是Kafka事件的主要存儲單元,盡管在分層存儲(Tiered Storage)中,一些事件存儲被移出了分區(qū)。?分區(qū)也是并行處理的主要單元??梢酝ㄟ^同時寫入多

個分區(qū)來并行地將事件寫入主題。

?同樣,消費者可以通過每個消費者實例從不同的分區(qū)讀取,將其工作負(fù)載分散開來。如果只使用一個分區(qū),只能有效地使用一個消費者實例。

分區(qū)工作原理:

?將主題分割為分區(qū)后,我們需要一種方法來決定將消息寫入哪個分區(qū)。通常情況下,如果消息沒有鍵,則后續(xù)消息將循環(huán)分布在主題的所有分區(qū)中。?例如,如果您正在生成與同一客戶關(guān)聯(lián)的所有事件,使用客戶ID作為鍵可以確保來自給定客戶的所有事件始終按順序到達(dá)。

Kafka Broker

?從物理基礎(chǔ)設(shè)施的角度來看,Apache Kafka由一組稱為Broker的機器網(wǎng)絡(luò)組成。?它們是獨立的機器,每臺機器上運行一個Kafka broker進(jìn)程。?每個Broker托管一些分區(qū)并處理將新事件寫入這些分區(qū)或從這些分區(qū)讀取事件的傳入請求。Broker還處理分區(qū)之間的復(fù)制。

集群(Cluster)

?Broker作為集群的一部分運行,共享負(fù)載并提供容錯能力。

偏移量(Offset)

?每條消息通過主題、所屬分區(qū)和偏移量號唯一標(biāo)識。偏移量是一個不斷遞增的整數(shù),以唯一地標(biāo)識消息在給定主題和分區(qū)中。在分區(qū)內(nèi),消息按偏移量號進(jìn)行排序。

復(fù)制(Replication)

圖片

?數(shù)據(jù)復(fù)制是Kafka的一個關(guān)鍵功能,它使得Kafka能夠提供高持久性和可用性。我們可以在主題級別啟用復(fù)制。?創(chuàng)建新主題時,可以指定復(fù)制因子,然后該主題的每個分區(qū)將被多次復(fù)制。?這個數(shù)字被稱為復(fù)制因子。使用復(fù)制因子N,通常情況下,我們可以容忍N-1個故障,而不會丟失數(shù)據(jù),并保持可用性。?每次讀寫到分區(qū)時,都經(jīng)過主分區(qū)(leader)。?只有當(dāng)所有同步副本將消息寫入其預(yù)寫日志時,消息才被視為已提交。?生產(chǎn)者可以單獨配置確認(rèn)策略。

Kafka生產(chǎn)者(Producers)

?生產(chǎn)者庫的API界面相當(dāng)輕量級:在Java中,有一個稱為KafkaProducer的類,您可以使用它連接到集群。?從表面上看,這是與生產(chǎn)消息有關(guān)的所有API界面。在幕后,該庫管理連接池、網(wǎng)絡(luò)緩沖區(qū)、等待代理確認(rèn)消息、在必要時重新傳輸消息等一系列細(xì)節(jié),應(yīng)用程序程序員不需要關(guān)心這些細(xì)節(jié)。

消費者(Consumers)

?使用消費者API與生產(chǎn)者類似。您使用一個稱為KafkaConsumer的類來連接到集群。?首先,Kafka與傳統(tǒng)消息隊列不同之處在于讀取消息不會將其銷毀;?實際上,在Kafka中,許多消費者從一個主題中讀取是很正常的。

Kafka Connect

?一方面,Kafka Connect是一種可插拔連接器的生態(tài)系統(tǒng),另一方面,它是一個客戶端應(yīng)用程序。作為客戶端應(yīng)用程序,Connect是一個在與Kafka brokers獨立的硬件上運行的服務(wù)器進(jìn)程。

Kafka Streams

?Kafka Streams是一個Java API,為您提供了對流處理的所有計算原語的便捷訪問:過濾、分組、聚合、連接等,使您不必在消費者API之上編寫框架代碼來執(zhí)行所有這些操作。?它還提供對由流處理計算產(chǎn)生的可能大量的狀態(tài)的支持。

圖片

流處理中的事件?

?事件是發(fā)生的事情的記錄,同時提供有關(guān)發(fā)生的事情的信息。事件的示例包括客戶訂單、付款、網(wǎng)站上的點擊或傳感器讀數(shù)。?事件記錄由時間戳、鍵、值和可選的標(biāo)頭組成。事件有效負(fù)載通常存儲在值中,鍵是可選的。

Kafka持久性

?發(fā)布的每批消息都存儲在分區(qū)的活動日志段中,其格式與生產(chǎn)者發(fā)布的格式完全相同。消息格式在生產(chǎn)者、消費者和代理之間保持一致,消除了序列化和反序列化的開銷。?Kafka使用頁面緩存進(jìn)行讀寫。所有讀取將直接從頁面緩存中進(jìn)行,寫入首先應(yīng)用于頁面緩存,然后定期同步。

日志壓縮

?Kafka主題的保留策略可以配置為“壓縮”或“刪除”。刪除根據(jù)日志保留字節(jié)或日志保留時間段清除舊的段文件。?如果將保留策略配置為壓縮,Kafka只會保留每個消息鍵的最新消息。如果

我們正在獲取與給定鍵相關(guān)的許多更新,并且只對最新消息感興趣,這將非常有用。例如,用戶更新事件。

領(lǐng)導(dǎo)者選舉

?當(dāng)代理崩潰時,它無法向Zookeeper發(fā)送心跳。Zookeeper的會話超時,然后通知集群控制器代理故障的情況。集群控制器獲取代理是領(lǐng)導(dǎo)者的所有分區(qū),并選擇ISR中的下一個條目并將其提升為領(lǐng)導(dǎo)者。

Kafka的基本概念及其關(guān)鍵原理的評論 (共 條)

分享到微博請遵守國家法律
德阳市| 崇仁县| 玉田县| 九寨沟县| 黄大仙区| 铁力市| 广昌县| 新竹县| 元江| 永寿县| 渭源县| 刚察县| 安西县| 易门县| 罗田县| 牡丹江市| 沽源县| 通榆县| 鹰潭市| 翁牛特旗| 宝山区| 滦南县| 三明市| 高清| 麻阳| 黄梅县| 星子县| 宁蒗| 茶陵县| 辉南县| 娄烦县| 区。| 荃湾区| 邹城市| 大化| 香河县| 金昌市| 明水县| 文昌市| 耿马| 嘉兴市|