女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

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

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

小林coding ? 來(lái)源:小林coding ? 2023-10-10 15:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天我們來(lái)聊一聊 Kafka 的架構(gòu)。

大家一般熟悉的是三層結(jié)構(gòu):生產(chǎn)者、消費(fèi)者、消息代理(Message Broker)。其實(shí) Kafka 有更加詳細(xì)的架構(gòu)。

我們來(lái)一起看看。

Kafka 給自己的定位是事件流平臺(tái)(event stream platform)。因此在消息隊(duì)列中經(jīng)常使用的 "消息"一詞,在 Kafka 中被稱為 "事件"。

下圖詳細(xì)展示了 Kafka 的架構(gòu)和客戶端 API 設(shè)計(jì)。我們可以看到,盡管生產(chǎn)者、消費(fèi)者和消息代理仍然是架構(gòu)的關(guān)鍵,但要構(gòu)建一個(gè)高吞吐量、低時(shí)延的 Kafka,還需要更多的組件。讓我們逐一介紹這些組件。

從高層次來(lái)看,架構(gòu)分為兩層

計(jì)算層

存儲(chǔ)層

6f119bf0-666a-11ee-939d-92fbcf53809c.png

計(jì)算層

計(jì)算層允許各種應(yīng)用程序通過(guò) API 與 Kafka Broker 通信

生產(chǎn)者使用生產(chǎn)者 API。如果數(shù)據(jù)庫(kù)等外部系統(tǒng)想與 Kafka 通信,它還提供 Kafka Connect 作為集成 API。

消費(fèi)者通過(guò)消費(fèi)者 API 與 Broker 通信。我們可以使用 Kafka Connect API 將事件數(shù)據(jù)路由到其他數(shù)據(jù)處理平臺(tái)上,例如搜索引擎或數(shù)據(jù)庫(kù)。

此外,消費(fèi)者還可以使用 Kafka Streams API 進(jìn)行流式處理。如果要處理無(wú)邊界的數(shù)據(jù)流,我們可以創(chuàng)建一個(gè) KStream。

下面的代碼片段為主題 "訂單 "創(chuàng)建了一個(gè) KStream,并為 key 和 value 創(chuàng)建了 Serdes(Serializers and Deserializers,序列化和反序列化)。

如果我們只需要更新實(shí)體的最新狀態(tài),我們可以創(chuàng)建一個(gè) KTable 來(lái)維護(hù)狀態(tài)。

Kafka Streams 允許我們對(duì)事件流進(jìn)行聚合、過(guò)濾、分組和連接。

finalKStreamBuilderbuilder=newKStreamBuilder();
finalKStreamorderEvents=
builder.stream(Serdes.String(),orderEventSerde,"orders");

雖然 Kafka Streams API 在 Java 應(yīng)用程序中運(yùn)行良好,但有時(shí)我們可能希望部署一個(gè)獨(dú)立的流處理模塊,而不將其嵌入到應(yīng)用程序中。這時(shí),我們可以使用 ksqlDB。這是一個(gè)針對(duì)流處理進(jìn)行了優(yōu)化的數(shù)據(jù)庫(kù)集群。它還提供了 REST API,供我們查詢結(jié)果。

我們可以看到,有了計(jì)算層中的各種 API 支持,我們可以非常靈活地對(duì)事件流進(jìn)行鏈?zhǔn)讲僮鳌?/p>

例如,我們可以在消費(fèi)者中訂閱主題 "orders",按照產(chǎn)品維度進(jìn)行訂單聚合,然后將每個(gè)產(chǎn)品的訂單數(shù)發(fā)回 Kafka 主題 "ordersByProduct";另一個(gè)分析模塊可以訂閱這個(gè)主題并在界面上顯示這些訂單。

存儲(chǔ)層

這一層由 Kafka Broker 組成。Kafka Broker 以集群模式運(yùn)行。數(shù)據(jù)存儲(chǔ)在不同主題的分區(qū)中。

主題就像一個(gè)數(shù)據(jù)庫(kù)表,主題中的分區(qū)可以分布在不同的集群節(jié)點(diǎn)上。在分區(qū)內(nèi),事件嚴(yán)格按照偏移量(offset)排序。偏移量代表事件在分區(qū)中的位置,并單調(diào)遞增。

在 Broker 上持久化的事件是不可變的(immutable)、只可追加的(append only),即使是刪除也被模擬為刪除事件,而不是直接從磁盤上刪除數(shù)據(jù)。因此,生產(chǎn)者只能處理順序?qū)懭耄M(fèi)者只能順序讀取。

Kafka Broker 的職責(zé)包括管理分區(qū)、處理讀寫操作以及管理分區(qū)的數(shù)據(jù)復(fù)制。它的設(shè)計(jì)非常簡(jiǎn)單,因此易于擴(kuò)展

由于 Kafka Broker 是以集群模式部署的,因此有兩個(gè)必要的組件來(lái)管理節(jié)點(diǎn):控制面板和數(shù)據(jù)面板。

控制面板

控制平面管理 Kafka 集群的元數(shù)據(jù)。以前的版本中是由 Zookeeper 來(lái)管理控制器:挑選一個(gè) Broker 作為控制器(Controller)。現(xiàn)在,Kafka 使用名為 KRaft 的共識(shí)模塊來(lái)實(shí)現(xiàn)控制面板,選取幾個(gè) Broker 做為控制器。

為什么不再依賴 Zookeeper?因?yàn)槭褂?Zookeeper 時(shí),我們需要維護(hù)兩個(gè)不同類型的系統(tǒng):一個(gè)是 Zookeeper,另一個(gè)是 Kafka。有了 KRaft,我們只需維護(hù)一種類型的系統(tǒng),這使得配置和部署比以前容易得多。此外,KRaft 在向 Broker 傳播元數(shù)據(jù)方面效率更高。

我們不會(huì)在這里討論 KRaft 共識(shí)的細(xì)節(jié)。需要記住的一點(diǎn)是,控制器和 Broker 中的元數(shù)據(jù)緩存是通過(guò) Kafka 中的一個(gè)特殊主題同步的。

數(shù)據(jù)面板

數(shù)據(jù)面板處理數(shù)據(jù)的復(fù)制操作。單個(gè)分區(qū)的數(shù)據(jù)可以在不同的 Broker 上有多份拷貝,這些拷貝之間需要進(jìn)行數(shù)據(jù)同步。

下圖是一個(gè)示例。主題 "訂單"中的分區(qū) 0 在 3 個(gè)代理上有 3 個(gè)副本。Broker 1 上的分區(qū)是領(lǐng)導(dǎo)者(leader),當(dāng)前數(shù)據(jù)偏移量為 4;Broker 2 和 3 上的分區(qū)是跟隨者(follower),偏移量分別為 2 和 3。

6f1fd300-666a-11ee-939d-92fbcf53809c.png

第一步

為了趕上領(lǐng)導(dǎo)者,跟隨者 1 發(fā)出偏移量為 2 的 FetchRequest,跟隨者 2 發(fā)出偏移量為 3 的 FetchRequest。

第二步

然后,領(lǐng)導(dǎo)者相應(yīng)地向兩個(gè)跟隨者發(fā)送數(shù)據(jù)。

第三步

由于跟隨者的請(qǐng)求隱含地確認(rèn)了先前獲取記錄的接收情況,因此領(lǐng)導(dǎo)者會(huì)將偏移量 2 之前的記錄提交。

編輯:黃飛

聲明:本文內(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)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    17034

    瀏覽量

    183409
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2987

    瀏覽量

    107522
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1566

    瀏覽量

    63696
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3906

    瀏覽量

    65911
  • kafka
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    5377

原文標(biāo)題:面試官:Kafka架構(gòu)長(zhǎng)什么樣的?

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    kafka架構(gòu)與集群搭建

    kafka入門+集群搭建
    發(fā)表于 04-29 17:06

    EFK63+kafka+logstash架構(gòu)解讀

    EFK63+kafka+logstash日志分析平臺(tái)集群
    發(fā)表于 08-15 11:35

    基于發(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

    TCP回響客戶端:RAW API接口

    TCP回響客戶端例程(RAW API)
    的頭像 發(fā)表于 07-05 00:31 ?4223次閱讀
    TCP回響<b class='flag-5'>客戶端</b>:RAW <b class='flag-5'>API</b>接口

    架構(gòu)師應(yīng)該使用Kafka還是Rabbit MQ

    作為處理許多基于微服務(wù)的系統(tǒng)的軟件架構(gòu)師,我經(jīng)常遇到一個(gè)不斷重復(fù)的問(wèn)題:"我應(yīng)該使用RabbitMQ還是Kafka?" 由于某些原因,許多開發(fā)人員認(rèn)為這些技術(shù)是可互換的。 盡管在某些情況下確實(shí)如此,但這些平臺(tái)之間存在各種潛在的差
    的頭像 發(fā)表于 05-03 18:10 ?2556次閱讀
    <b class='flag-5'>架構(gòu)</b>師應(yīng)該使用<b class='flag-5'>Kafka</b>還是Rabbit MQ

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

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

    kafkaUI-lite Kafka UI界面客戶端工具

    ./oschina_soft/gitee-kafka-ui-lite.zip
    發(fā)表于 06-14 11:07 ?6次下載
    kafkaUI-lite <b class='flag-5'>Kafka</b> UI界面<b class='flag-5'>客戶端</b>工具

    想要kafka好用你就得知道這些工具

    工欲善其事,必先利其器。本文主要分享一下消息中間件kafka安裝部署的過(guò)程,以及我平時(shí)在工作中針對(duì)kafka用的一些客戶端工具和監(jiān)控工具。
    的頭像 發(fā)表于 05-22 16:33 ?1438次閱讀
    想要<b class='flag-5'>kafka</b>好用你就得知道這些工具

    Kafka 的簡(jiǎn)介

    ? 1 kafka簡(jiǎn)介 2 為什么要用消息系統(tǒng) 3 kafka基礎(chǔ)知識(shí) 4 kafka集群架構(gòu) 5 總結(jié) ? 1 kafka簡(jiǎn)介 其主要設(shè)計(jì)
    的頭像 發(fā)表于 07-03 11:10 ?878次閱讀
    <b class='flag-5'>Kafka</b> 的簡(jiǎn)介

    物通博聯(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ā)表于 07-11 10:44 ?731次閱讀

    如何將Kafka使用到我們的后端設(shè)計(jì)中

    的Web應(yīng)用,其包含了網(wǎng)頁(yè)前端客戶端(Client)、服務(wù)和數(shù)據(jù)庫(kù): 你需要記錄所有發(fā)生在你的Web應(yīng)用的事件,比如點(diǎn)擊、請(qǐng)求、搜索等
    的頭像 發(fā)表于 10-30 14:30 ?784次閱讀
    如何將<b class='flag-5'>Kafka</b>使用到我們的后端設(shè)計(jì)中

    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 ?699次閱讀
    Redis流與<b class='flag-5'>Kafka</b>相比如何?

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

    許多開發(fā)人員普遍認(rèn)為,Kafka 的設(shè)計(jì)本身就能保證不會(huì)丟失消息。然而,Kafka 架構(gòu)和配置的細(xì)微差別會(huì)導(dǎo)致消息的丟失。我們需要了解它如何以及何時(shí)可能丟失消息,并防止此類情況的發(fā)生。
    的頭像 發(fā)表于 04-29 17:32 ?1270次閱讀
    面試官:<b class='flag-5'>Kafka</b>會(huì)丟消息嗎?
    主站蜘蛛池模板: 通渭县| 慈利县| 苍溪县| 万宁市| 喀喇沁旗| 逊克县| 金沙县| 乌兰察布市| 宁晋县| 全州县| 临澧县| 石泉县| 莱州市| 安阳县| 黎川县| 龙海市| 湖南省| 永寿县| 榕江县| 乌兰县| 雷波县| 大新县| 九龙坡区| 汉寿县| 延庆县| 错那县| 田林县| 石台县| 左云县| 柞水县| 罗田县| 左权县| 天门市| 青铜峡市| 黑水县| 德安县| 尼勒克县| 永福县| 永宁县| 徐州市| 平武县|