色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么Kafka會(huì)怎么快 Kafka 的應(yīng)用場(chǎng)景

馬哥Linux運(yùn)維 ? 來(lái)源:51CTO技術(shù)棧 ? 作者:51CTO技術(shù)棧 ? 2021-06-04 16:12 ? 次閱讀

“Kafka 是由 LinkedIn 公司推出的一個(gè)高吞吐的分布式消息系統(tǒng),通俗地說(shuō)就是一個(gè)基于發(fā)布和訂閱的消息隊(duì)列,溫故而知新,反復(fù)學(xué)習(xí)優(yōu)秀的框架,定有所獲。

應(yīng)用場(chǎng)景

Kafka 的應(yīng)用場(chǎng)景如下:

異步解構(gòu):在上下游沒(méi)有強(qiáng)依賴的業(yè)務(wù)關(guān)系或針對(duì)單次請(qǐng)求不需要立刻處理的業(yè)務(wù)。

系統(tǒng)緩沖:有利于解決服務(wù)系統(tǒng)的吞吐量不一致的情況,尤其對(duì)處理速度較慢的服務(wù)來(lái)說(shuō)起到緩沖作用。

消峰作用:對(duì)于短時(shí)間偶現(xiàn)的極端流量,對(duì)后端的服務(wù)可以啟動(dòng)保護(hù)作用。

數(shù)據(jù)流處理:集成 spark 做實(shí)時(shí)數(shù)據(jù)流處理。

Kafka 拓?fù)鋱D(多副本機(jī)制)

153ddaa8-c482-11eb-9e57-12bb97331649.png

由上圖我們可以發(fā)現(xiàn) Kafka 是分布式,對(duì)于每一個(gè)分區(qū)都存在多副本,同時(shí)整個(gè)集群的管理都通過(guò) Zookeeper 管理。

Kafka 核心組件

①broker

Kafka 服務(wù)器,負(fù)責(zé)消息存儲(chǔ)和轉(zhuǎn)發(fā);一個(gè) broker 就代表一個(gè) kafka 節(jié)點(diǎn)。一個(gè) broker 可以包含多個(gè) topic。

②topic

消息類別,Kafka 按照 topic 來(lái)分類消息。

③partition

topic 的分區(qū),一個(gè) topic 可以包含多個(gè) partition,topic 消息保存在各個(gè) partition 上。

由于一個(gè) topic 能被分到多個(gè)分區(qū)上,給 kafka 提供給了并行的處理能力,這也正是 kafka 高吞吐的原因之一。

partition 物理上由多個(gè) segment 文件組成,每個(gè) segment 大小相等,順序讀寫(這也是 kafka 比較快的原因之一,不需要隨機(jī)寫)。

每個(gè) Segment 數(shù)據(jù)文件以該段中最小的 offset ,文件擴(kuò)展名為.log。當(dāng)查找 offset 的 Message 的時(shí)候,通過(guò)二分查找快找到 Message 所處于的 Segment 中。

154b3e96-c482-11eb-9e57-12bb97331649.png

④offset

消息在日志中的位置,可以理解是消息在 partition 上的偏移量,也是代表該消息的唯一序號(hào)。

同時(shí)也是主從之間的需要同步的信息

⑤Producer

生產(chǎn)者,負(fù)責(zé)向 Kafka Broker 發(fā)消息的客戶端。

⑥Consumer

消息消者,負(fù)責(zé)消費(fèi) Kafka Broker 中的消息。

⑦Consumer Group

消費(fèi)者組,每個(gè) Consumer 必須屬于一個(gè) group;(注意:一個(gè)分區(qū)只能由組內(nèi)一個(gè)消費(fèi)者消費(fèi),消費(fèi)者組之間互不影響。)

⑧Zookeeper

管理 kafka 集群,負(fù)責(zé)存儲(chǔ)了集群 broker、topic、partition 等 meta 數(shù)據(jù)存儲(chǔ),同時(shí)也負(fù)責(zé) broker 故障發(fā)現(xiàn),partition leader 選舉,負(fù)載均衡等功能。

服務(wù)治理

既然 Kafka 是分布式的發(fā)布/訂閱系統(tǒng),這樣如果做的集群之間數(shù)據(jù)同步和一致性,kafka 是不是肯定不會(huì)丟消息呢?以及宕機(jī)的時(shí)候如果進(jìn)行 Leader 選舉呢?

①數(shù)據(jù)同步

在 Kafka 中的 Partition 有一個(gè) leader 與多個(gè) follower,producer 往某個(gè) Partition 中寫入數(shù)據(jù),是只會(huì)往 leader 中寫入數(shù)據(jù),然后數(shù)據(jù)才會(huì)被復(fù)制進(jìn)其他的 Replica 中。

而每一個(gè) follower 可以理解成一個(gè)消費(fèi)者,定期去 leader 去拉消息。而只有數(shù)據(jù)同步了后,kafka 才會(huì)給生產(chǎn)者返回一個(gè) ACK 告知消息已經(jīng)存儲(chǔ)落地了。

②ISR

在 Kafka 中,為了保證性能,Kafka 不會(huì)采用強(qiáng)一致性的方式來(lái)同步主從的數(shù)據(jù)。

而是維護(hù)了一個(gè):in-sync Replica 的列表,Leader 不需要等待所有 Follower 都完成同步,只要在 ISR 中的 Follower 完成數(shù)據(jù)同步就可以發(fā)送 ACK 給生產(chǎn)者即可認(rèn)為消息同步完成。

同時(shí)如果發(fā)現(xiàn) ISR 里面某一個(gè) follower 落后太多的話,就會(huì)把它剔除。

具體流程如下:

15c1f270-c482-11eb-9e57-12bb97331649.png

15e25722-c482-11eb-9e57-12bb97331649.png

1606bec8-c482-11eb-9e57-12bb97331649.png

上述的做法并無(wú)法保證 Kafka 一定不丟消息。雖然 Kafka 通過(guò)多副本機(jī)制中最大限度保證消息不會(huì)丟失,但是如果數(shù)據(jù)已經(jīng)寫入系統(tǒng) page cache 中但是還沒(méi)來(lái)得及刷入磁盤,此時(shí)突然機(jī)器宕機(jī)或者掉電,那消息自然而然地就會(huì)丟失。

③Kafka 故障恢復(fù)

Kafka 通過(guò) Zookeeper 連坐集群的管理,所以這里的選舉機(jī)制采用的是Zab(zookeeper 使用):

生產(chǎn)者發(fā)生消息給 leader ,這個(gè)時(shí)候 leader 完成數(shù)據(jù)存儲(chǔ),突然發(fā)生故障,沒(méi)有給 producer 返回 ack。

通過(guò) ZK 選舉,其中一個(gè) follower 成為 leader ,這個(gè)時(shí)候 producer 重新請(qǐng)求新的 leader,并存儲(chǔ)數(shù)據(jù)。

Kafka 為什么這么快

①順序?qū)懘疟P

Kafka 采用了順序?qū)懘疟P,而由于順序?qū)懘疟P相對(duì)隨機(jī)寫,減少了尋地址的耗費(fèi)時(shí)間。(在 Kafka 的每一個(gè)分區(qū)里面消息是有序的)

②Page Cache

Kafka 在 OS 系統(tǒng)方面使用了 Page Cache 而不是我們平常所用的 Buffer。Page Cache 其實(shí)不陌生,也不是什么新鮮事物。

我們?cè)?Linux 上查看內(nèi)存的時(shí)候,經(jīng)常可以看到 buff/cache,兩者都是用來(lái)加速 IO 讀寫用的,而 cache 是作用于讀。

也就是說(shuō),磁盤的內(nèi)容可以讀到 cache 里面,這樣應(yīng)用程序讀磁盤就非常快。

而 buff 是作用于寫,我們開發(fā)寫磁盤都是,一般如果寫入一個(gè) buff 里面再 flush 就非常快。

而 Kafka 正是把這兩者發(fā)揮到了極致:Kafka 雖然是 scala 寫的,但是依舊在 Java 的虛擬機(jī)上運(yùn)行。

盡管如此,Kafka 它還是盡量避開了 JVM 的限制,它利用了 Page cache 來(lái)存儲(chǔ),這樣躲開了數(shù)據(jù)在 JVM 因?yàn)?GC 而發(fā)生的 STW。

另一方面也是 Page Cache 使得它實(shí)現(xiàn)了零拷貝,具體下面會(huì)講。

③零拷貝

無(wú)論是優(yōu)秀的 Netty 還是其他優(yōu)秀的 Java 框架,基本都在零拷貝減少了 CPU 的上下文切換和磁盤的 IO。

當(dāng)然 Kafka 也不例外。零拷貝的概念具體這里不作太詳細(xì)的復(fù)述,大致地給大家講一下這個(gè)概念。

傳統(tǒng)的一次應(yīng)用程請(qǐng)求數(shù)據(jù)的過(guò)程:

1682867a-c482-11eb-9e57-12bb97331649.png

這里大致可以發(fā)傳統(tǒng)的方式發(fā)生了 4 次拷貝,2 次 DMA 和 2 次 CPU,而 CPU 發(fā)生了4次的切換。

DMA 簡(jiǎn)單理解就是,在進(jìn)行 I/O 設(shè)備和內(nèi)存的數(shù)據(jù)傳輸?shù)臅r(shí)候,數(shù)據(jù)搬運(yùn)的工作全部交給 DMA 控制器,而 CPU 不再參與任何與數(shù)據(jù)搬運(yùn)相關(guān)的事情。

④零拷貝的方式

通過(guò)優(yōu)化我們可以發(fā)現(xiàn),CPU 只發(fā)生了 2 次的上下文切換和 3 次數(shù)據(jù)拷貝。

Linux 系統(tǒng)提供了系統(tǒng)事故調(diào)用函數(shù) “sendfile()”,這樣系統(tǒng)調(diào)用,可以直接把內(nèi)核緩沖區(qū)里的數(shù)據(jù)拷貝到 socket 緩沖區(qū)里,不再拷貝到用戶態(tài)。

⑤分區(qū)分段

我們上面也介紹過(guò),Kafka 采取了分區(qū)的模式,而每一個(gè)分區(qū)又對(duì)應(yīng)到一個(gè)物理分段,查找的時(shí)候可以根據(jù)二分查找快速定位。這樣不僅提供了數(shù)據(jù)讀的查詢效率,也提供了并行操作的方式。

⑥數(shù)據(jù)壓縮

Kafka 對(duì)數(shù)據(jù)提供了:Gzip 和 Snappy 壓縮協(xié)議等壓縮協(xié)議,對(duì)消息結(jié)構(gòu)體進(jìn)行了壓縮,一方面減少了帶寬,也減少了數(shù)據(jù)傳輸?shù)南摹?/p>

Kafka 安裝

①安裝 JDK

由于使用壓縮包還需要自己配置環(huán)境變量,所以這里推薦直接用 yum 安裝,熟悉查看目前 Java 的版本:

yum -y list Java*

安裝你想要的版本,這里我是 1.8:

yum install java-1.8.0-openjdk-devel.x86_64

查看是否安裝成功:

Java -version

②安裝 Zookeeper

首先需要去官網(wǎng)下載安裝包,然后解壓:

tar -zxvf zookeeper-3.4.9.tar.gz

要做的就是將這個(gè)文件復(fù)制一份,并命名為:zoo.cfg,然后在 zoo.cfg 中修改自己的配置即可。

cp zoo_sample.cfg zoo.cfgvim zoo.cfg

主要配置解釋如下:

# zookeeper內(nèi)部的基本單位,單位是毫秒,這個(gè)表示一個(gè)tickTime為2000毫秒,在zookeeper的其他配置中,都是基于tickTime來(lái)做換算的tickTime=2000# 集群中的follower服務(wù)器(F)與leader服務(wù)器(L)之間 初始連接 時(shí)能容忍的最多心跳數(shù)(tickTime的數(shù)量)。initLimit=10#syncLimit:集群中的follower服務(wù)器(F)與leader服務(wù)器(L)之間 請(qǐng)求和應(yīng)答 之間能容忍的最多心跳數(shù)(tickTime的數(shù)量)syncLimit=5# 數(shù)據(jù)存放文件夾,zookeeper運(yùn)行過(guò)程中有兩個(gè)數(shù)據(jù)需要存儲(chǔ),一個(gè)是快照數(shù)據(jù)(持久化數(shù)據(jù))另一個(gè)是事務(wù)日志dataDir=/tmp/zookeeper

## 客戶端訪問(wèn)端口clientPort=2181

配置環(huán)境變量:

vim ~/.bash_profile

export ZK=/usr/local/src/apache-zookeeper-3.7.0-bin

export PATH=$PATH:$ZK/bin

export PATH

// 啟動(dòng)

zkServer.sh start

下面能看啟動(dòng)成功:

③安裝 Kafka

下載 Kafka:

https://www.apache.org/dyn/closer.cgi?path=/kafka/2.8.0/kafka-2.8.0-src.tgz

安裝 Kafka:

tar -xzvf kafka_2.12-2.0.0.tgzbr

配置環(huán)境變量:

export ZK=/usr/local/src/apache-zookeeper-3.7.0-bin

export PATH=$PATH:$ZK/bin

export KAFKA=/usr/local/src/kafka

export PATH=$PATH:$KAFKA/bin

啟動(dòng) Kafka:

nohup kafka-server-start.sh 自己的配置文件路徑/server.properties &br

16c4c6a2-c482-11eb-9e57-12bb97331649.png

大功告成!

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7134

    瀏覽量

    89404
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9295

    瀏覽量

    85882
  • 拓?fù)鋱D
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

    14569

原文標(biāo)題:為什么Kafka如此之快?

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    多蹤示波器的原理和應(yīng)用場(chǎng)景

    熒光屏上顯示兩路波形。電子開關(guān)輪流接通A門和B門,A通道和B通道的輸入信號(hào)UA和UB按一定的時(shí)間分割,輪流被送到垂直偏轉(zhuǎn)板,在熒光屏上顯示出來(lái)。多蹤示波器的應(yīng)用場(chǎng)景多蹤示波器因其能夠同時(shí)顯示多個(gè)波形信號(hào)
    發(fā)表于 01-08 15:00

    華為云 FlexusX 實(shí)例下的 Kafka 集群部署實(shí)踐與性能優(yōu)化

    前言 華為云 FlexusX 實(shí)例,以創(chuàng)新的柔性算力技術(shù),為 Kafka 集群部署帶來(lái)前所未有的性能飛躍。其靈活的 CPU 與內(nèi)存配比,結(jié)合智能調(diào)度與加速技術(shù),讓 Kafka 在高并發(fā)場(chǎng)景下依然
    的頭像 發(fā)表于 01-07 17:23 ?176次閱讀
    華為云 FlexusX 實(shí)例下的 <b class='flag-5'>Kafka</b> 集群部署實(shí)踐與性能優(yōu)化

    docker 部署 kafka 及 ui 搭建

    建站、開發(fā)??測(cè)試環(huán)境、游戲服務(wù)器、音視頻服務(wù)等中低負(fù)載場(chǎng)景。 1.2 什么是 kafka 原文鏈接:https
    的頭像 發(fā)表于 01-03 09:30 ?149次閱讀
    docker 部署 <b class='flag-5'>kafka</b> 及 ui 搭建

    超詳細(xì)“零”基礎(chǔ)kafka入門篇

    1、認(rèn)識(shí)kafka 1.1 kafka簡(jiǎn)介 Kafka?是一個(gè)分布式流媒體平臺(tái) kafka官網(wǎng):http://kafka.apache.or
    的頭像 發(fā)表于 12-18 09:50 ?906次閱讀
    超詳細(xì)“零”基礎(chǔ)<b class='flag-5'>kafka</b>入門篇

    倍頻器的技術(shù)原理和應(yīng)用場(chǎng)景

    倍頻器是一種用于將輸入信號(hào)的頻率倍增的電子設(shè)備,以下是關(guān)于倍頻器的技術(shù)原理和應(yīng)用場(chǎng)景的詳細(xì)解釋:技術(shù)原理倍頻器的技術(shù)原理主要基于非線性元件(如二極管、晶體管等)的特性和頻率變換技術(shù)。 非線性元件
    發(fā)表于 11-29 14:49

    系統(tǒng)放大器的技術(shù)原理和應(yīng)用場(chǎng)景

    系統(tǒng)放大器是一種重要的電子設(shè)備,其技術(shù)原理和應(yīng)用場(chǎng)景都具有一定的專業(yè)性和廣泛性。以下是對(duì)系統(tǒng)放大器的技術(shù)原理和應(yīng)用場(chǎng)景的詳細(xì)介紹:一、技術(shù)原理系統(tǒng)放大器的工作原理基于電子器件的非線性特性,通過(guò)控制
    發(fā)表于 11-18 14:46

    實(shí)時(shí)示波器的技術(shù)原理和應(yīng)用場(chǎng)景

    實(shí)時(shí)示波器是一種高性能的電子測(cè)量?jī)x器,其技術(shù)原理和應(yīng)用場(chǎng)景對(duì)于電子工程和通信技術(shù)領(lǐng)域具有重要意義。以下是對(duì)實(shí)時(shí)示波器的技術(shù)原理和應(yīng)用場(chǎng)景的詳細(xì)解釋:一、技術(shù)原理實(shí)時(shí)示波器的工作原理基于電子束在熒光屏
    發(fā)表于 10-23 14:22

    Kafka高性能背后的技術(shù)原理

    Kafka 是一款性能非常優(yōu)秀的消息隊(duì)列,每秒處理的消息體量可以達(dá)到千萬(wàn)級(jí)別。
    的頭像 發(fā)表于 10-23 09:37 ?405次閱讀
    <b class='flag-5'>Kafka</b>高性能背后的技術(shù)原理

    源測(cè)量單元設(shè)備的技術(shù)原理和應(yīng)用場(chǎng)景

    源測(cè)量單元(SMU)設(shè)備是一種集成了精密電源(PPS)和高性能數(shù)字萬(wàn)用表(DMM)功能的測(cè)試設(shè)備。以下是對(duì)其技術(shù)原理和應(yīng)用場(chǎng)景的詳細(xì)解析:一、技術(shù)原理 集成功能: SMU在單個(gè)儀器中集成了電源
    發(fā)表于 10-22 11:10

    華為云分布式消息服務(wù) DMS 9 月新動(dòng)態(tài)上線啦!

    【摘要】 RocketMQ 5.X 專業(yè)版、kafka 監(jiān)控大屏、CloudPond 部署等多項(xiàng)特性,一睹為! 華為云分布式消息服務(wù)DMS是完全托管的消息隊(duì)列服務(wù),可完全兼容業(yè)界主流的 Kafka
    的頭像 發(fā)表于 10-15 09:54 ?495次閱讀
    華為云分布式消息服務(wù) DMS 9 月新動(dòng)態(tài)上線啦!

    FPGA與MCU的應(yīng)用場(chǎng)景

    FPGA的應(yīng)用場(chǎng)景有這些: 快速原型設(shè)計(jì) FPGA可以快速配置成多種定制數(shù)字電路,允許在不需要昂貴且耗時(shí)的制造過(guò)程的情況下進(jìn)行快速部署和修改。 硬件加速 在需要高性能和低延遲的應(yīng)用中,F(xiàn)PGA的并行
    發(fā)表于 07-29 15:45

    恢復(fù)二極管的作用和使用場(chǎng)景

    恢復(fù)二極管(Fast Recovery Diode,簡(jiǎn)稱FRD)是一種具有特殊性能的半導(dǎo)體二極管,其主要特點(diǎn)是開關(guān)特性好、反向恢復(fù)時(shí)間短。這種特性使得恢復(fù)二極管在多種電子電路中發(fā)揮著重要作用。以下將詳細(xì)闡述恢復(fù)二極管的作用
    的頭像 發(fā)表于 07-24 15:24 ?1832次閱讀

    面試官:Kafka會(huì)丟消息嗎?

    許多開發(fā)人員普遍認(rèn)為,Kafka 的設(shè)計(jì)本身就能保證不會(huì)丟失消息。然而,Kafka 架構(gòu)和配置的細(xì)微差別會(huì)導(dǎo)致消息的丟失。我們需要了解它如何以及何時(shí)可能丟失消息,并防止此類情況的發(fā)生。
    的頭像 發(fā)表于 04-29 17:32 ?1066次閱讀
    面試官:<b class='flag-5'>Kafka</b><b class='flag-5'>會(huì)</b>丟消息嗎?

    NanoEdge AI的技術(shù)原理、應(yīng)用場(chǎng)景及優(yōu)勢(shì)

    能耗并提高數(shù)據(jù)安全性。本文將對(duì) NanoEdge AI 的技術(shù)原理、應(yīng)用場(chǎng)景以及優(yōu)勢(shì)進(jìn)行綜述。 1、技術(shù)原理 NanoEdge AI 的核心技術(shù)包括邊緣計(jì)算、神經(jīng)網(wǎng)絡(luò)壓縮和低功耗硬件設(shè)計(jì)。邊緣計(jì)算
    發(fā)表于 03-12 08:09

    Redis流與Kafka相比如何?

    我們先來(lái)看看Kafka的基本架構(gòu)。基本的數(shù)據(jù)結(jié)構(gòu)是主題。它是一個(gè)按時(shí)間排序的記錄序列,只需追加。使用這種數(shù)據(jù)結(jié)構(gòu)的好處在Jay Kreps的經(jīng)典博文The Log中得到了很好的描述。
    的頭像 發(fā)表于 02-21 16:09 ?500次閱讀
    Redis流與<b class='flag-5'>Kafka</b>相比如何?
    主站蜘蛛池模板: 青青视频国产依人在线 | 久久综合九色综合国产 | 人人碰国产免费线观看 | 韩国和日本免费不卡在线 | 神马伦理不卡午夜电影 | 久久精品国产亚洲精品2020 | 少妇伦子伦精品无码 | 国产毛A片啊久久久久久A | 亚洲狠狠97婷婷综合久久久久 | 欧美人与禽ZOZO性伦交视频 | 好看AV中文字幕在线观看 | chinese黑人第一次 | 国产亚洲精品线视频在线 | 久久亚洲伊人 | 97色伦图片7778久久 | 给我免费播放片bd国语 | 99久久精品久久久久久清纯 | 亚洲国产中文字幕在线视频综合 | 国产麻豆福利AV在线观看 | 日本综艺大尺度无删减版在线 | 亚洲人成伊人成综合网久久久 | 婷婷久久综合九色综合伊人色 | 新金梅瓶玉蒲团性奴3 | 中文中幕无码亚洲视频 | 亚洲精品视频免费看 | 含羞草影院免费区 | 亚洲AV蜜桃永久无码精品无码网 | 亚洲精品国产国语 | 久久受www免费人成_看片中文 | 国产伦精品一区二区三区精品 | 一受n攻高h全肉np | 人与禽物videos另类 | 日韩内射美女人妻一区二区三区 | 午夜理论在线观看不卡大地影院 | 亚洲欧美日本久久综合网站 | metart中国撒尿人体欣赏 | 亚洲欧美一区二区成人片 | 国产真实女人一级毛片 | bl 纯肉 高Hbl被强文 | 妻子的秘密HD观看 | 99久久国产综合精品成人影院 |