技術總覽
本節說明本解決方案所使用的技術。
NetApp StorageGRID
NetApp StorageGRID 產品是高效能且具成本效益的物件儲存平台。透過階層式儲存設備、儲存在本機儲存設備或代理程式SAN儲存設備上的Confluent Kafka上的大部分資料都會卸載到遠端物件存放區。此組態可減少重新平衡、擴充或縮減叢集或更換故障的代理程式所需的時間與成本、進而大幅改善營運。物件儲存在管理位於物件存放區層的資料方面扮演著重要角色、因此挑選適當的物件儲存非常重要。
利用分散式節點型網格架構、提供智慧型原則導向的全球資料管理功能。StorageGRID它透過無所不在的全域物件命名空間、加上精密的資料管理功能、簡化PB非結構化資料和數十億個物件的管理。單一通話物件存取功能可延伸至各個站台、並簡化高可用度架構、同時確保無論站台或基礎架構停機、都能持續存取物件。
多租戶功能可在同一個網格內安全地維護多個非結構化雲端和企業資料應用程式、進而提高NetApp StorageGRID 的ROI和使用案例。您可以利用中繼資料導向的物件生命週期原則來建立多個服務層級、以最佳化跨多個地理區的持久性、保護、效能和位置。使用者可以調整資料管理原則、並監控及套用流量限制、以便在瞬息萬變的IT環境中、隨著需求變化而不中斷地重新調整資料環境。
利用Grid Manager輕鬆管理
透過瀏覽器型的圖形介面StorageGRID 、您可以在StorageGRID 單一窗口中、設定、管理及監控分散於全球各地的整個系統。
您可以使用StorageGRID 「資訊網管理程式」介面執行下列工作:
-
管理分散在全球各地、PB規模的物件儲存庫、例如影像、視訊和記錄。
-
監控網格節點和服務、確保物件可用度。
-
使用資訊生命週期管理(ILM)規則、管理物件資料隨時間擺放的位置。這些規則可控制物件擷取後的資料處理方式、資料保護方式、資料儲存位置、以及資料儲存時間。
-
監控系統內的交易、效能和作業。
資訊生命週期管理原則
根據特定的效能和資料保護需求、支援靈活的資料管理原則、包括保留物件的複本複本、以及使用EC(銷毀編碼)配置(例如2+1和4+2)來儲存物件。StorageGRID隨著工作負載和需求隨時間變化、ILM原則也必須隨時間而改變、這是很常見的做法。修改ILM原則是一項核心功能、讓StorageGRID 客戶能夠快速輕鬆地因應瞬息萬變的環境。
效能
透過新增更多儲存節點(例如VM、裸機或特定用途的應用裝置)來擴充效能StorageGRID "SG5712、SG5760、SG6060或SGF6024"。在我們的測試中、我們使用SGF6024應用裝置、以最小尺寸的三節點網格、超越Apache Kafka的關鍵效能要求。隨著客戶使用額外的代理商來擴充其Kafka叢集、他們可以新增更多儲存節點來提升效能和容量。
負載平衡器和端點組態
本功能提供Grid Manager UI(使用者介面)和REST API端點、StorageGRID 以檢視、設定及管理StorageGRID 您的不實系統、以及稽核記錄來追蹤系統活動。為了提供高可用度的S3端點給ConFluent Kafka階層式儲存設備、我們實作StorageGRID 了一套以服務形式在管理節點和閘道節點上執行的負載平衡器。此外、負載平衡器也會管理本機流量、並與GSLB(全域伺服器負載平衡)對話、以協助災難恢復。
為了進一步強化端點組態、StorageGRID 支援內建於管理節點的流量分類原則、讓您監控工作負載流量、並將各種服務品質(QoS)限制套用至工作負載。流量分類原則會套用至StorageGRID 閘道節點和管理節點的「動態負載平衡器」服務上的端點。這些原則可協助流量調整和監控。
流量分類StorageGRID
包含內建QoS功能。StorageGRID流量分類原則可協助監控來自用戶端應用程式的不同類型S3流量。然後您可以建立並套用原則、根據輸入/輸出頻寬、讀取/寫入並行要求數或讀取/寫入要求率來限制此流量。
Apache Kafka
Apache Kafka是以Java和Scala寫入串流處理的軟體匯流排架構實作。它旨在提供統一化、高處理量、低延遲的平台、以處理即時資料饋送。卡夫卡可連線至外部系統、以便透過Kafka Connect匯出及匯入資料、並提供Kafka串流處理程式庫、即Java串流處理程式庫。Kafka使用以TCP為基礎的二進位傳輸協定、針對效率最佳化、並仰賴「訊息集」抽象化、將訊息自然地分組在一起、以降低網路往返的成本。如此一來、就能進行更大的連續磁碟作業、較大的網路封包和鄰近的記憶體區塊、進而讓Kafka將一串爆發性的隨機訊息寫入串流變成線性寫入。下圖說明Apache Kafka的基本資料流程。
Kafka儲存的關鍵價值訊息來自於任意數量的稱為「生產商」的程序。資料可分割成不同主題中的不同分割區。在磁碟分割內、訊息會依照偏移量(訊息在磁碟分割內的位置)嚴格排序、並與時間戳記一起索引及儲存。其他稱為「使用者」的程序也可以從分割區讀取訊息。對於串流處理、Kafka提供的STREAMS API可讓您寫入Java應用程式、以使用Kafka的資料、並將結果寫回Kafka。Apache Kafka也可搭配外部串流處理系統使用、例如Apache Apex、Apache Flink、Apache Spark、Apache Storm及Apache NiFI。
Kafka會在一個或多個伺服器(稱為代理程式)的叢集上執行、所有主題的分割區會分散到叢集節點。此外、分割區也會複寫到多個代理程式。此架構可讓Kafka以容錯的方式提供大量訊息串流、並讓它取代一些傳統的訊息系統、例如Java Message Service(JMS)、進階訊息佇列傳輸協定(AMQP)等。自0.11.0.0發行以來、Kafka提供交易式寫入功能、使用STREAMS API提供一次完整的串流處理。
卡夫卡支援兩種主題:一般主題和精簡主題。一般主題可設定保留時間或空間限制。如果有記錄超過指定的保留時間、或磁碟分割超出空間限制、則Kafka可以刪除舊資料以釋放儲存空間。根據預設、主題的保留時間設定為7天、但也可以無限期儲存資料。對於精簡主題、記錄不會因時間或空間界限而過期。相反地、Kafka會將稍後的訊息視為舊訊息的更新、並保證不會刪除每個金鑰的最新訊息。使用者可以撰寫所謂的tombstone訊息、並針對特定金鑰使用null值、以完全刪除訊息。
卡夫卡有五大API:
-
*監製API。*允許應用程式發佈記錄串流。
-
*消費者API。*允許應用程式訂閱主題和處理記錄串流。
-
*連接器API.*執行可重複使用的生產商與消費者API、這些API可將主題連結至現有的應用程式。
-
*串流API.*此API會將輸入串流轉換成輸出、並產生結果。
-
*管理API。*用於管理Kafka主題、代理人及其他Kafka物件。
消費者與製造商API以Kafka訊息傳輸協定為基礎、為Java中的Kafka消費者與製造商用戶端提供參考實作。基礎訊息傳輸協定是一種二進位傳輸協定、開發人員可用來以任何程式設計語言撰寫自己的消費者或生產用戶端。這可讓Kafka從Java虛擬機器(JVM)生態系統中解放。Apache Kafka wikis會維護可用的非Java用戶端清單。
Apache Kafka使用案例
Apache Kafka最受訊息、網站活動追蹤、指標、記錄彙總、串流處理、 事件來源及提交記錄。
-
Kafka的處理量、內建分割區、複寫及容錯能力均有提升、因此是大型訊息處理應用程式的理想解決方案。
-
Kafka可以在追蹤管道中重建使用者的活動(頁面檢視、搜尋)、做為一組即時發佈訂閱摘要。
-
Kafka經常用於營運監控資料。這包括彙總分散式應用程式的統計資料、以產生集中化的作業資料饋送。
-
許多人使用Kafka來取代記錄彙總解決方案。記錄集合通常會從伺服器收集實體記錄檔、並將它們放在中央位置(例如檔案伺服器或HDFS)進行處理。Kafka會將檔案詳細資料擷取出來、並將記錄或事件資料當作訊息串流來提供更簡潔的抽象化。如此可降低延遲處理、更輕鬆支援多個資料來源和分散式資料使用。
-
卡夫卡的許多使用者會處理由多個階段組成的管線資料、其中原始輸入資料會從卡夫卡主題中消耗、然後彙總、豐富或以其他方式轉化為新主題、以供進一步消費或後續處理。例如、推薦新聞文章的處理管道可能會從RSS摘要串流文章內容、然後將其發佈至「文章」主題。進一步處理可能會將此內容正規化或重複資料刪除、並將已清除的文章內容發佈至新主題、最後的處理階段可能會嘗試將此內容推薦給使用者。這類處理管道會根據個別主題、建立即時資料流程的圖表。
-
事件來源是應用程式設計的一種樣式、其狀態變更會記錄為依時間順序排列的記錄順序。卡夫卡支援非常大的儲存記錄資料、因此對於以這種風格建置的應用程式來說、它是絕佳的後端。
-
Kafka可以做為分散式系統的外部提交記錄。此記錄有助於在節點之間複寫資料、並可做為故障節點還原資料的重新同步機制。Kafka的記錄壓縮功能有助於支援此使用案例。
Confluent
Conflent Platform是企業級平台、具備進階功能、可協助加速應用程式開發與連線、透過串流處理實現轉型、大規模簡化企業營運、並符合嚴苛的架構要求。Conflent是由Apache Kafka原創原創者所打造、以企業級功能擴展Kafka的優勢、同時免除Kafka管理或監控的負擔。如今、超過80%的財星雜誌100大企業都採用資料串流技術、大部分企業都使用Conflent技術。
為何選擇Conflent?
藉由將歷史與即時資料整合至單一的集中式事實來源、Conflent可讓您輕鬆建置全新類別的現代化事件導向應用程式、取得通用資料管線、並以完整的擴充性、效能與可靠性、釋放強大的新使用案例。
什麼是ConnFluent的用途?
Conflent Platform可讓您專注於從資料中獲取商業價值、而非擔心基礎機制、例如資料如何在不同的系統之間傳輸或整合。具體而言、Conflent Platform可簡化資料來源與Kafka之間的連線、建置串流應用程式、以及保護、監控及管理Kafka基礎架構。如今、Conflent Platform可用於金融服務、全通路零售和自主汽車等多種產業的各種使用案例、以及詐欺偵測、 微服務和IoT。
下圖顯示ConnFluent Kafka平台元件。
Connent的事件串流技術總覽
在Conflent Platform的核心是 "Apache Kafka"是最受歡迎的開放原始碼分散式串流平台。卡夫卡的主要功能如下:
-
發佈及訂閱記錄串流。
-
以容錯的方式儲存記錄串流。
-
處理記錄串流。
隨裝即用的Conflent Platform也包括架構登錄、REST Proxy、總共100多個預先建置的Kafka連接器和ksqlDB。
Conflent平台的企業級功能總覽
-
* Confluent Control Cent.*一種GUI型系統、用於管理及監控Kafka。它可讓您輕鬆管理Kafka Connect、以及建立、編輯及管理與其他系統的連線。
-
* Kubernetes的Conflent。* Kubernetes的Connent是Kubernetes營運者。Kubernetes營運者提供特定平台應用程式的獨特功能和需求、藉此擴充Kubernetes的協調功能。對於Conflent Platform、這包括大幅簡化Kubernetes上的Kafka部署程序、以及自動化典型的基礎架構生命週期工作。
-
*連接至Kafka的Confluent連接器*連接器使用Kafka Connect API將Kafka連接至其他系統、例如資料庫、金鑰值儲存區、搜尋索引和檔案系統。Conflent Hub提供可下載的連接器、適用於最受歡迎的資料來源和接收器、包括這些連接器的完整測試和支援版本、以及Conflent Platform。如需詳細資料、請參閱 "請按這裡"。
-
*自我平衡叢集。*提供自動負載平衡、故障偵測及自我修復功能。它支援視需要新增或汰換代理商、無需手動調校。
-
* Confluent叢集連結。*直接將叢集連線在一起、並透過連結橋接器將主題從一個叢集鏡射到另一個叢集。叢集連結可簡化多資料中心、多叢集及混合雲部署的設定。
-
* Confluent自動資料平衡器。*監控叢集的代理程式數量、分割區大小、分割區數目、以及叢集內的領導者數量。它可讓您將資料移轉至整個叢集、以建立平均工作負載、同時節流重新平衡流量、將對正式作業工作負載的影響降至最低、同時重新平衡。
-
* Confluent replicator。*讓您在多個資料中心中維護多個Kafka叢集變得比以往更輕鬆。
-
*分層儲存。*提供使用您最喜愛的雲端供應商儲存大量Kafka資料的選項、藉此降低營運負擔和成本。透過階層式儲存設備、您只能在需要更多運算資源時、將資料保存在具成本效益的物件儲存設備上、並擴充代理商。
-
* Connent Jms用戶端。* Conflent Platform包含適用於Kafka的與Jms相容的用戶端。此Kafka用戶端實作了JMS 1.1標準API、使用Kafka Brokers做為後端。如果您使用的是使用Jms的舊應用程式、而且想要以Kafka取代現有的Jms訊息代理程式、這項功能就很實用。
-
* Conflent MQtT Proxy。*提供一種從MQtT裝置和閘道直接發佈資料至Kafka的方法、而不需要中間的MQtT代理程式。
-
* Confluent安全外掛程式。* Confluent安全外掛程式可用來新增各種Confluent Platform工具和產品的安全功能。目前有一個外掛程式可供Conflent REST Proxy使用、可協助驗證傳入要求、並將驗證的主體傳播至向Kafka的要求。這可讓Conflent REST Proxy用戶端利用Kafka代理程式的多租戶安全功能。