自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kafka 三高架構(gòu)設(shè)計(jì)剖析

云計(jì)算 Kafka
在 Kafka 中,同一個(gè) Topic 的消息會(huì)被分成多個(gè)分區(qū)并將其分布在多個(gè) Broker 上,這些分區(qū)信息及與 Broker 的對(duì)應(yīng)關(guān)系也都是由 Zookeeper 在維護(hù)。

Kafka 核心問(wèn)題

  • 簡(jiǎn)單講下 Kafka 的架構(gòu)?
  • Kafka 是推模式還是拉模式,推拉的區(qū)別是什么?
  • Kafka 如何廣播消息?
  • Kafka 的消息是否是有序的?
  • Kafka 是否支持讀寫(xiě)分離?
  • Kafka 如何保證數(shù)據(jù)高可用?
  • Kafka 中 zookeeper 的作用?
  • 是否支持事務(wù)?
  • 分區(qū)數(shù)是否可以減少?

Kafka 架構(gòu)中的一般概念:

架構(gòu)

  • Producer:生產(chǎn)者,也就是發(fā)送消息的一方。生產(chǎn)者負(fù)責(zé)創(chuàng)建消息,然后將其發(fā)送到 Kafka。
  • Consumer:消費(fèi)者,也就是接受消息的一方。消費(fèi)者連接到 Kafka 上并接收消息,進(jìn)而進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理。
  • Consumer Group:一個(gè)消費(fèi)者組可以包含一個(gè)或多個(gè)消費(fèi)者。使用多分區(qū) + 多消費(fèi)者方式可以極大提高數(shù)據(jù)下游的處理速度,同一消費(fèi)組中的消費(fèi)者不會(huì)重復(fù)消費(fèi)消息,同樣的,不同消費(fèi)組中的消費(fèi)者消息消息時(shí)互不影響。Kafka 就是通過(guò)消費(fèi)組的方式來(lái)實(shí)現(xiàn)消息 P2P 模式和廣播模式。
  • Broker:服務(wù)代理節(jié)點(diǎn)。Broker 是 Kafka 的服務(wù)節(jié)點(diǎn),即 Kafka 的服務(wù)器。
  • Topic:Kafka 中的消息以 Topic 為單位進(jìn)行劃分,生產(chǎn)者將消息發(fā)送到特定的 Topic,而消費(fèi)者負(fù)責(zé)訂閱 Topic 的消息并進(jìn)行消費(fèi)。
  • Partition:Topic 是一個(gè)邏輯的概念,它可以細(xì)分為多個(gè)分區(qū),每個(gè)分區(qū)只屬于單個(gè)主題。同一個(gè)主題下不同分區(qū)包含的消息是不同的,分區(qū)在存儲(chǔ)層面可以看作一個(gè)可追加的日志(Log)文件,消息在被追加到分區(qū)日志文件的時(shí)候都會(huì)分配一個(gè)特定的偏移量(offset)。
  • Offset:offset 是消息在分區(qū)中的唯一標(biāo)識(shí),Kafka 通過(guò)它來(lái)保證消息在分區(qū)內(nèi)的順序性,不過(guò) offset 并不跨越分區(qū),也就是說(shuō),Kafka 保證的是分區(qū)有序性而不是主題有序性。
  • Replication:副本,是 Kafka 保證數(shù)據(jù)高可用的方式,Kafka 同一 Partition 的數(shù)據(jù)可以在多 Broker 上存在多個(gè)副本,通常只有主副本對(duì)外提供讀寫(xiě)服務(wù),當(dāng)主副本所在 broker 崩潰或發(fā)生網(wǎng)絡(luò)一場(chǎng),Kafka 會(huì)在 Controller 的管理下會(huì)重新選擇新的 Leader 副本對(duì)外提供讀寫(xiě)服務(wù)。
  • Record:實(shí)際寫(xiě)入 Kafka 中并可以被讀取的消息記錄。每個(gè) record 包含了 key、value 和 timestamp。

Kafka Topic Partitions Layout

主題

Kafka 將 Topic 進(jìn)行分區(qū),分區(qū)可以并發(fā)讀寫(xiě)。

Kafka Consumer Offset

consumer offset

Zookeeper

zookeeper

  • Broker 注冊(cè):Broker 是分布式部署并且之間相互獨(dú)立,Zookeeper 用來(lái)管理注冊(cè)到集群的所有 Broker 節(jié)點(diǎn)。
  • Topic 注冊(cè):在 Kafka 中,同一個(gè) Topic 的消息會(huì)被分成多個(gè)分區(qū)并將其分布在多個(gè) Broker 上,這些分區(qū)信息及與 Broker 的對(duì)應(yīng)關(guān)系也都是由 Zookeeper 在維護(hù)。
  • 生產(chǎn)者負(fù)載均衡:由于同一個(gè) Topic 消息會(huì)被分區(qū)并將其分布在多個(gè) Broker 上,因此,生產(chǎn)者需要將消息合理地發(fā)送到這些分布式的 Broker 上。
  • 消費(fèi)者負(fù)載均衡:與生產(chǎn)者類(lèi)似,Kafka 中的消費(fèi)者同樣需要進(jìn)行負(fù)載均衡來(lái)實(shí)現(xiàn)多個(gè)消費(fèi)者合理地從對(duì)應(yīng)的 Broker 服務(wù)器上接收消息,每個(gè)消費(fèi)者分組包含若干消費(fèi)者,每條消息都只會(huì)發(fā)送給分組中的一個(gè)消費(fèi)者,不同的消費(fèi)者分組消費(fèi)自己特定的 Topic 下面的消息,互不干擾。

答案

簡(jiǎn)單講下 Kafka 的架構(gòu)?

Producer、Consumer、Consumer Group、Topic、Partition。

Kafka 是推模式還是拉模式,推拉的區(qū)別是什么?

Kafka Producer 向 Broker 發(fā)送消息使用 Push 模式,Consumer 消費(fèi)采用的 Pull 模式。拉取模式,讓 consumer 自己管理 offset,可以提供讀取性能。

Kafka 如何廣播消息?

Consumer group。

Kafka 的消息是否是有序的?

Topic 級(jí)別無(wú)序,Partition 有序。

Kafka 是否支持讀寫(xiě)分離?

不支持,只有 Leader 對(duì)外提供讀寫(xiě)服務(wù)。

Kafka 如何保證數(shù)據(jù)高可用?

副本,ack,HW。

Kafka 中 zookeeper 的作用?

集群管理,元數(shù)據(jù)管理。

是否支持事務(wù)?

0.11 后支持事務(wù),可以實(shí)現(xiàn)”exactly once“。

分區(qū)數(shù)是否可以減少?

不可以,會(huì)丟失數(shù)據(jù)。

責(zé)任編輯:姜華 來(lái)源: 碼哥字節(jié)
相關(guān)推薦

2021-11-01 17:17:13

Kafka 高并發(fā)場(chǎng)景

2022-11-18 10:00:07

高并發(fā)架構(gòu)

2012-05-11 10:38:15

Cloud Found

2022-11-07 09:25:02

Kafka存儲(chǔ)架構(gòu)

2023-02-22 08:12:30

KafkaSender 線程

2021-05-07 15:27:23

架構(gòu)設(shè)計(jì)架構(gòu)開(kāi)發(fā)

2022-11-11 10:48:55

AQS源碼架構(gòu)

2022-03-29 15:10:22

架構(gòu)設(shè)計(jì)模型

2013-05-27 10:58:28

Tumblr架構(gòu)設(shè)計(jì)雅虎收購(gòu)

2023-03-15 08:17:27

Kafka網(wǎng)絡(luò)通信組件

2022-09-23 08:02:42

Kafka消息緩存

2015-06-02 04:17:44

架構(gòu)設(shè)計(jì)審架構(gòu)設(shè)計(jì)說(shuō)明書(shū)

2025-04-15 04:00:00

2021-06-10 07:49:27

Kafka 架構(gòu)設(shè)計(jì)

2023-12-26 08:16:56

Kafka緩存架構(gòu)客戶端

2023-07-05 08:00:52

MetrAuto系統(tǒng)架構(gòu)

2023-02-24 08:27:56

RabbitMQKafka架構(gòu)

2011-07-15 16:26:09

架構(gòu)設(shè)計(jì)

2015-06-02 04:34:05

架構(gòu)設(shè)計(jì)

2009-07-10 09:31:57

MyEclipse U
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)