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

Kafka和Redis如何解決流處理挑戰(zhàn)

開發(fā) 架構(gòu)
正如我們所看到的,流可以非常適合處理大量數(shù)據(jù),但也帶來了一系列挑戰(zhàn)。為了解決這些挑戰(zhàn),引入了新的專用系統(tǒng),如Apache Kafka和Redis Streams。

?雖然流可以是處理大量數(shù)據(jù)的有效方式,但它們也有自己的挑戰(zhàn)。讓我們看看其中的一些。

1. 如果消費(fèi)者無法像制作人創(chuàng)建塊那樣快速處理塊,會(huì)發(fā)生什么?一個(gè)例子:如果消費(fèi)者比生產(chǎn)者慢50%,會(huì)怎么樣?如果我們從一個(gè)10GB的文件開始,這意味著當(dāng)生產(chǎn)者處理完所有10GB時(shí),消費(fèi)者只處理了5GB。剩余的5GB在等待處理時(shí)會(huì)發(fā)生什么情況?突然之間,分配給仍然需要處理的數(shù)據(jù)的50到100字節(jié)必須擴(kuò)展到5GB。

圖片

圖1:如果消費(fèi)者的速度比生產(chǎn)者慢,則需要額外的內(nèi)存

2. 這只是一個(gè)噩夢場景。還有其他的。例如,如果消費(fèi)者在處理一條生產(chǎn)線時(shí)突然失效,會(huì)發(fā)生什么情況?你需要一種跟蹤正在處理的行的方法,以及一種允許重新讀取該行和隨后的所有行的機(jī)制。

圖片

圖2:當(dāng)消費(fèi)者失效時(shí)

3. 最后,如果你需要能夠處理不同的事件并將其發(fā)送給不同的消費(fèi)者,會(huì)發(fā)生什么?此外,如果增加額外的復(fù)雜性,一個(gè)消費(fèi)者的進(jìn)程依賴于另一個(gè)消費(fèi)者,那么就有相互依賴的進(jìn)程,會(huì)怎么樣?一個(gè)真正的風(fēng)險(xiǎn)是,你最終會(huì)遇到一個(gè)復(fù)雜的、緊耦合的、難以管理的單體系統(tǒng)——隨著不斷添加和刪除不同的生產(chǎn)者和消費(fèi)者,這些需求將不斷變化。

舉個(gè)例子(圖3),假設(shè)我們有一家大型零售店,擁有數(shù)千臺(tái)服務(wù)器,支持通過網(wǎng)絡(luò)應(yīng)用和移動(dòng)應(yīng)用進(jìn)行購物。

假設(shè)我們正在處理三種與支付、庫存和Web服務(wù)器日志相關(guān)的數(shù)據(jù),每種數(shù)據(jù)都有一個(gè)相應(yīng)的消費(fèi)者:“支付處理器”、“庫存處理器”和“Web服務(wù)器事件處理器”。此外,兩個(gè)消費(fèi)者之間存在著重要的相互依賴關(guān)系。在處理庫存之前,需要先驗(yàn)證付款。最后,每種類型的數(shù)據(jù)都有不同的目的地。如果是支付事件,則將輸出發(fā)送到所有系統(tǒng),如數(shù)據(jù)庫、電子郵件系統(tǒng)、CRM等。如果是Web服務(wù)器事件,則僅將其發(fā)送到數(shù)據(jù)庫。如果是庫存事件,則將其發(fā)送到數(shù)據(jù)庫和CRM。

你可以想象,這很快就會(huì)變得非常復(fù)雜和混亂。這還不包括我們需要為每個(gè)消費(fèi)者處理的慢消費(fèi)者和容錯(cuò)問題。

圖片

圖3:緊耦合的挑戰(zhàn),因?yàn)橛卸鄠€(gè)生產(chǎn)者和消費(fèi)者

當(dāng)然,所有這些都假設(shè)你正在處理一個(gè)單體架構(gòu),你有一臺(tái)服務(wù)器接收和處理所有事件。你將如何處理微服務(wù)架構(gòu)?在這種情況下,許多小型服務(wù)器,即微服務(wù),將處理事件,它們都需要能夠相互通信。突然間,你不僅僅有多個(gè)生產(chǎn)者和消費(fèi)者,它們還分散在多個(gè)服務(wù)器上。

微服務(wù)的一個(gè)關(guān)鍵好處是,它們解決了根據(jù)不斷變化的需求擴(kuò)展特定服務(wù)的問題。不幸的是,微服務(wù)只解決了一些問題。我們的生產(chǎn)者和消費(fèi)者之間仍然存在緊耦合,我們保留了庫存微服務(wù)和支付服務(wù)之間的依賴關(guān)系。我們在最初的流媒體示例中指出的問題仍然存在:

  • 我們還沒有弄清楚當(dāng)消費(fèi)者崩潰時(shí)該怎么辦。
  • 我們還沒有找到一種管理慢消費(fèi)者、不會(huì)迫使我們大幅擴(kuò)大緩沖區(qū)規(guī)模的方法。
  • 我們還沒有辦法確保數(shù)據(jù)不會(huì)丟失。

這些只是一些主要挑戰(zhàn)。讓我們看看如何解決這些問題。

圖片

圖4:微服務(wù)世界中緊耦合的挑戰(zhàn)

專用流處理系統(tǒng)

正如我們所看到的,流可以非常適合處理大量數(shù)據(jù),但也帶來了一系列挑戰(zhàn)。為了解決這些挑戰(zhàn),引入了新的專用系統(tǒng),如Apache Kafka和Redis Streams。在Kafka和Redis流的世界中,服務(wù)器不再像流那樣位于中心,其他一切都圍繞著它們。

數(shù)據(jù)工程師和數(shù)據(jù)架構(gòu)師經(jīng)常共享這種以流為中心的世界觀。當(dāng)流成為中心時(shí),一切都是流水線型的,這并不奇怪。

圖5顯示了前面看到的緊耦合示例的直接映射。讓我們看看它在高層次上是如何工作的。

圖片

  • 在這里,流和數(shù)據(jù)(事件)是一等公民,而不是處理它們的系統(tǒng)。
  • 任何有興趣發(fā)送數(shù)據(jù)(生產(chǎn)者)、接收數(shù)據(jù)(消費(fèi)者)或同時(shí)發(fā)送和接收數(shù)據(jù)(生產(chǎn)者和消費(fèi)者)的系統(tǒng)都連接到流處理系統(tǒng)。
  • 由于生產(chǎn)者和消費(fèi)者是解耦的,因此可以隨意添加其他消費(fèi)者或生產(chǎn)者。你可以聽任何你想聽的事件。這使得它非常適合微服務(wù)架構(gòu)。
  • 如果消費(fèi)者速度較慢,則可以通過添加更多消費(fèi)者來增加消費(fèi)。
  • 如果一個(gè)消費(fèi)者依賴于另一個(gè)消費(fèi)者,你可以簡單地監(jiān)聽該消費(fèi)者的輸出流,然后進(jìn)行處理。例如,在上圖中,庫存服務(wù)在處理庫存事件之前從庫存流(紫色)和支付處理流(橙色)的輸出接收事件。這就是解決相互依賴問題的方法。
  • 流中的數(shù)據(jù)是持久的(與在數(shù)據(jù)庫中一樣)。任何系統(tǒng)都可以隨時(shí)訪問任何數(shù)據(jù)。如果由于某種原因數(shù)據(jù)沒有被處理,你可以重新處理它。

許多流挑戰(zhàn)一度看似艱巨,甚至無法克服,但只要把流放在中心,就可以輕易解決。這就是為什么越來越多的人在他們的數(shù)據(jù)層中使用Kafka和Redis Streams,這也是為什么數(shù)據(jù)工程師將流視為世界的中心。

原文鏈接:https://thenewstack.io/how-kafka-and-redis-solve-stream-processing-challenges/?

責(zé)任編輯:趙寧寧 來源: 開源云中文社區(qū)
相關(guān)推薦

2021-08-04 07:47:18

Kafka消息框架

2020-02-17 13:05:37

物聯(lián)網(wǎng)IOT物聯(lián)網(wǎng)應(yīng)用

2020-09-01 11:17:51

霧計(jì)算物聯(lián)網(wǎng)IOT

2020-05-19 08:11:09

AI人工智能數(shù)據(jù)

2021-06-28 09:34:55

數(shù)據(jù)湖大數(shù)據(jù)Flink

2023-07-11 10:26:04

數(shù)據(jù)中心冷卻計(jì)算硬件

2019-12-17 08:54:39

物聯(lián)網(wǎng)IoT物聯(lián)網(wǎng)項(xiàng)目

2022-03-09 08:00:00

實(shí)時(shí)挑戰(zhàn)觀眾參與技術(shù)

2023-07-06 16:36:45

云遷移云計(jì)算

2023-08-03 06:58:46

數(shù)據(jù)結(jié)構(gòu)企業(yè)

2024-11-21 16:47:55

2019-07-05 12:16:26

大數(shù)據(jù)IT互聯(lián)網(wǎng)

2012-07-23 09:43:05

數(shù)據(jù)中心運(yùn)營能源

2022-09-28 11:50:47

物聯(lián)網(wǎng)安全LOT

2016-08-02 15:14:46

2018-03-18 09:00:28

2023-11-02 10:39:58

2019-11-26 16:18:39

云計(jì)算Docker軟件

2021-06-29 14:38:30

客戶期望值品牌挑戰(zhàn)CIO

2022-12-12 08:13:27

Redis數(shù)據(jù)傾斜
點(diǎn)贊
收藏

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