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

Kafka高效讀寫(xiě)數(shù)據(jù)的原因及如何提升Kafka的吞吐量

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

1、Kafka 為什么能高效讀寫(xiě)數(shù)據(jù)

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

  • 2)讀數(shù)據(jù)采用稀疏索引,可以快速定位要消費(fèi)的數(shù)據(jù)

  • 3)順序?qū)懘疟P(pán)

Kafka 的 producer 生產(chǎn)數(shù)據(jù),要寫(xiě)入到 log 文件中,寫(xiě)的過(guò)程是一直追加到文件末端,

為順序?qū)?。官網(wǎng)有數(shù)據(jù)表明,同樣的磁盤(pán),順序?qū)懩艿?600M/s,而隨機(jī)寫(xiě)只有 100K/s。這

與磁盤(pán)的機(jī)械機(jī)構(gòu)有關(guān),順序?qū)懼钥欤且驗(yàn)槠涫∪チ舜罅看蓬^尋址的時(shí)間。

  • 4)頁(yè)緩存+ 零拷貝技術(shù)

2、副本數(shù)設(shè)定

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

副本的優(yōu)勢(shì):提高可靠性;副本劣勢(shì):增加了網(wǎng)絡(luò)IO傳輸。

3、如何提升吞吐量

如何提升吞吐量?

  • 1)提升生產(chǎn)吞吐量

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

  • 3)消費(fèi)者提高吞吐量

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

4、Kafka丟不丟數(shù)據(jù)

  • 1)Producer角度

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

    • 副本數(shù)大于等于2。
    • min.insync.replicas大于等于2。

5、Kafka數(shù)據(jù)重復(fù)

去重 = 冪等性 + 事務(wù)

1)冪等性配置參數(shù)

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

2)Kafka的事務(wù)一共有如下5個(gè)API

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

// 2開(kāi)啟事務(wù)
void beginTransaction() throws ProducerFencedException;

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

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

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

3)小結(jié)

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

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

    • (3)消費(fèi)者

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

總結(jié)

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

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

相關(guān)文章

最新評(píng)論

枣阳市| 苗栗市| 大竹县| 醴陵市| 卫辉市| 稻城县| 乌兰察布市| 南溪县| 阿勒泰市| 临桂县| 视频| 伊金霍洛旗| 东乌| 盈江县| 永安市| 淮南市| 临澧县| 胶南市| 濉溪县| 三河市| 华阴市| 三台县| 长葛市| 辽宁省| 阿拉善左旗| 垫江县| 大田县| 隆林| 谷城县| 浦江县| 哈巴河县| 清苑县| 南靖县| 上林县| 朝阳县| 长沙县| 卢龙县| 乌拉特后旗| 西宁市| 嘉定区| 富平县|