日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
簡化Kafka在Kubernetes上的多集群部署

簡化Kafka在Kubernetes上的多集群部署

譯文
作者: 李睿 2023-11-02 09:00:00

云計算 本文簡要概述了Apache Kafka和其常見用例,當前用于擴展多集群部署的工具,以及簡化多集群部署的連接解決方案。

成都創(chuàng)新互聯(lián)是一家專業(yè)提供大足企業(yè)網站建設,專注與網站設計、網站制作、H5響應式網站、小程序制作等業(yè)務。10年已為大足眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。

譯者 | 李睿

審校 | 重樓

Apache Kafka通常簡稱為Kafka,是由Apache軟件基金會維護的一個開源事件流平臺。Apache Kafka最初是在LinkedIn構思的,由Jay Kreps、Neha Narkhede和Jun Rao合作創(chuàng)建,并于2011年作為開源項目發(fā)布。

如今,Kafka已成為最流行的事件流平臺之一,用于處理實時數(shù)據(jù)源。它被廣泛用于構建可擴展、容錯和高性能的流式數(shù)據(jù)管道。

Kafka的用途在不斷擴大,主要的五個案例由Brij Pandey在隨附的圖片中很好地說明了這一點。

作為一個簡單的入門,了解Kafka平臺的組件及其工作方式非常重要。

Kafka是一個分布式事件流平臺,旨在有效地處理實時數(shù)據(jù)饋送。它基于發(fā)布-訂閱消息模型進行操作,并遵循分布式和容錯架構。它維護一個持久、有序和分區(qū)的記錄序列,稱為“主題”。生產者編寫有關這些主題的數(shù)據(jù),消費者從中讀取數(shù)據(jù)。這樣可以實現(xiàn)數(shù)據(jù)生產者和消費者之間的解耦,并允許多個應用程序獨立地使用相同的數(shù)據(jù)流。

Kafka的關鍵組件包括:

  • 主題和分區(qū):Kafka將數(shù)據(jù)組織到主題中。每個主題都是一個記錄流,一個主題中的數(shù)據(jù)被分成多個分區(qū)。每個分區(qū)都是一個有序的、不可變的記錄序列。通過允許數(shù)據(jù)分布在多個Kafka代理上,分區(qū)實現(xiàn)了水平可擴展性和并行性。
  • 生產者:生產者是向Kafka主題寫入數(shù)據(jù)的應用程序。它們將記錄發(fā)布到特定的主題,然后將記錄存儲在主題的分區(qū)中。生產者可以顯式地將記錄發(fā)送到特定的分區(qū),或者允許Kafka使用分區(qū)策略來確定分區(qū)。
  • 消費者:消費者是從Kafka主題中讀取數(shù)據(jù)的應用程序。它們訂閱一個或多個主題,并使用分配給它們的分區(qū)中的記錄。消費者組用于擴展消費,主題中的每個分區(qū)只能由組中的一個消費者使用。這允許多個消費者并行地處理來自同一主題的不同分區(qū)的數(shù)據(jù)。
  • 代理:Kafka作為一個服務器集群運行,每個服務器稱為一個代理。代理負責處理來自生產者和消費者的讀寫請求,以及管理主題分區(qū)。Kafka集群可以有多個代理來分配負載并確保容錯性。
  • 分區(qū)/復制:為了實現(xiàn)容錯性和數(shù)據(jù)持久性,Kafka允許為主題分區(qū)配置復制。每個分區(qū)可以有多個副本,其中一個副本指定為領導者,其他副本指定為跟隨者。領導者副本處理該分區(qū)的所有讀寫請求,而跟隨者副本從領導者副本復制數(shù)據(jù)以保持同步。如果領導者副本的代理發(fā)生故障,其中一個跟隨者副本將自動成為新的領導者副本,以確保持續(xù)運行。
  • 偏移量管理:Kafka維護每個分區(qū)的偏移量概念。偏移量表示分區(qū)內記錄的唯一標識符。消費者跟蹤他們當前的偏移量,允許他們在失敗或重新處理的情況下從他們離開的地方恢復消費。
  • ZooKeeper:雖然不是Kafka本身的一部分,但ZooKeeper經常用于管理元數(shù)據(jù)和協(xié)調Kafka集群中的代理。它有助于領導者的選舉、主題和分區(qū)信息,以及管理消費者群體的協(xié)調。[注:Zookeeper元數(shù)據(jù)管理工具將很快被Kafka Raft(Kraft是一種內部管理元數(shù)據(jù)的協(xié)議)所取代]

總的來說,Kafka的設計和架構使它成為一個高度可擴展、容錯和高效的平臺,可以處理大量的實時數(shù)據(jù)流。它已經成為許多數(shù)據(jù)驅動的應用程序和數(shù)據(jù)基礎設施中的核心組件,促進了數(shù)據(jù)集成、事件處理和流分析。

一個典型的Kafka架構如下圖所示:

Kafka集群是指將多個Kafka代理作為一個組一起運行以形成Kafka集群的實踐。集群是Kafka架構的一個基本方面,它提供了一些好處,包括可擴展性、容錯和高可用性。Kafka集群用于處理大規(guī)模數(shù)據(jù)流,并確保系統(tǒng)即使面對故障也能保持運行。

在集群中,Kafka主題被劃分為多個分區(qū),以實現(xiàn)可擴展性和并行性。每個分區(qū)都是一個線性有序的、不可變的記錄序列。因此,分區(qū)允許數(shù)據(jù)跨集群中的多個代理分發(fā)。

需要注意的是,一個最小的Kafka集群由三個Kafka代理組成,每個代理都可以運行在單獨的服務器上(虛擬或物理)。三節(jié)點指導是為了避免在代理失敗的情況下出現(xiàn)腦裂(Split-Brain)的情況。

Kafka和Kubernetes

隨著越來越多的企業(yè)采用Kafka,在Kubernetes上部署Kafka的興趣也越來越大。

事實上,Dynatrace最近發(fā)布的《2023年Kubernetes In the Wild報告》表明,40%以上的大型組織在Kubernetes中運行他們的開源消息傳遞平臺,其中大部分是Kafka。

該報告還大膽宣稱,“Kubernetes正在成為云計算的‘操作系統(tǒng)’”。

因此,Kafka管理員必須了解Kafka和Kubernetes之間的相互作用,以及如何適當?shù)貙崿F(xiàn)這些相互作用。

多集群Kafka的案例

在單個Kubernetes集群設置中運行Kafka集群相當簡單,并且在理論上可以根據(jù)需要實現(xiàn)可擴展性。然而在生產中,其畫面可能會變得有點模糊。

應該在Kafka和Kubernetes之間區(qū)分集群這個術語的使用。Kubernetes部署還使用術語集群來指定一組連接的節(jié)點,稱為Kubernetes集群。當Kafka工作負載部署在Kubernetes上時,最終會得到一個在Kubernetes集群中運行的Kafka集群,但與這一討論更相關的是,也可能有一個跨越多個Kubernetes集群的Kafka集群,以實現(xiàn)彈性、性能、數(shù)據(jù)主權等。

首先,Kafka并不是為多租戶設置而設計的。在技術方面,Kafka不理解Kubernetes名稱空間或資源隔離等概念。在特定主題中,沒有簡單的機制來強制多個用戶組之間的安全訪問限制。

此外,不同的工作負載可能具有不同的更新頻率和規(guī)模需求,例如,批處理應用程序與實時應用程序。將兩個工作負載組合到一個集群中可能會產生不利影響,或者消耗的資源遠遠超過所需的資源。

數(shù)據(jù)主權和合規(guī)性也會對在特定區(qū)域或應用程序中共同定位數(shù)據(jù)和主題施加限制。

當然,彈性是多個Kafka集群背后的另一個強大驅動力。雖然Kafka集群是為主題容錯而設計的,但仍然需要為整個集群的災難性故障做好準備。在這種情況下,對完全復制集群的需求支持適當?shù)臉I(yè)務連續(xù)性規(guī)劃。

對于正在將工作負載遷移到云端或有混合云策略的企業(yè),可能希望設置多個Kafka集群,并隨著時間的推移執(zhí)行有計劃的工作負載遷移,而不是冒險的全面Kafka遷移。

在實踐中,很多企業(yè)發(fā)現(xiàn)自己不得不創(chuàng)建多個Kafka集群,但這些集群需要彼此交互,這只是其中的幾個原因。

多集群Kafka

為了使多個Kafka集群相互連接,必須將一個集群中的關鍵項復制到另一個集群。其中包括主題、偏移量和元數(shù)據(jù)。在Kafka術語中,這種復制被認為是鏡像。

有兩種方法可以實現(xiàn)多集群設置:拉伸集群或連接集群。

擴展集群:同步復制

拉伸集群是跨多個物理集群“拉伸”的邏輯集群。主題和副本分布在物理集群中,但由于它們被表示為邏輯集群,因此應用程序本身并不知道這種多樣性。

拉伸集群具有很強的一致性,并且更易于管理。由于應用程序不知道多個集群的存在,因此與連接集群相比,它們更容易部署在拉伸集群上。

拉伸集群的缺點是它需要集群之間的同步連接。它們對于混合云部署來說并不理想,并且需要至少三個集群的Quorum 機制來避免“腦裂”的情況。

連接集群:異步復制

連接集群通過連接多個獨立的集群進行部署。這些獨立的集群可以運行在不同的區(qū)域或云平臺上,并進行單獨管理。

連接集群模型的主要優(yōu)點是,在集群發(fā)生故障的情況下不會有停機時間,因為其他集群是獨立運行的。每個集群還可以針對其特定資源進行優(yōu)化。

連接集群的主要缺點是它依賴于集群之間的異步連接。在集群之間復制的主題不是“寫時復制”,而是取決于最終的一致性。這可能導致在異步鏡像過程中丟失數(shù)據(jù)。

此外,必須修改跨連接集群工作的應用程序,以識別多個集群。

在解決這個難題之前,簡要介紹一下市場上支持Kafka集群連接的常用工具。

開源Kafka自帶鏡像工具Mirror Maker。

Mirror Maker通過內置生成器在不同的集群之間復制主題。通過這種方式,數(shù)據(jù)在集群之間進行交叉復制,最終保持一致性,但不會中斷單個進程。

值得注意的是,雖然Mirror Maker的概念很簡單,但對于IT組織來說,大規(guī)模地設置Mirror Maker可能是一個相當大的挑戰(zhàn)。必須正確管理IP地址、命名約定、副本數(shù)量等,否則可能會導致所謂的“無限復制”,即主題被無限復制,導致最終崩潰。

Mirror Maker的另一個缺點是缺乏允許/不允許更新列表的動態(tài)配置。Mirror Maker也不能正確同步主題屬性,這使得它在添加或刪除要復制的主題時成為大規(guī)模操作的難題。Mirror Maker試圖解決其中的一些挑戰(zhàn),但許多IT商店仍然難以正確設置Mirror Maker。

其他用于Kafka復制的開源工具包括來自Salesforce的Mirus,來自Uber的uReplicator,以及來自Netflix的定制Flink。

對于商業(yè)許可選項,Confluent提供了兩個選項:Confluent Replicator和Cluster Linking。Confluent Replicator本質上是一個Kafka Connect連接器,它提供了一種高性能和彈性的方式在集群之間復制主題數(shù)據(jù)。Cluster Linking是另一種內部開發(fā)的產品,其目標是在保留主題偏移的同時進行多區(qū)域復制。

即便如此,Cluster Linking還是一種異步復制工具,數(shù)據(jù)必須跨越網絡邊界并穿越公共流量路徑。

現(xiàn)在應該很清楚,Kafka復制是大規(guī)模生產應用程序的關鍵策略。問題是選擇哪一個選項。

富有想象力的Kafka管理員很快就會意識到,根據(jù)應用程序的性能和彈性需求,可能需要連接集群和拉伸集群,或者這些部署的組合。

然而,令人生畏的是,設置集群配置和跨多個集群大規(guī)模管理這些配置是指數(shù)級的挑戰(zhàn)。還有什么更優(yōu)雅的方式來解決這個難題呢?

答案是肯定的!

Avesha的KubeSlice是一種兩全其美的簡單方法。通過在集群或命名空間之間創(chuàng)建直接的服務連接,KubeSlice無需手動配置Kafka集群之間的單個連接。

KubeSlice的核心是在集群之間創(chuàng)建一個安全的、同步的第三層網絡網關,在應用程序或名稱空間級別進行隔離。一旦設置好了,Kafka管理員就可以自由地在任何集群中部署Kafka代理。

每個代理都與通過片連接的其他每個代理具有同步連接,即使代理本身可能位于不同的集群上。這有效地在代理之間創(chuàng)建了一個拉伸集群,并提供了強一致性和低管理開銷的好處。

結語

對于那些可能想將Mirror Maker部署到集群中的人來說,這可以用最少的精力完成,因為集群之間的連接被委托給KubeSlice。因此,Kafka應用程序可以在同一部署中獲得同步(速度、彈性)和異步(獨立性、規(guī)模)復制的好處,并能夠根據(jù)需要混合和匹配這些功能。這適用于預處理數(shù)據(jù)中心、公共云或混合設置中的任何組合。

KubeSlice是一個無中斷的部署,這意味著不需要卸載任何已經部署的工具。這只是建立一個切片并將Kafka部署添加到該切片上的問題。

本文提供了Apache Kafka的簡要概述,并觸及了一些更常見的用例。還介紹了當前可用于跨多個集群擴展Kafka部署的工具,并討論了每種工具的優(yōu)缺點。最后,本文還介紹了Kubeslice,這是一種新興的服務連接解決方案,它簡化了Kafka多集群部署,并消除了大規(guī)??缍鄠€集群配置Kafka復制帶來的麻煩。

原文標題:Kafka Multi-Cluster Deployment on Kubernetes: Simplified!,作者:Ray Edwards


網頁題目:簡化Kafka在Kubernetes上的多集群部署
文章鏈接:http://www.5511xx.com/article/coiidsi.html