1. 程式人生 > >【Kafka】《Kafka權威指南》——分割槽partition

【Kafka】《Kafka權威指南》——分割槽partition

在上篇的例子裡(【Kafka】《Kafka權威指南》——寫資料), ProducerRecord 物件包含了目標主題、鍵和值。 Kafka 的訊息是 一個個 鍵值對, ProducerRecord物件可以只包含目標主題和值,鍵可以設定為預設的 null,不過大多數應用程式會用到鍵。鍵有兩個用途 :可以作為訊息的附加資訊,也可以用來決定訊息該被寫到主題的哪個分割槽。擁有相同鍵的悄息將被寫到同一個分割槽。 也就是說,如果一個程序只從一個主題的分割槽讀取資料(第 4章會介紹更多細節),那麼具有相 同鍵的所有記錄都會被該程序讀取。要建立一個包含鍵值的記錄,只需像下面這樣建立 ProducerRecord 物件:

如果鍵值為 null, 井且使用了預設的分割槽器,那麼記錄將被隨機地傳送到主題內各個可用的分割槽上。分割槽器使用輪詢(Round Robin)演算法將訊息均衡地分佈到各個分割槽上。

如果鍵不為空,並且使用了預設的分割槽器,那麼Kafka會對鍵進行雜湊(使用 Kafka 自己的雜湊演算法,即使升級Java版本,雜湊值也不會發生變化),然後根據雜湊值把訊息對映到特定的分割槽上。這裡的關鍵之處在於 ,同一個鍵總是被對映到同一個分割槽上 ,所以在進 行對映時,我們會使用主題所有的分割槽,而不僅僅是可用的分割槽 。這也意味著,如果寫入資料的分割槽是不可用的,那麼就會發生錯誤。但這種情況很少發生。我們將在第 6章討論 Kafka 的複製功能和可用性。

只有在不改變主題分割槽數量的情況下,鍵與分割槽之間的對映才能保持不變 。舉個例子,在分割槽數量保持不變的情況下,可以保證使用者 045189 的記錄總是被寫到分割槽 34。在從分割槽讀取資料肘,可以進行各種優化。不過,一旦主題增加了新的分割槽,這些就無法保證 了——舊資料仍然留在分割槽 34,但新的記錄可能被寫到其他分割槽上 。 如果要使用鍵來對映分割槽,那麼最好在建立主題的時候就把分割槽規劃好,而且永遠不要增加新分割槽。

實現自定義分割槽策略

我們已經討論了預設分割槽器的特點,它是使用次數最多的分割槽器。不過 ,除了雜湊分割槽之 外,有時候也需要對資料進行不一樣的分割槽。假設你是一個 B2B 供應商,你有 一 個大客 戶,它是手持裝置 Banana 的製造商。 Banana 佔據了你整體業務 10% 的份額。如果使用默 認的雜湊分割槽算怯, Banana 的賬號記錄將和其他賬號記錄一起被分配給相同的分割槽,導致 這個分割槽比其他分割槽要大一些。伺服器可能因此出現儲存空 間不足、處理緩慢等問題。我 們需要給 Banana 分配單獨的分割槽,然後使用雜湊分割槽算住處理其他賬號 。

下面是一個自定義分割槽器的例子 :

相關推薦

筆記kafka權威指南-常用配置和要點記錄

Kafka 的應用場景 訊息佇列 Kafka有更好的吞吐量,內建的分割槽,冗餘及容錯性,這讓Kafka成為了一個很好的大規模訊息處理應用的解決方案。 行為跟蹤和日誌收集。 敏感操作和日誌,都可以寫到 kafka 裡進行統一,分情況的監控、

Kafkakafka動態獲取某個topic的partition資訊

現在有這樣一種場景,系統啟動前,預期abc topic建立了一個100個分割槽,大概用個一段時間,之後可能會動態新增分割槽數,這就要求生產者在生產資料時,能夠動態實時的獲取分割槽數,做到及時有效的雜湊生效,讓資料進入新增的分割槽,kafka的jar包裡倒是有這麼一個api可以

Kafka某topic無法消費解決方案&Kafka某Topic數據清理

清0 logs -s 重點 找到 使用 on和off image ica 由於項目原因,最近經常碰到Kafka消息隊列某topic在集群宕機重啟後無法消費的情況。碰到這種情況,有三步去判斷原因所在: step A:如果用kafka串口(即console-consumer)

Apache KafkaKafka學習筆記

local ets prop strong 當前 text 生產 create topic 0x00 基本信息 1、Kafka架構圖 2、環境信息 服務器IP:xx.xx.xx.xx 操作系統:CentOS7.2_x64 Kafka版本:kafka_2.12-1.1

kafkakafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0

error check tar sig closed nat tree gui man https://blog.csdn.net/bigtree_3721/article/details/78442912I am trying to create topics in Ka

TDHKafka、Flume、Slipstream基本操作

【Kafka操作:在${KAFKA_HOME}/bin下執行Kafka操作】 1、在星環TDH叢集上操作Kafka的時候首先要進行相關的賦權操作 (1)賦予當前使用者(當前使用者以hive為例,可以使用kinit進行使用者的切換)操作叢集的許可權 ./kafka-acls.sh --

Kafkakafka環境搭建及使用

Kafka是一個分散式的、可分割槽的、可複製的訊息系統。它提供了普通訊息系統的功能,但具有自己獨特的設計 Kafka將訊息以topic為單位進行歸納。將向Kafka topic釋出訊息的程式成為producers.將預訂topics並消費訊息的程式成為consumer.K

kafka-告訴你什麼是kafka

文章轉自:http://orchome.com/5 Kafka作為一個分散式的流平臺,這到底意味著什麼? 我們認為,一個流處理平臺具有三個關鍵能力: 釋出和訂閱訊息(流),在這方面,它類似於一個訊息佇列或企業訊息系統。 以容錯的方式儲存訊息(流)。

kafka-檔案儲存機制詳解

文章轉自“美團技術部落格”:https://tech.meituan.com/ Kafka是什麼 Kafka是最初由Linkedin公司開發,是一個分散式、分割槽的、多副本的、多訂閱者,基於zookeeper協調的分散式日誌系統(也可以當做MQ系統),常見可以用於web

KafkaKafka 1.0.1案例詳解之快速入門

這個章節我們將從Kafka叢集的安裝部署講起,並測試topic的建立,訊息的釋出訂閱等功能。希望對你有所幫助。廢話不多說,我們開始單機模式的安裝下載Kafka元件[[email protect

乾貨Kafka實現淘寶億萬級資料統計(下)

開發十年,就只剩下這套架構體系了! >>>   

PWA泛指南

原文地址: An Extensive Guide To Progressive Web Applications 快速摘要 在本文中,我們將瞭解瀏覽舊的非PWA網站的使用者的痛點以及PWA使網路變得更好的希望。您將學習製作非常酷的PWA的大多數重要技術,例如service worker,Web push

Leetcode86.(Medium)Partition List

解題思路: 這道題我將list轉化為了ArrayList來做 基本思路是先將連結串列轉化為ArrayList,然後找到第一個大於等於x的數字,並記下位置flag。然後從後向前,如果是小於x的數就插入到flag的位置。比較耗時的地方是每次將數字插入到flag的位置時,ArrayList會將所有

Linux Vim學習指南

你想盡可能快地自學vim(為大家所熟知的最好的編輯器) 。這是我學習的方法:從細處入手然後慢慢掌握所有技巧。 Vim 六十億美元的編輯器 設計優良,強壯,快速。 學習vim並把它作為你的下一個文字編輯器,據我所知沒有比它更好的編輯器,學起來難但出奇的好用。 我

GraphQL 初學者指南

原文地址:A Beginner’s Guide to GraphQL 原文作者:Leonardo Maldonado 專案倉庫:GraphQL-Guide-For-Beginner 譯者:Seymoe 譯者注:此文為本人第一篇譯文,本人作為無 GraphQL 使用背景的初

轉載IEEE 投稿指南

IEEE SIGNAL PROCESSING LETTERS IEEESIGNAL PROCESSING LETTERSA PUBLICATION OF THE IEEE SIGNAL PROCESSING SOCIETY Information for AuthorsU

MapReduceMapReduce中的分割槽方法Partitioner

在進行MapReduce計算時,有時候需要把最終的輸出資料分到不同的檔案中,比如按照省份劃分的話,需要把同一省份的資料放到一個檔案中;按照性別劃分的話,需要把同一性別的資料放到一個檔案中。我們知道最終的輸出資料是來自於Reducer任務。那麼,如果要得到多個檔案,意味著有同樣數量的Reducer任務在執行。R

KafkaKafka權威指南》——分割槽partition

在上篇的例子裡(【Kafka】《Kafka權威指南》——寫資料), ProducerRecord 物件包含了目標主題、鍵和值。 K

KafkaKafka權威指南》——寫資料

不管是把 Kafka 作為訊息佇列、訊息、匯流排還是資料儲存平臺來使用 ,總是需要有一個可以往 Kafka 寫入資料的生產者和一個

Spark Streaming和Kafka整合開發指南

thread ada 關系 方法 拷貝 理解 1.2 reduce arr 基於Receivers的方法 這個方法使用了Receivers來接收數據。Receivers的實現使用到Kafka高層次的消費者API。對於所有的Receivers,接收到的數據將會保存在Spark