kafka不支持讀寫分離原理分析
引言
前段時間在看 kafka 相關內(nèi)容,發(fā)現(xiàn) kafka “所有的”讀寫流量都在主 partition 上,從 partition 只負責備份數(shù)據(jù)。
那么為什么 kafka 從 partition 不跟其他中間件一樣承接讀流量?
讀寫分離的初衷
讀寫分離的初衷我覺得是利用讀流量 & 寫流量不同的特性做針對性的優(yōu)化,而這兩種流量我覺得區(qū)別如下
讀流量 | 寫流量 | |
---|---|---|
業(yè)務特性 | 展示類的業(yè)務 | 操作類業(yè)務 |
流量占比 | 高 | 低 |
可接受數(shù)據(jù)延遲 | 較大 | 非常小 |
增長的可預見性 | 高峰/安全攻擊可能會突發(fā)增長 | 總體平穩(wěn) |
使用 kafka 的業(yè)務特征
- 操作型業(yè)務,consumer 消費 producer 生產(chǎn)的消息,進行自身業(yè)務,這個消息就類似于 trigger
- 可支撐的流量較大,并且可支撐下游 consumer 較多,rebalance 需要一定的時間
kafka 架構(gòu)
- 以 topic 為單位,一 topic 可拆分多個 partition,每個 partition 都可以有多個從 partition,不同 partition 分布在不同 broker 上
以 partition 為單位,形成 AR(Assigned Repllicas),ISR(In Sync Repllicas),OSR(Out Sync Repllicas),主 partition 接收到消息后按照 ack 策略同步到 ISR 中從 partition
ack = 0,producer 發(fā)出消息后就不管了
ack = 1,producer 發(fā)出消息寫入主 partition 所在 broker 的磁盤就算成功
ack = all,producer 發(fā)出消息寫入主 partition 以及 ISR 上所有副 partition 的磁盤才算成功
kafka 沒有主從讀寫分離的原因
不能主從讀寫分離的原因
kafka 承接的大多是操作型業(yè)務,這部分讀操作對數(shù)據(jù)延遲非常敏感。
kafka 主從同步為半同步復制,并且有部分 partition 在 OSR 上,數(shù)據(jù)延遲較大
kafka 主 partition 接收到消息后,可以根據(jù) ack 策略落盤,如果不是 all 的話存在數(shù)據(jù)丟失的風險
不需要主從讀寫分離的原因
kafka 本身就是多 partition 的架構(gòu),不同 parition 在不同的 broker 上,多主節(jié)點的結(jié)構(gòu)本身分流了流量
kafka 本身就有成熟的 rebalance 機制,partition 上線與下線都比較無感
以上就是kafka不支持讀寫分離原理分析的詳細內(nèi)容,更多關于kafka不支持讀寫分離的資料請關注腳本之家其它相關文章!
相關文章
archlinux 羅技K380 F1-F12 功能鍵鎖定(實現(xiàn)方法)
這篇文章主要介紹了archlinux 羅技K380 F1-F12 功能鍵鎖定,在windows中羅技K380可以安裝Logitech Options來實現(xiàn)這個Fn鎖定功能,需要的朋友可以參考下2023-04-04一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問題及解決辦法
這篇文章主要介紹了一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問題及解決辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07VsCode中ctrl+s后會在當前目錄下自動生成dist目錄的方法
這篇文章主要介紹了VsCode中ctrl+s后會在當前目錄下自動生成dist目錄,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09