初識kafka

来源:https://www.cnblogs.com/wenBlog/archive/2018/08/28/9550039.html
-Advertisement-
Play Games

簡介 Kafka經常用於實時流數據架構,用於提供實時分析。本篇將會簡單介紹kafka以及它為什麼能夠廣泛應用。 簡介 Kafka經常用於實時流數據架構,用於提供實時分析。本篇將會簡單介紹kafka以及它為什麼能夠廣泛應用。 kafka的增長是爆炸性的。2017年超過三分之一的世界五百強公司在使用ka ...


簡介

    Kafka經常用於實時流數據架構,用於提供實時分析。本篇將會簡單介紹kafka以及它為什麼能夠廣泛應用。

    kafka的增長是爆炸性的。2017年超過三分之一的世界五百強公司在使用kafka。這其中很多公司每天通過kafka處理超過TB級別的數據。kafka被用於實時數據流、收集大數據或者做一些實時分析。kafka是也為基於記憶體的微服務提供數據持久化並把數據傳輸給複雜的事件流系統和IOT模式的自動化系統。

為什麼選擇Kafka?

Kafka經常用於實時流數據架構,提供實時分析。由於Kafka是一種快速、可伸縮、持久和容錯的發佈-訂閱消息傳遞系統,所以考慮到JMS、RabbitMQ和AMQP可能存在容量和響應性的不足,Kafka在某些情況下是更優選擇。Kafka具有更高的吞吐量、可靠性和複製特性,這使得它適用於跟蹤服務調用(跟蹤每一個調用)或跟蹤物聯網感測器數據,而傳統的MOM在這些方面有其自己的問題。

Kafka可以與Flume/Flafka、Spark Streaming、Storm、HBase、Flink和Spark一起工作,對流媒體數據進行實時攝取、分析和處理。Kafka為Hadoop BigData lakes 提供數據流。Kafka代理支持大量消息流,用於Hadoop或Spark的低延遲後續分析。此外,Kafka Streaming(子項目)也可以用於實時分析。

Kafka 使用情況

簡而言之,Kafka用於流處理、網站活動跟蹤、度量收集和監控、日誌聚合、實時分析、CEP、將數據傳輸到Spark、將數據傳輸到Hadoop、CQRS、重放消息、錯誤恢復以及記憶體計算(微服務)的有保障的分散式提交日誌。

那些人需要使用Kafka?

處理大量數據的大公司都使用Kafka。它的發源地LinkedIn使用它來跟蹤活動數據和運營指標。Twitter將其作為Storm的一部分來提供流處理基礎設施。Square使用Kafka作為匯流排,將所有系統事件轉移到各個Square數據中心(日誌、定製事件、度量等等),輸出到Splunk,用於儀錶板,並實現Esper-like/CEP警報系統。Spotify、Uber、Tumbler、高盛、貝寶(PayPal)、Box、思科(Cisco)、CloudFlare和Netflix等其他公司也在使用這個平臺。

首先,操作簡單。Kafka是用來設置和使用的,並且很容易知道Kafka是如何工作的。然而,其受歡迎的主要原因是它的出色性能。同時它是穩定的,提供了可靠的持久性,具有靈活的發佈-訂閱/隊列,可以很好地擴展到n個消費者組,具有健壯的複製,為生產者提供了可調的一致性保證,併在碎片級別(即Kafka主題分區)提供了保留的排序。此外,Kafka可以很好地處理具有數據流的系統,並使這些系統能夠聚合、轉換和載入到其他存儲中。但如果kafka處理緩慢,其他優點也就都無關緊要。綜上之所以受歡迎就是因為快。

為什麼快?

Kafka嚴重依賴操作系統內核來快速移動數據。它基於零拷貝的原則。Kafka使您能夠批量數據記錄成塊。可以看到這些批數據從生產者到文件系統(Kafka主題日誌)到消費者。批處理允許更有效的數據壓縮和減少I/O延遲。Kafka將不可變的提交日誌按順序寫入磁碟,從而避免了隨機磁碟訪問和緩慢的磁碟查找。通過分片提供水平分割。它將主題日誌分割成數百個(可能是數千個)到數千台伺服器的分區。這種分片允許Kafka處理大量的負載。

 

Kafka: 數據流架構

Kafka經常被用於將實時數據流到其他系統中。Kafka是中間層,可以解耦你的實時數據管道。Kafka core不適合直接計算,比如數據聚合或CEP。Kafka流,是Kafka生態系統的一部分,提供實時分析的能力。Kafka可以提供快速通道系統(實時和操作數據系統),比如Storm, Flink, SparkStreaming,以及你的服務和CEP系統。Kafka還用於批量數據分析的數據流。它可以將數據流到您的大數據平臺或RDBMS、Cassandra、Spark甚至S3中,以便將來進行一些數據分析。這些數據存儲通常支持數據分析、報表、數據科學分析、審計和備份。

 

what is kafka - Kafka Streaming Architecture Diagram

架構圖

現在我們來回答一些問題。

Kafka是什麼?

Kafka是一個分散式流媒體平臺,用於發佈和訂閱記錄流。Kafka用於容錯存儲。Kafka將主題日誌分區複製到多個伺服器。Kafka是設計處理來應用程式實時產生的數據。Kafka可以快速和有效地使用IO批處理和壓縮數據。Kafka用於解耦數據流。也用於將數據流到數據湖、應用程式和實時流分析系統中。

what is kafka - Kafka-Decoupling-Data-Streams

 

Kafka 分離數據流

Kafka 支持多種開發語言

來自客戶機和伺服器的Kafka通信使用了TCP上的協議,經過版本化和文檔化。Kafka承諾與老客戶端保持向後相容,並且支持許多語言。在c#、Java、C、Python、Ruby和許多其他語言中都有客戶端。

Kafka生態系統還提供了REST代理,允許通過HTTP和JSON進行簡單的集成,這使得集成更加容易。Kafka還通過Confluent模式註冊表支持Avro模式。Avro和Schema Registry允許用多種編程語言生成和讀取複雜的記錄,並允許記錄的演變。

Kafka 的價值

1.Kafka允許您構建實時流數據管道。Kafka支持記憶體中的微服務(即actor、Akka、Baratine.io, QBit,reactiveVert.xRxJavaSpring Reactor)。Kafka允許您構建實時流應用程式,對流進行實時數據分析、轉換、反應、聚合、加入實時數據流,並執行CEP(複雜事件處理)。

2.您可以使用Kafka來幫助收集度量/ kpi、聚合來自許多來源的統計數據和實現事件源。您可以將其與微服務(記憶體中)和actor系統一起使用,以實現記憶體中的服務(分散式系統的外部提交日誌)。

3.您可以使用Kafka在節點之間複製數據、重新同步節點和恢復狀態。雖然Kafka主要用於實時數據分析和流處理,但也可以用於日誌聚合、消息傳遞、點擊流跟蹤、審計跟蹤等等

在一個數據科學和分析的世界里,捕獲數據並將其輸入到您的數據湖和實時分析系統也是一個大問題。既然kafka能夠處理這些繁重的用例,那這就是它最大的價值所在。

Kafka 是可擴展的消息存儲

Kafka是一個很好的記錄/消息存儲系統。Kafka就像高速文件系統,用於提交日誌存儲和複製。這些特性使得Kafka對於所有的應用方式都是有用的。寫入到Kafka主題的記錄將被持久化到磁碟,並複製到其他伺服器以實現容錯。由於現代驅動器又快又大,所以它很適合,而且非常有用。Kafka生產者可以等待確認,所以消息是持久的,因為生產者寫如完整直到消息複製完成。硬碟架構可很好地伸縮因為現代磁碟驅動器在批量寫入時具有很高的吞吐量。此外,Kafka客戶端和消費者可以控制讀位置(偏移量),這允許用例在有關鍵錯誤時重放日誌(即修複錯誤和重播)。由於偏移量是按每個消費者組進行跟蹤的,因此消費者可以相當靈活(即重放日誌)。

 

Kafka 會保留消費記錄

Kafka集群保留所有已發佈的記錄。如果不設置限制,它將保存記錄,直到耗盡磁碟空間。您可以設置基於時間的限制(可配置保留期)、基於大小的限制(可根據大小配置)或壓縮(使用鍵保存最新版本的記錄)。例如,你可以設定3天、2周或1個月的保留政策。主題日誌中的記錄可供使用,直到根據時間、大小或壓縮丟棄為止。消費速度不受大小的影響,因為Kafka總是寫到主題日誌的末尾。

Kafka經常用於實時流數據架構,提供實時分析。由於Kafka是一種快速、可伸縮、持久和容錯的發佈-訂閱消息傳遞系統,所以Kafka在某些情況下甚至不會考慮JMS、RabbitMQ和AMQP,因為它的容量和響應性。Kafka具有更高的吞吐量、可靠性和複製特性,這使得它適用於跟蹤服務調用(跟蹤每一個調用)或跟蹤物聯網感測器數據,而傳統的MOM可能不會被考慮在內。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 更多請關註 Linux命令大全 syslog 介紹 syslog是Linux系統預設的日誌守護進程。預設的syslog配置文件是/etc/syslog.conf文件。程式,守護進程和內核提供了訪問系統的日誌信息。因此,任何希望生成日誌信息的程式都可以向 syslog 介面呼叫生成該信息。 幾乎所有的 ...
  • 本節課先對mysql的基本語法初體驗。 操作文件夾(庫) 增 查 改 刪 操作文件(表) 增 查 改 刪 操作文件內容(記錄) 增 查 改 刪 ...
  • 本節掌握內容: mysql的安裝、啟動 mysql破解密碼 統一字元編碼 mysql的安裝、啟動 mysql破解密碼 統一字元編碼 MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型資料庫管理系統,在 WEB 應用方面 ...
  • 什麼是數據(Data) 單純的一條記錄並沒有任何意義,如果我們按逗號作為分隔,依次定義各個欄位的意思,相當於定義表的標題 這樣通過表格我們很清楚的知道了某人的詳細信息。 什麼是資料庫(DataBase,簡稱DB) 資料庫即存放數據的倉庫,只不過這個倉庫是在電腦存儲設備上,而且數據是按一定的格式存放 ...
  • 原文地址:http://www.maomao365.com/?p=7335 摘要: 數據表中,有一列是自動流水號,由於各種操作異常原因(或者插入失敗),此列數據會變的不連續,下文將講述使用sql腳本的方式獲取數據表中的數據是否連續的方法分享,如下所示: 實驗環境:sqlserver 2008 R2 ...
  • 使用Sql_server創建表,視圖,觸發器,存儲過程,函數等基本操作。 ...
  • 認識mysql第三篇,發出的內容適合初學者,如果能持續關註我的博客,可以全面的掌握mysql的常用知識,後續我也會陸續發出python相關的知識,關註我,和我一共進步吧! 1、SQL查詢 1、執行順序 3、select ...聚合函數 from 表名 1、where ... 2、group by . ...
  • MySql的前戲 在學習Mysql之前,我們先來想一下一開始做的登錄註冊案例,當時我們把用戶的信息保存到一個文件中: 上面文件內容的規則是我自己定義的,你要想用我這個程式,必須按照我的規則去執行,但凡不是這個規則,就沒有交流的餘地。 在一開始的時候文件格式的規定是沒有規範的,後面學到模塊的時候逐漸知 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...