91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Kafka?

發布時間:2020-06-12 17:11:42 來源:網絡 閱讀:329 作者:實時計算 欄目:大數據

通過Kafka的快速入門 https://www.cnblogs.com/tree1123/p/11150927.html

能了解到Kafka的基本部署,使用,但他和其他的消息中間件有什么不同呢?

Kafka的基本原理,術語,版本等等都是怎么樣的?到底什么是Kafka呢?

一、Kafka簡介

http://kafka.apache.org/intro

2011年,LinkIn開源, November 1, 2017 1.0版本發布 July 30, 2018 2.0版本發布

參考官網的圖:

什么是Kafka?

Kafka?用于構建實時數據管道和流式應用程序。它具有水平可擴展性、容錯性、速度極快,并在數千家公司投入生產。

kafka官網最新的定義:Apache Kafka? is a distributed streaming platform

也就是分布式流式平臺。

介紹:

三個特點:

  • Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
  • Store streams of records in a fault-tolerant durable way.
  • Process streams of records as they occur.

消息 持久化 流處理

兩類應用:

  • Building real-time streaming data pipelines that reliably get data between systems or applications

  • Building real-time streaming applications that transform or react to the streams of data

    實時流數據管道 實時流應用程序

    ?

    幾個概念

    • Kafka is run as a cluster on one or more servers that can span multiple datacenters.

    • The Kafka cluster stores streams of?records?in categories called?topics.

    • Each record consists of a key, a value, and a timestamp

    集群 topic record

    ?

    四個核心api

    • The?Producer API?allows an application to publish a stream of records to one or more Kafka topics.
    • The?Consumer API?allows an application to subscribe to one or more topics and process the stream of records produced to them.
    • The?Streams API?allows an application to act as a?stream processor, consuming an input stream from one or more topics and producing an output stream to one or more output topics, effectively transforming the input streams to output streams.
    • The?Connector API?allows building and running reusable producers or consumers that connect Kafka topics to existing applications or data systems. For example, a connector to a relational database might capture every change to a table.

    ?Producer API? Consumer API? Streams API Connector API

    ?

什么是Kafka?

客戶端服務器通過tcp協議 支持多種語言

主題和日志

一個主題可以有零個,一個或多個消費者訂閱寫入它的數據

對于每個主題,Kafka群集都維護一個分區日志

每個分區都是一個有序的,不可變的記錄序列,不斷附加到結構化的提交日志中。

分區中的記錄每個都被分配一個稱為偏移的順序ID號,它唯一地標識分區中的每個記錄。

什么是Kafka?

Kafka集群持久地保留所有已發布的記錄 - 無論它們是否已被消耗 - 使用可配置的保留期。可以配置這個時間。

Kafka的性能在數據大小方面實際上是恒定的,因此長時間存儲數據不是問題。

什么是Kafka?

每個消費者保留的唯一元數據是該消費者在日志中的偏移或位置。

這種偏移由消費者控制:通常消費者在讀取記錄時會線性地提高其偏移量,但事實上,由于消費者控制位置,它可以按照自己喜歡的任何順序消費記錄。例如,消費者可以重置為較舊的偏移量以重新處理過去的數據,或者跳到最近的記錄并從“現在”開始消費。

這使得消費者特別容易使用。

生產者:

生產者將數據發布到他們選擇的主題。

為了負載均衡,可以選擇多個分區。

消費者:

消費者組

什么是Kafka?

傳統的消息隊列 發布訂閱 都有弊端

隊列可以擴展但不是多用戶,發布訂閱每條消費發給每個消費者,無法擴展。

但是kafka這個模式 解決了這些問題

kafka確保使用者是該分區的唯一讀者并按順序使用數據,由于有許多分區,這仍然可以

平衡許多消費者實例的負載。

作為存儲系統

作為流處理系統

二、常見使用

http://kafka.apache.org/uses

消息

Kafka可以替代更傳統的消息代理。消息代理的使用有多種原因(將處理與數據生成器分離,緩沖未處理的消息等)。與大多數消息傳遞系統相比,Kafka具有更好的吞吐量,內置分區,復制和容錯功能,這使其成為大規模消息處理應用程序的理想解決方案。

根據我們的經驗,消息傳遞的使用通常相對較低,但可能需要較低的端到端延遲,并且通常取決于Kafka提供的強大的耐用性保證。

在這個領域,Kafka可與傳統的消息傳遞系統(如ActiveMQ或?RabbitMQ)相媲美。

網站活動跟蹤

站點活動(頁面查看,搜索或用戶可能采取的其他操作)發布到中心主題,每個活動類型包含一個主題。實時處理,實時監控以及加載到Hadoop或離線數據倉庫系統以進行離線處理和報告。

度量

Kafka通常用于運營監控數據。

日志聚合

許多人使用Kafka作為日志聚合解決方案的替代品。日志聚合通常從服務器收集物理日志文件,并將它們放在中央位置(可能是文件服務器或HDFS)進行處理。Kafka抽象出文件的細節,并將日志或事件數據更清晰地抽象為消息流。

流處理

從0.10.0.0開始,這是一個輕量級但功能強大的流處理庫,名為Kafka Streams

三、官方文檔-核心機制

http://kafka.apache.org/documentation/

簡介 使用 快速入門 都已經學習過了

生態:這里有一些kafka的生態,各種Connector?可以直接連接數據庫 es等等 還可以連接其他的流處理 還有各種管理工具

confluent公司 專門做kafka的生態

https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem

kafka connect stream management

kafka考慮的幾個問題:

吞吐量: 用到了page cache 并不是硬盤讀寫

消息持久化: 這個還是靠他獨特的offset設計

負載均衡:分區副本機制

由于應用 零拷貝技術 客戶端應用epoll 所以kafka部署在linux上性能更高。

消息:kafka的消息由 key value timestamp組成 消息頭里定義了一些壓縮 版本號的信息

crc 版本號 屬性 時間戳 長度 key長度 key value長度 value

用的是二進制 不用java類

topic和partition:

這是kafka最核心,也是最重要的機制,這個機制讓他區別于其他。

offset是指某一個分區的偏移量。

topic partition offset 這三個唯一確定一條消息。

生產者的offset其實就是最新的offset。

消費者的offset是他自己維護的,他可以選擇分區最開始,最新,也可以記住他消費到哪了。

消費者數大于分區,就會有消費者空著。 消費者數小于分區,就會均衡消費。

因為kafka的設計是在一個partition上是不允許并發的,所以consumer數不要大于partition數 ,浪費。

如果consumer從多個partition讀到數據,不保證數據間的順序性,kafka只保證在一個partition上數據是有序的,但多個partition,根據你讀的順序會有不同。

增減consumer,broker,partition會導致rebalance,所以rebalance后consumer對應的partition會發生變化 。

消費者組是為了不同組的消費者可以同時消費一個分區的消息。

replica

這是為了防止服務器掛掉。

分為兩類 leader replica 和 follow replica

只有 leader replica會響應客戶端。

一旦leader replica所在的broker宕機,會選出新的leader。

kafka保證一個partition的多個replica一定不會分配到同一臺broker上。

follow與leader實時同步。

ISR

in-sync replica 與leader replica保持同步的replica集合

正常時,所有的replica都在ISR中,但如果響應太慢,就會踢出ISR。之后追上來再加進來。

ISR中至少有一個replica是活著的。

ISR中所有replica都收到消息,這個消息才是已提交狀態。

更多實時計算相關技術博文,歡迎關注實時流式計算

什么是Kafka?

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长武县| 清水河县| 罗甸县| 隆德县| 德格县| 田林县| 镇江市| 彰化县| 淮北市| 绥江县| 牡丹江市| 盐池县| 怀宁县| 开阳县| 阿克| 辽阳县| 崇明县| 鄢陵县| 兴宁市| 长宁县| 大渡口区| 弥渡县| 垫江县| 双峰县| 巴东县| 驻马店市| 林州市| 遂平县| 利辛县| 广灵县| 宝鸡市| 遵义县| 锦州市| 炉霍县| 阿鲁科尔沁旗| 买车| 泸定县| 青河县| 宁海县| 万山特区| 江城|