亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

kafka消息隊(duì)列

godlong_X / 492人閱讀

摘要:為什么使用消息隊(duì)列消息隊(duì)列的優(yōu)缺優(yōu)點(diǎn)解耦異步消峰缺點(diǎn)系統(tǒng)的可用性降低,系統(tǒng)引入的外部依賴越多,越容易掛掉系統(tǒng)復(fù)雜性提高數(shù)據(jù)一致性問(wèn)題常用消息隊(duì)列的優(yōu)缺點(diǎn)技術(shù)非常成熟,但是偶爾會(huì)出現(xiàn)較低概率的丟失消息,而且現(xiàn)在社區(qū)以及國(guó)內(nèi)應(yīng)用都越來(lái)越少社區(qū)相

為什么使用消息隊(duì)列
消息隊(duì)列的優(yōu)缺
1優(yōu)點(diǎn)

(1) 解耦

(2) 異步

(3) 消峰

2 缺點(diǎn)

(1)系統(tǒng)的可用性降低,系統(tǒng)引入的外部依賴越多,越容易掛掉

(2)系統(tǒng)復(fù)雜性提高

(3)數(shù)據(jù)一致性問(wèn)題

常用消息隊(duì)列的優(yōu)缺點(diǎn)

(1)activeMq 技術(shù)非常成熟,但是偶爾會(huì)出現(xiàn)較低概率的丟失消息,而且現(xiàn)在社區(qū)以及國(guó)內(nèi)應(yīng)用都越來(lái)越少

(2)rabbitMQ 社區(qū)相對(duì)活躍,吞吐量是萬(wàn)級(jí)別,而且開(kāi)元,性能極好,但是erlang語(yǔ)言阻止了大量的Java程序員深入研究和掌握他,對(duì)公司而言幾乎是不可控的

(3)rocketMq 10萬(wàn)級(jí)別的,rockectMq 也是可以支持高吞吐的一個(gè)MQ,topic可以達(dá)到幾百,幾千的級(jí)別,可用性非常的高,分布式架構(gòu),但是社區(qū)有黃的風(fēng)險(xiǎn)。

(4)kafka 特點(diǎn)就是僅僅提供較少的核心功能,但是提供較高的吞吐量,極高的可用性能,而且分布式可以隨意的擴(kuò)展,但是沒(méi)有重復(fù)消費(fèi),會(huì)對(duì)大數(shù)據(jù)產(chǎn)生一點(diǎn)點(diǎn)影響,特別適合大數(shù)據(jù)領(lǐng)域的實(shí)時(shí)計(jì)算,日志采集等場(chǎng)景,社區(qū)活躍度很高

消息隊(duì)列的高可用

(1)kafka是天然的分布式消息隊(duì)列,就是說(shuō)一個(gè)topic的數(shù)據(jù),是分散在多個(gè)機(jī)器上的,每一個(gè)機(jī)器就放其中的一部分?jǐn)?shù)據(jù),kafka0.8以后,提供了HA機(jī)制,就是replica的副本機(jī)制,,每一個(gè)partition的數(shù)據(jù)都會(huì)同步到其他的機(jī)器上,形成自己的多個(gè)replica副本,然后所有的replica就會(huì)選舉一個(gè)leader出來(lái),那么生產(chǎn)者和消費(fèi)者都跟這個(gè)leader打交道,然后其他的replica就是flower,leader會(huì)負(fù)責(zé)將數(shù)據(jù)同步到follower中去,讀的時(shí)候直接讀leader上的數(shù)據(jù)就行了。這么搞,就有所謂的高可用性了,因?yàn)槿绻粋€(gè)broke硯機(jī)了,那么其他的機(jī)器上有他的副本,如果時(shí)某個(gè)partition的leader出現(xiàn)了問(wèn)題,那么follower就會(huì)選舉為新的leader,大家就可以繼續(xù)讀寫那個(gè)新的leader即可,這就是所謂的高可用性。

如何保證消息不被重復(fù)消費(fèi)(如何保證消息的消費(fèi)時(shí)的冪等性)

kafka有個(gè)offset的概念,就是每次每個(gè)消息寫進(jìn)去,都有一個(gè)offset,代表他的序號(hào),然后,consumer 消費(fèi)了數(shù)據(jù)之后,每隔一段時(shí)間,就會(huì)把自己消費(fèi)了的offset提交一下,代表我已經(jīng)消費(fèi)過(guò)了,下一次要是重啟啥的,就會(huì)繼續(xù)從上一次的消費(fèi)的offset來(lái)繼續(xù)消費(fèi),但是假如,有時(shí)候 重啟系統(tǒng),就會(huì)導(dǎo)致有些還沒(méi)有來(lái)的及處理的消息沒(méi)有offset,就會(huì)導(dǎo)致有些消息會(huì)在消費(fèi)一次。其實(shí)重復(fù)消費(fèi)并沒(méi)有什么,最重要的是保證冪等性,如何消除冪等性的問(wèn)題

(1)比如,你拿數(shù)據(jù)庫(kù)里面的數(shù)據(jù),你先跟住主鍵進(jìn)行查詢一下,如果數(shù)據(jù)都有了,你就不需要插入了,直接update一下就好了

(2)比如你是寫Redis,那就沒(méi)有問(wèn)題了,反正每次都是set,天然冪等性

(3)可以使用唯一鍵進(jìn)行約束

如何保證數(shù)據(jù)的可靠性傳輸

(1)消費(fèi)端能丟了數(shù)據(jù)

    就是說(shuō)消費(fèi)者消費(fèi)了消費(fèi)到消息,然后消費(fèi)者那邊自動(dòng)提交了offset,讓kafka以為你已經(jīng)消費(fèi)了數(shù)據(jù),但是其實(shí)你這邊還沒(méi)有處理,就已經(jīng)掛了,那么只需要關(guān)閉自動(dòng)提交offset,在處理完成以后自己手動(dòng)的提交offset,就可以保證數(shù)據(jù)不會(huì)丟失了,但是此時(shí)會(huì)存在重復(fù)消費(fèi)的問(wèn)題,這時(shí),只需要保證冪等問(wèn)題就好了。
    

(2)kafka弄丟了數(shù)據(jù)

    這是一個(gè)比較常見(jiàn)的問(wèn)題,就是kafka某個(gè)broke巖機(jī),然后重新選舉某一個(gè)partition的leader時(shí),假如此時(shí)其他的follower還有一些數(shù)據(jù)還沒(méi)有同步,結(jié)果leader就已經(jīng)掛了,然后選舉某一個(gè)follower成leader后,就會(huì)少了一批數(shù)據(jù)。此時(shí),我們要給topic設(shè)置4個(gè)參數(shù)就好了,
    
    *1 給topic設(shè)置replication.factor參數(shù),這個(gè)值必須大于1,要求每一個(gè)partition必須至少2個(gè)副本  ??
    
    *2 在producer端設(shè)置ACKs=all:這是要求每條數(shù)據(jù),都必須是寫入replica之后,才能認(rèn)為是寫入成功了
    
    *3 在producer端設(shè)置retries=max,這就要求一旦寫入失敗,就無(wú)限重試,卡在這里了。
    
    *4 在kafka服務(wù)器設(shè)置min.insync.replicas參數(shù),這個(gè)值必須大于1,這是要求一個(gè)leader至少感知到有至少一個(gè)follower還和自己進(jìn)行聯(lián)系,沒(méi)有掉隊(duì),這樣才能保證leader掛了,還有一個(gè)follower
    

如何保證數(shù)據(jù)的有序性

  一個(gè)topic,一個(gè)partition,一個(gè)consumer,內(nèi)部線程消費(fèi),寫N個(gè)內(nèi)存queue,然后N個(gè)線程分別消費(fèi)一個(gè)內(nèi)存queue即可
  

如何解決消息隊(duì)列中的時(shí)效性問(wèn)題,消息對(duì)列中消息滿了怎么辦

   擴(kuò)容
   
    (0)將現(xiàn)有的consumer停掉
   
    (1)新建一個(gè)topic,partition是原來(lái)的10倍,臨時(shí)建好原先10倍或20倍的queue數(shù)量
    
    (2)寫一些臨時(shí)的分發(fā)數(shù)據(jù)的程序,將程序部署到上面進(jìn)行消費(fèi)
    

設(shè)計(jì)一個(gè)MQ系統(tǒng)架構(gòu)注意點(diǎn)

    (1) 系統(tǒng)可伸縮,就是想要擴(kuò)容的時(shí)候能夠擴(kuò)容,我們可以采用分布式架構(gòu)
    
    (2) MQ的數(shù)據(jù)怎樣落地到磁盤
    
    (3) MQ的可用性
    
     (4) 保證數(shù)據(jù)的完整性,以及數(shù)據(jù)丟失的方案
     

總結(jié) 通過(guò)以上的學(xué)習(xí)可以使我們基本了解消息隊(duì)列的使用。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/69716.html

相關(guān)文章

  • 阿里云正式推出消息隊(duì)列Kafka:全面融合開(kāi)源生態(tài)

    摘要:在全面兼容Apache Kafka生態(tài)的基礎(chǔ)上,消息隊(duì)列Kafka徹底解決ApacheKafka穩(wěn)定性不足的長(zhǎng)期痛點(diǎn),并且支持消息無(wú)縫遷移到云上。 近日,阿里云宣布正式推出消息隊(duì)列Kafka,全面融合開(kāi)源生態(tài)。在全面兼容Apache Kafka生態(tài)的基礎(chǔ)上,消息隊(duì)列Kafka還具備了超易用,超高可用可靠性,擴(kuò)縮容不操心,全方位安全診斷,數(shù)據(jù)安全有保障的特點(diǎn)??捎眯羞_(dá)99.9%,數(shù)據(jù)可靠行99...

    aisuhua 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<