真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Kafka核心思想概括和底層原理

本篇內(nèi)容主要講解“Kafka核心思想概括和底層原理”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Kafka核心思想概括和底層原理”吧!

成都創(chuàng)新互聯(lián)成立于2013年,先為柴桑等服務(wù)建站,柴桑等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為柴桑企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

Kafka核心思想概括

所有的消息以“有序日志“的方式存儲(chǔ),生產(chǎn)者將消息發(fā)布到末端(可理解為追加),消費(fèi)者從某個(gè)邏輯位按序讀取。

【場(chǎng)景一】消息中間件

在選擇消息中間件時(shí),我們的主要關(guān)注點(diǎn)有:性能、消息的可靠性,順序性。

1.性能

關(guān)于Kafka的高性能,主要是因?yàn)樗趯?shí)現(xiàn)上利用了操作系統(tǒng)一些底層的優(yōu)化技術(shù),盡管作為寫業(yè)務(wù)代碼的程序員,這些底層知識(shí)也是需要了解的。

Kafka核心思想概括和底層原理

【優(yōu)化一】零拷貝

這是Kafka在消費(fèi)者端的優(yōu)化,我們通過兩張圖來比較一下傳統(tǒng)方式與零拷貝方式的區(qū)別:

傳統(tǒng)方式:

Kafka核心思想概括和底層原理

  • 零拷貝方式:

  • 終極目標(biāo):如何讓數(shù)據(jù)不經(jīng)過用戶空間?

  • 從圖中可看出,零拷貝省略了拷貝到用戶緩沖的步驟,通過文件描述符,直接從內(nèi)核空間將數(shù)據(jù)復(fù)制到網(wǎng)卡接口。

Kafka核心思想概括和底層原理

【優(yōu)化二】順序?qū)懭氪疟P

寫入消息時(shí),采用文件追加的方式,并且不允許修改已經(jīng)寫入的消息,于是寫入磁盤的方式是順序?qū)懭?。我們通常認(rèn)為的基于磁盤讀寫性能較差,指的是基于磁盤的隨機(jī)讀寫;事實(shí)上,基于磁盤的順序讀寫,性能接近于內(nèi)存的隨機(jī)讀寫,以下是性能對(duì)比圖:

Kafka核心思想概括和底層原理

【優(yōu)化三】?jī)?nèi)存映射

  • 概括:用戶空間的一段內(nèi)存區(qū)域映射到內(nèi)核空間,這樣,無論是內(nèi)核空間或用戶空間對(duì)這段內(nèi)存區(qū)域的修改,都可以直接映射到另一個(gè)區(qū)域。

  • 優(yōu)勢(shì):如果內(nèi)核態(tài)和用戶態(tài)存在大量的數(shù)據(jù)傳輸,效率是非常高的。

  • 為什么會(huì)提高效率:概括來講,傳統(tǒng)方式為read()系統(tǒng)調(diào)用,進(jìn)行了兩次數(shù)據(jù)拷貝;內(nèi)存映射方式為mmap()系統(tǒng)調(diào)用,只進(jìn)行一次數(shù)據(jù)拷貝

【優(yōu)化四】批量壓縮

  • 生產(chǎn)者:批量發(fā)送消息集消費(fèi)者:主動(dòng)拉取數(shù)據(jù),同樣采用批量拉取的方式

2.可靠性

Kafka的副本機(jī)制是保證其可靠性的核心。

關(guān)于副本機(jī)制,我將它理解為Leader-Follower機(jī)制,就是多個(gè)服務(wù)器中有相同數(shù)據(jù)的多個(gè)副本,并且劃分的粒度是分區(qū)。很明顯,這樣的策略就有下面幾個(gè)問題必須解決:

  • 各副本間如何同步?

  • ISR機(jī)制:Leader動(dòng)態(tài)維護(hù)一個(gè)ISR(In-Sync Replica)列表,

  • Leader故障,如何選舉新的Leader?

  • 要想解決這個(gè)問題,就要引出Zookeeper,它是Kafka實(shí)現(xiàn)副本機(jī)制的前提,關(guān)于它的原理且聽下回分解,本篇還是從Kafka角度進(jìn)行分析。在這里我們只需要了解,一些關(guān)于Broker、Topics、Partitions的元信息存儲(chǔ)在Zookeeper中,Leader發(fā)生故障時(shí),從ISR集合中進(jìn)行選舉新的Leader。

request.required.acks來設(shè)置數(shù)據(jù)的可靠性:

Kafka核心思想概括和底層原理

分區(qū)機(jī)制和副本機(jī)制知識(shí)點(diǎn):

Kafka核心思想概括和底層原理

3.順序性

順序性保證主要依賴于分區(qū)機(jī)制 + 偏移量。

提到分區(qū),首先就要解釋一下相關(guān)的概念以及他們之間的關(guān)系,個(gè)人總結(jié)如下幾點(diǎn):

服務(wù)器(Broker):指一個(gè)獨(dú)立的服務(wù)器

主題(Topic):消息的邏輯分類,可跨Broker

分區(qū)(Partition):消息的物理分類,基本的存儲(chǔ)單元

這里盜一張圖闡述上述概念間的關(guān)系

Kafka核心思想概括和底層原理

  • 為什么分區(qū)機(jī)制可以保證消息的順序性?

  • Kafka可以保證一個(gè)分區(qū)內(nèi)消息是有序且不可變的。

  • 生產(chǎn)者:Kafka的消息是一個(gè)鍵值對(duì),我們通過設(shè)置鍵值,指定消息被發(fā)送到特定主題的特定分區(qū)。

  • 可以通過設(shè)置key,將同一類型的消息,發(fā)到同一個(gè)分區(qū),就可以保證消息的有序性。

  • 消費(fèi)者:消費(fèi)者需要通過保存偏移量,來記錄自己消費(fèi)到哪個(gè)位置,在0.10版本前,偏移量保存在zk中,后來保存在 __consumeroffsets topic中。

【場(chǎng)景二】流處理

在0.10版本后,Kafka內(nèi)置了流處理框架API——Kafka Streams,一個(gè)基于Kafka的流式處理類庫,它利用了上述,至此,Kafka也就隨之發(fā)展成為一個(gè)囊括消息系統(tǒng)、存儲(chǔ)系統(tǒng)、流處理系統(tǒng)的中央式的流處理平臺(tái)。

與已有的Spark Streaming平臺(tái)不同的是,Spark Streaming或Flink是一個(gè)是一個(gè)系統(tǒng)架構(gòu),而Kafka Streams屬于一個(gè)庫。Kafka Streams秉承簡(jiǎn)單的設(shè)計(jì)原則,優(yōu)勢(shì)體現(xiàn)在運(yùn)維上。同時(shí)Kafka Streams保持了上面提到的所有特性。

關(guān)于二者適合的應(yīng)用場(chǎng)景,已有大佬給出了結(jié)論,就不強(qiáng)行總結(jié)了。

  • Kafka Streams:適合”Kafka --> Kafka“場(chǎng)景

  • Spark Streaming:適合”Kafka --> 數(shù)據(jù)庫”或“Kafka --> 數(shù)據(jù)科學(xué)模型“場(chǎng)景

到此,相信大家對(duì)“Kafka核心思想概括和底層原理”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


文章名稱:Kafka核心思想概括和底層原理
文章URL:http://weahome.cn/article/jcpocs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部