最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kafka高效讀寫數據的原因及如何提升Kafka的吞吐量

 更新時間:2026年05月02日 15:33:08   作者:ha_lydms  
本文主要介紹了Kafka的高效讀寫數據的原因及如何提升Kafka的吞吐量,Kafka通過分區(qū)、稀疏索引等零拷貝等技術提高了讀寫效率,增加緩沖區(qū)大小、調整batch、linger等參數可以提升生產者端的吞吐量,調整fetch.max.size等max.poll.records等參數可以提升消費者端的吞吐量

1、Kafka 為什么能高效讀寫數據

  • 1)Kafka 本身是分布式集群,可以采用分區(qū)技術,并行度高

  • 2)讀數據采用稀疏索引,可以快速定位要消費的數據

  • 3)順序寫磁盤

Kafka 的 producer 生產數據,要寫入到 log 文件中,寫的過程是一直追加到文件末端,

為順序寫。官網有數據表明,同樣的磁盤,順序寫能到 600M/s,而隨機寫只有 100K/s。這

與磁盤的機械機構有關,順序寫之所以快,是因為其省去了大量磁頭尋址的時間。

  • 4)頁緩存+ 零拷貝技術

2、副本數設定

一般我們設置成2個或3個,很多企業(yè)設置為2個。

副本的優(yōu)勢:提高可靠性;副本劣勢:增加了網絡IO傳輸。

3、如何提升吞吐量

如何提升吞吐量?

  • 1)提升生產吞吐量

    • (1)buffer.memory:發(fā)送消息的緩沖區(qū)大小,默認值是32m,可以增加到64m。
    • (2)batch.size:默認是16k。如果batch設置太小,會導致頻繁網絡請求,吞吐量下降;如果batch太大,會導致一條消息需要等待很久才能被發(fā)送出去,增加網絡延時。
    • (3)linger.ms,這個值默認是0,意思就是消息必須立即被發(fā)送。一般設置一個5-100毫秒。如果linger.ms設置的太小,會導致頻繁網絡請求,吞吐量下降;如果linger.ms太長,會導致一條消息需要等待很久才能被發(fā)送出去,增加網絡延時。
    • (4)compression.type:默認是none,不壓縮,但是也可以使用lz4壓縮,效率還是不錯的,壓縮之后可以減小數據量,提升吞吐量,但是會加大producer端的CPU開銷。
  • 2)增加分區(qū)

  • 3)消費者提高吞吐量

    • (1)調整fetch.max.bytes大小,默認是50m。
    • (2)調整max.poll.records大小,默認是500條。

4、Kafka丟不丟數據

  • 1)Producer角度

    • acks=0,生產者發(fā)送過來數據就不管了,可靠性差,效率高;
    • acks=1,生產者發(fā)送過來數據Leader應答,可靠性中等,效率中等;
    • acks=-1,生產者發(fā)送過來數據Leader和ISR隊列里面所有Follwer應答,可靠性高,效率低;
    • 在生產環(huán)境中,acks=0很少使用;acks=1,一般用于傳輸普通日志,允許丟個別數據;acks=-1,一般用于傳輸和錢相關的數據,對可靠性要求比較高的場景。
  • 2)Broker角度

    • 副本數大于等于2。
    • min.insync.replicas大于等于2。

5、Kafka數據重復

去重 = 冪等性 + 事務

1)冪等性配置參數

參數名稱描述
enable.idempotence是否開啟冪等性,默認true,表示開啟冪等性。
max.in.flight.requests.per.connection1.0.X版本前,需設置為1,1.0.X之后,小于等于5
retries失敗重試次數,需要大于0
acks需要設置為all

2)Kafka的事務一共有如下5個API

// 1初始化事務
void initTransactions();

// 2開啟事務
void beginTransaction() throws ProducerFencedException;

// 3在事務內提交已經消費的偏移量(主要用于消費者)
void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> offsets,
                              String consumerGroupId) throws ProducerFencedException;

// 4提交事務
void commitTransaction() throws ProducerFencedException;

// 5放棄事務(類似于回滾事務的操作)
void abortTransaction() throws ProducerFencedException;

3)小結

  • (1)生產者角度
    • acks設置為-1 (acks=-1)。
    • 冪等性(enable.idempotence = true) + 事務 。
  • (3)broker服務端角度
    • 分區(qū)副本大于等于2 (–replication-factor 2)。

    • ISR里應答的最小副本數量大于等于2 (min.insync.replicas = 2)。

    • (3)消費者

      • 事務 + 手動提交offset (enable.auto.commit = false)。
      • 消費者輸出的目的地必須支持事務(MySQL、Kafka)。

總結

 本文主要介紹了Kafka的高效讀寫數據的原因及如何提升Kafka的吞吐量,Kafka通過分區(qū)、稀疏索引等零拷貝等技術提高了讀寫效率,提升吞吐量可以從生產者和消費者兩個方面入手,增加緩沖區(qū)大小、調整batch、linger等參數可以提升生產者端的吞吐量,調整fetch.max.size等max.poll.records等參數可以提升消費者端的吞吐量,Kafka在生產者、Broker和消費者三個角度都有措施保證數據不丟失,Kafka通過開啟冪等性、事務等措施保證數據去重和冪等性。

到此這篇關于Kafka高效讀寫數據的原因及如何提升Kafka的吞吐量的文章就介紹到這了,更多相關Kafka提高讀寫效率內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • DeveloperSharp?高效分頁使用詳解

    DeveloperSharp?高效分頁使用詳解

    這篇文章主要為大家介紹了DeveloperSharp?高效分頁使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 聚合函數和group by的關系詳解

    聚合函數和group by的關系詳解

    大家好,本篇文章主要講的是聚合函數和group by的關系詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Navicat恢復數據庫連接及查詢sql的完美解決辦法

    Navicat恢復數據庫連接及查詢sql的完美解決辦法

    因為公司給電腦加域,導致使用新的用戶賬戶,原先的很多配置都失效了,這篇文章主要介紹了Navicat恢復數據庫連接及查詢sql的解決辦法,需要的朋友可以參考下
    2023-08-08
  • DBeaver執(zhí)行外部sql文件詳細圖文教程

    DBeaver執(zhí)行外部sql文件詳細圖文教程

    DBeaver最近才使用,以前使用的PL/SQL,有些不是很熟悉,記錄下來,下面這篇文章主要給大家介紹了關于DBeaver執(zhí)行外部sql文件的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • sql小計匯總 rollup用法實例分析

    sql小計匯總 rollup用法實例分析

    rollup在oracle ,sql-server里面都有有。
    2009-06-06
  • Navicat圖形化界面之Navicat?Premium?12?安裝與使用教程

    Navicat圖形化界面之Navicat?Premium?12?安裝與使用教程

    Navicat?premium?是一款數據庫管理工具,它可以讓你以單一程式同時連線到?MySQL、SQLite、Oracle?及?PostgreSQL?資料庫,讓管理不同類型的資料庫更加的方便,下面通過本文給大家介紹Navicat?Premium?12?安裝使用教程,需要的朋友參考下吧
    2021-12-12
  • 圖文詳解如何用IDEA和Navicat導入導出數據庫

    圖文詳解如何用IDEA和Navicat導入導出數據庫

    這篇文章主要介紹了如何用IDEA和Navicat導入導出數據庫的相關資料,包括使用數據庫工具界面或mysqldump命令,并提示MySQL版本兼容性問題及Navicat導出文件不帶注釋的原因,需要的朋友可以參考下
    2025-06-06
  • 介紹PostgreSQL中的Lateral類型

    介紹PostgreSQL中的Lateral類型

    這篇文章主要介紹了介紹PostgreSQL中的Lateral類型,Lateral是PostgreSQL9.3版本以來加入的內置類型,需要的朋友可以參考下
    2015-04-04
  • 如何在一個千萬級的數據庫查詢中提高查詢的效率?

    如何在一個千萬級的數據庫查詢中提高查詢的效率?

    今天小編就為大家分享一篇關于如何在一個千萬級的數據庫查詢中提高查詢的效率?,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • SQL WHERE IN參數化編譯寫法簡單示例

    SQL WHERE IN參數化編譯寫法簡單示例

    這篇文章主要給大家介紹了關于SQL WHERE IN參數化編譯寫法的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用SQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11

最新評論

新化县| 汝阳县| 金堂县| 抚顺市| 常熟市| 紫云| 虹口区| 乡宁县| 边坝县| 平昌县| 威海市| 肥西县| 汝城县| 宁城县| 通许县| 吉木萨尔县| 信阳市| 北京市| 禄丰县| 禹城市| 阿鲁科尔沁旗| 诸城市| 谷城县| 县级市| 济南市| 安陆市| 昂仁县| 垣曲县| 容城县| 新竹市| 林西县| 玉门市| 吴桥县| 石泉县| 梅河口市| 军事| 玉溪市| 德阳市| 慈利县| 赤峰市| 南部县|