chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

Kafka 的簡(jiǎn)介

jf_ro2CN3Fa ? 來(lái)源:芋道源碼 ? 2023-07-03 11:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 kafka簡(jiǎn)介

2 為什么要用消息系統(tǒng)

3 kafka基礎(chǔ)知識(shí)

4 kafka集群架構(gòu)

5 總結(jié)

5080c866-1942-11ee-962d-dac502259ad0.png

1 kafka簡(jiǎn)介

其主要設(shè)計(jì)目標(biāo)如下:

以時(shí)間復(fù)雜度為O(1)的方式提供消息持久化能力,即使對(duì)TB級(jí)以上數(shù)據(jù)也能保證常數(shù)時(shí)間的訪問(wèn)性能

高吞吐率。即使在非常廉價(jià)的機(jī)器上也能做到單機(jī)支持每秒100K條消息的傳輸

支持Kafka Server間的消息分區(qū),及分布式消費(fèi),同時(shí)保證每個(gè)partition內(nèi)的消息順序傳輸,同時(shí)支持離線數(shù)據(jù)處理和實(shí)時(shí)數(shù)據(jù)處理

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

2 為什么要用消息系統(tǒng)

Kafka 本質(zhì)上是一個(gè) MQ(Message Queue),使用消息隊(duì)列的好處?

解耦:允許我們獨(dú)立修改隊(duì)列兩邊的處理過(guò)程而互不影響。

冗余:有些情況下,我們?cè)谔幚頂?shù)據(jù)的過(guò)程會(huì)失敗造成數(shù)據(jù)丟失。消息隊(duì)列把數(shù)據(jù)進(jìn)行持久化直到它們已經(jīng)被完全處理,通過(guò)這一方式規(guī)避了數(shù)據(jù)丟失風(fēng)險(xiǎn), 確保你的數(shù)據(jù)被安全的保存直到你使用完畢

峰值處理能力:不會(huì)因?yàn)橥话l(fā)的流量請(qǐng)求導(dǎo)致系統(tǒng)崩潰,消息隊(duì)列能夠使服務(wù)頂住突發(fā)的訪問(wèn)壓力, 有助于解決生產(chǎn)消息和消費(fèi)消息的處理速度不一致的情況

異步通信:消息隊(duì)列允許用戶把消息放入隊(duì)列但不立即處理它, 等待后續(xù)進(jìn)行消費(fèi)處理。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/


3 kafka基礎(chǔ)知識(shí)

下面給出 Kafka 一些重要概念,讓大家對(duì) Kafka 有個(gè)整體的認(rèn)識(shí)和感知

Producer:即消息生產(chǎn)者,向 Kafka Broker 發(fā)消息的客戶端。

Consumer:即消息消費(fèi)者,從 Kafka Broker 讀消息的客戶端。

Consumer Group:即消費(fèi)者組,消費(fèi)者組內(nèi)每個(gè)消費(fèi)者負(fù)責(zé)消費(fèi)不同分區(qū)的數(shù)據(jù),以提高消費(fèi)能力。一個(gè)分區(qū)只能由組內(nèi)一個(gè)消費(fèi)者消費(fèi),不同消費(fèi)者組之間互不影響。

Broker:一臺(tái) Kafka 機(jī)器就是一個(gè) Broker。一個(gè)集群是由多個(gè) Broker 組成的且一個(gè) Broker 可以容納多個(gè) Topic。

Topic:可以簡(jiǎn)單理解為隊(duì)列,Topic 將消息分類,生產(chǎn)者和消費(fèi)者面向的都是同一個(gè) Topic。

Partition:為了實(shí)現(xiàn)Topic擴(kuò)展性,提高并發(fā)能力,一個(gè)非常大的 Topic 可以分布到多個(gè) Broker 上,一個(gè) Topic 可以分為多個(gè) Partition 進(jìn)行存儲(chǔ),每個(gè) Partition 是一個(gè)有序的隊(duì)列。

Replica:即副本,為實(shí)現(xiàn)數(shù)據(jù)備份的功能,保證集群中的某個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),該節(jié)點(diǎn)上的 Partition 數(shù)據(jù)不丟失,且 Kafka 仍然能夠繼續(xù)工作,為此Kafka提供了副本機(jī)制,一個(gè) Topic 的每個(gè) Partition 都有若干個(gè)副本,一個(gè) Leader 副本和若干個(gè) Follower 副本。

Leader:即每個(gè)分區(qū)多個(gè)副本的主副本,生產(chǎn)者發(fā)送數(shù)據(jù)的對(duì)象,以及消費(fèi)者消費(fèi)數(shù)據(jù)的對(duì)象,都是 Leader。

Follower:即每個(gè)分區(qū)多個(gè)副本的從副本,會(huì)實(shí)時(shí)從 Leader 副本中同步數(shù)據(jù),并保持和 Leader 數(shù)據(jù)的同步。Leader 發(fā)生故障時(shí),某個(gè) Follower 還會(huì)被選舉并成為新的 Leader , 且不能跟 Leader 在同一個(gè)broker上, 防止崩潰數(shù)據(jù)可恢復(fù)。

Offset:消費(fèi)者消費(fèi)的位置信息,監(jiān)控?cái)?shù)據(jù)消費(fèi)到什么位置,當(dāng)消費(fèi)者掛掉再重新恢復(fù)的時(shí)候,可以從消費(fèi)位置繼續(xù)消費(fèi)。

ZooKeeper服務(wù):Kafka 集群能夠正常工作,需要依賴于 ZooKeeper,ZooKeeper 幫助 Kafka 存儲(chǔ)和管理集群元數(shù)據(jù)信息。在最新版本中, 已經(jīng)慢慢要脫離 ZooKeeper。

509bbd38-1942-11ee-962d-dac502259ad0.png50b66336-1942-11ee-962d-dac502259ad0.png

4 kafka集群架構(gòu)

工作流程

在了解kafka集群之前, 我們先來(lái)了解下kafka的工作流程, Kafka集群會(huì)將消息流存儲(chǔ)在 Topic 的中,每條記錄會(huì)由一個(gè)Key、一個(gè)Value和一個(gè)時(shí)間戳組成。

50db8486-1942-11ee-962d-dac502259ad0.png

Kafka 中消息是以 Topic 進(jìn)行分類的,生產(chǎn)者生產(chǎn)消息,消費(fèi)者消費(fèi)消息,讀取和消費(fèi)的都是同一個(gè) Topic。但是Topic 是邏輯上的概念, Partition 是物理上的概念,每個(gè) Partition 對(duì)應(yīng)一個(gè) log 文件,該 log 文件中存儲(chǔ)的就是 Producer 生產(chǎn)的數(shù)據(jù)。Producer 端生產(chǎn)的數(shù)據(jù)會(huì)不斷順序追加到該 log 文件末尾,并且每條數(shù)據(jù)都會(huì)記錄有自己的 Offset 。而消費(fèi)者組中的每個(gè)消費(fèi)者,也都會(huì)實(shí)時(shí)記錄當(dāng)前自己消費(fèi)到了哪個(gè) Offset,方便在崩潰恢復(fù)時(shí),可以繼續(xù)從上次的 Offset 位置消費(fèi)。

存儲(chǔ)機(jī)制

5148309a-1942-11ee-962d-dac502259ad0.png

此時(shí) Producer 端生產(chǎn)的消息會(huì)不斷追加到 log 文件末尾,這樣文件就會(huì)越來(lái)越大, 為了防止 log 文件過(guò)大導(dǎo)致數(shù)據(jù)定位效率低下,那么Kafka 采取了分片和索引機(jī)制。它將每個(gè) Partition 分為多個(gè) Segment,每個(gè) Segment 對(duì)應(yīng)4個(gè)文件:“.index” 索引文件, “.log” 數(shù)據(jù)文件, “.snapshot” 快照文件, “.timeindex” 時(shí)間索引文件。這些文件都位于同一文件夾下面,該文件夾的命名規(guī)則為:topic 名稱-分區(qū)號(hào)。例如, heartbeat心跳上報(bào)服務(wù) 這個(gè) topic 有三個(gè)分區(qū),則其對(duì)應(yīng)的文件夾為 heartbeat-0,heartbeat-1,heartbeat-2這樣。

518c1652-1942-11ee-962d-dac502259ad0.png

index, log, snapshot, timeindex 文件以當(dāng)前 Segment 的第一條消息的 Offset 命名。其中 “.index” 文件存儲(chǔ)大量的索引信息,“.log” 文件存儲(chǔ)大量的數(shù)據(jù),索引文件中的元數(shù)據(jù)指向?qū)?yīng)數(shù)據(jù)文件中 Message 的物理偏移量。

下圖為index 文件和 log 文件的結(jié)構(gòu)示意圖:

51ae2bde-1942-11ee-962d-dac502259ad0.png

Replica - 副本

kafka中的 Partition 為了保證數(shù)據(jù)安全,每個(gè) Partition 可以設(shè)置多個(gè)副本。此時(shí)我們對(duì)分區(qū)0,1,2分別設(shè)置3個(gè)副本(注:設(shè)置兩個(gè)副本是比較合適的)。而且每個(gè)副本都是有"角色"之分的,它們會(huì)選取一個(gè)副本作為 Leader 副本,而其他的作為 Follower 副本,我們的 Producer 端在發(fā)送數(shù)據(jù)的時(shí)候,只能發(fā)送到Leader Partition里面 ,然后Follower Partition會(huì)去Leader那自行同步數(shù)據(jù), Consumer 消費(fèi)數(shù)據(jù)的時(shí)候,也只能從 Leader 副本那去消費(fèi)數(shù)據(jù)的。

51f258f4-1942-11ee-962d-dac502259ad0.png523ef07e-1942-11ee-962d-dac502259ad0.png

Controller

Kafka Controller,其實(shí)就是一個(gè) Kafka 集群中一臺(tái) Broker,它除了具有普通Broker 的消息發(fā)送、消費(fèi)、同步功能之外,還需承擔(dān)一些額外的工作。Kafka 使用公平競(jìng)選的方式來(lái)確定 Controller ,最先在 ZooKeeper 成功創(chuàng)建臨時(shí)節(jié)點(diǎn) /controller 的Broker會(huì)成為 Controller ,一般而言,Kafka集群中第一臺(tái)啟動(dòng)的 Broker 會(huì)成為Controller,并將自身 Broker 編號(hào)等信息寫入ZooKeeper臨時(shí)節(jié)點(diǎn)/controller。

Offset 的維護(hù)

Consumer 在消費(fèi)過(guò)程中可能會(huì)出現(xiàn)斷電宕機(jī)等故障,在 Consumer 恢復(fù)后,需要從故障前的 Offset 位置繼續(xù)消費(fèi)。所以 Consumer 需要實(shí)時(shí)記錄自己消費(fèi)到了哪個(gè) Offset,以便故障恢復(fù)后繼續(xù)消費(fèi)。在 Kafka 0.9 版本之前,Consumer 默認(rèn)將 Offset 保存在 ZooKeeper 中,但是從 0.9 版本開始,Consumer 默認(rèn)將 Offset 保存在 Kafka 一個(gè)內(nèi)置的 Topic 中,該 Topic 為 __consumer_offsets, 以支持高并發(fā)的讀寫。

5 總結(jié)

上面和大家一起深入探討了 Kafka 的簡(jiǎn)介, 基礎(chǔ)知識(shí)和集群架構(gòu),后續(xù)會(huì)從Kafka 三高(高性能, 高可用, 高并發(fā))方面來(lái)詳細(xì)闡述其巧妙的設(shè)計(jì)思想。

聲明:本文內(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

    文章

    7291

    瀏覽量

    93356
  • 管理系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    2846

    瀏覽量

    38008
  • kafka
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    5486

原文標(biāo)題:Kafka基礎(chǔ)入門篇

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    kafka設(shè)計(jì)原理的深度探討

    Kafka簡(jiǎn)介 Kafka是一種分布式的,基于發(fā)布/訂閱的消息系統(tǒng)。主要設(shè)計(jì)目標(biāo)如下: 以時(shí)間復(fù)雜度為O(1)的方式提供消息持久化能力,即使對(duì)TB級(jí)以上數(shù)據(jù)也能保證常數(shù)時(shí)間的訪問(wèn)性能 高吞吐率。即使
    的頭像 發(fā)表于 10-08 07:50 ?2442次閱讀
    <b class='flag-5'>kafka</b>設(shè)計(jì)原理的深度探討

    [6.3.1]--6.3數(shù)據(jù)分發(fā)中間件Kafka簡(jiǎn)介-視頻

    大數(shù)據(jù)
    學(xué)習(xí)電子知識(shí)
    發(fā)布于 :2022年12月27日 02:52:18

    Apache Kafka簡(jiǎn)介(1)#分布式數(shù)據(jù)

    分布式數(shù)據(jù)
    未來(lái)加油dz
    發(fā)布于 :2023年07月03日 22:45:31

    Apache Kafka簡(jiǎn)介(2)#分布式數(shù)據(jù)

    分布式數(shù)據(jù)
    未來(lái)加油dz
    發(fā)布于 :2023年07月03日 22:45:56

    Kafka特性和應(yīng)用場(chǎng)景

    Kafka簡(jiǎn)介及部署
    發(fā)表于 06-17 09:31

    基于發(fā)布與訂閱的消息系統(tǒng)Kafka

    Kafka權(quán)威指南》——初識(shí) Kafka
    發(fā)表于 03-05 13:46

    Kafka基礎(chǔ)入門文檔

    kafka系統(tǒng)入門教程(原理、配置、集群搭建、Java應(yīng)用、Kafka-manager)
    發(fā)表于 03-12 07:22

    Kafka集群環(huán)境的搭建

    1、環(huán)境版本版本:kafka2.11,zookeeper3.4注意:這里zookeeper3.4也是基于集群模式部署。2、解壓重命名tar -zxvf
    發(fā)表于 01-05 17:55

    Kafka的概念及Kafka的宕機(jī)

    問(wèn)題要從一次Kafka的宕機(jī)開始說(shuō)起。 筆者所在的是一家金融科技公司,但公司內(nèi)部并沒(méi)有采用在金融支付領(lǐng)域更為流行的 RabbitMQ ,而是采用了設(shè)計(jì)之初就為日志處理而生的 Kafka ,所以我一直
    的頭像 發(fā)表于 08-27 11:21 ?2706次閱讀
    <b class='flag-5'>Kafka</b>的概念及<b class='flag-5'>Kafka</b>的宕機(jī)

    物通博聯(lián)5G-kafka工業(yè)網(wǎng)關(guān)實(shí)現(xiàn)kafka協(xié)議對(duì)接到云平臺(tái)

    Kafka協(xié)議是一種基于TCP層的網(wǎng)絡(luò)協(xié)議,用于在分布式消息傳遞系統(tǒng)Apache Kafka中發(fā)送和接收消息。Kafka協(xié)議定義了客戶端和服務(wù)器之間的通信方式和數(shù)據(jù)格式,允許客戶端發(fā)送消息到K
    的頭像 發(fā)表于 07-11 10:44 ?969次閱讀

    Kafka架構(gòu)技術(shù):Kafka的架構(gòu)和客戶端API設(shè)計(jì)

    Kafka 給自己的定位是事件流平臺(tái)(event stream platform)。因此在消息隊(duì)列中經(jīng)常使用的 "消息"一詞,在 Kafka 中被稱為 "事件"。
    的頭像 發(fā)表于 10-10 15:41 ?2906次閱讀
    <b class='flag-5'>Kafka</b>架構(gòu)技術(shù):<b class='flag-5'>Kafka</b>的架構(gòu)和客戶端API設(shè)計(jì)

    kafka相關(guān)命令詳解

    kafka常用命令詳解
    的頭像 發(fā)表于 10-20 11:34 ?1612次閱讀

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

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

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

    游刃有余。在 828 華為云企業(yè)上云節(jié)期間,F(xiàn)lexusX 實(shí)例攜手海量?jī)?yōu)惠,助力企業(yè)輕松上云,享受數(shù)字化轉(zhuǎn)型的加速紅利。鏈接直達(dá) : 華為云Flexus云服務(wù)器X實(shí)例 ? Kafka 簡(jiǎn)介 Kafka
    的頭像 發(fā)表于 01-07 17:23 ?608次閱讀
    華為云 FlexusX 實(shí)例下的 <b class='flag-5'>Kafka</b> 集群部署實(shí)踐與性能優(yōu)化

    Kafka生產(chǎn)環(huán)境應(yīng)用方案

    Apache Kafka作為分布式流處理平臺(tái),在現(xiàn)代大數(shù)據(jù)架構(gòu)中扮演著消息中間件的核心角色。本文將從運(yùn)維工程師的角度,詳細(xì)介紹Kafka在生產(chǎn)環(huán)境中的部署方案、配置優(yōu)化、監(jiān)控運(yùn)維等關(guān)鍵技術(shù)。通過(guò)實(shí)戰(zhàn)案例和代碼示例,幫助運(yùn)維團(tuán)隊(duì)構(gòu)建穩(wěn)定、高效的
    的頭像 發(fā)表于 07-09 09:56 ?298次閱讀