99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網易首頁 > 網易號 > 正文 申請入駐

從零開始重建Kafka,會是什么樣?

0
分享至


“如果可以從零開始重新設計 Kafka,一個真正云原生的事件日志系統,它應該具備怎樣的特性?”你是否有想過這個問題。本文作者 Gunnar Morling 結合多年來在事件驅動應用、實時 ETL 和變更數據捕獲(CDC)領域使用 Kafka 的實踐經驗,梳理了一份理想版 Kafka.next 的特性清單,看看這個是你想要的嗎?

原文鏈接:https://www.morling.dev/blog/what-if-we-could-rebuild-kafka-from-scratch/

作者 | Gunnar Morling

責編 |蘇宓

出品 | CSDN(ID:CSDNnews)

以下為譯文:

這幾天,我花時間仔細研究了最近公布的KIP-1150(也叫“Diskless Kafka”,無盤 Kafka),還有 AutoMQ 發布的 Kafka 分支版本。這些新版本把 Apache Kafka 和對象存儲(比如 Amazon 的 S3)做了很深度的結合。簡單說,就是想讓 Kafka 在云環境中用起來更輕松,這些項目效仿了 WarpStream 提出的思路,主要目標是讓 Kafka 能根據需求更靈活地擴展或縮減資源(即彈性)、大幅降低使用成本,以及進一步為未來和“數據湖倉一體”(lakehouse)這樣的新型數據架構無縫整合打基礎。

這些探索讓我開始思考:如果今天從零開始,重新設計一個真正面向云原生的、高可靠的事件日志系統(可以叫它Kafka.next),那它應該具備哪些理想特性呢?

當然,計算和存儲分離支持對象存儲這些是最基本的要求,但除此之外,還應該具備什么?

結合我這些年用 Kafka 構建事件驅動應用、做實時 ETL(實時抽取-轉換-加載數據流程)和變更數據捕獲(CDC,Change Data Capture)管道的經驗,下面是我個人希望能有的一些功能清單:

  • 取消分區的概念

以前 Kafka 需要把數據分成很多“分區”,這樣才能把數據分散到各個服務器本地磁盤上,解決擴展性問題。但在云端,用上了像 S3 這樣的超大對象存儲后,就不再需要這種分區機制了。

雖然分區還能幫我們保證數據的“順序性”,但實際上從應用角度來看,這種順序性沒那么有用。一般來說,要么你希望整個主題(topic)里所有消息有全局順序,要么更常見的是同一個 key 的消息保持順序

而分區導致的情況是,一些本來無關的消息,僅僅因為哈希碰巧算到同一個分區,就強行有了順序——這并沒有多大意義。所以,新系統里完全可以不再把“分區”暴露給用戶。

  • 以 Key 為中心的數據訪問方式

與其像現在這樣按分區讀數據,我們更希望能直接、快速地訪問所有屬于同一個 key 的消息

也就是說,不用粗略地掃整個主題或分區,而是有幾百萬條以實體為單位的小流(stream),每條小流對應一個 key。

這樣做有很多好處,包括只讀取你真正需要的數據,效率更高;消費者(消費者就是讀取消息的程序)數量可以根據實際需要動態調整,不再受限于預先固定的分區數;保證了同一個 key 的消息順序,非常適合做事件溯源(Event Sourcing)架構、基于 actor 或 agent 的系統;還能自然解決傳統分區里“堵頭”(head-of-line blocking)的問題。如果某條消息處理失敗,只影響它自己對應的 key,不會影響其他 key 的消息。

簡單說,就是每個 key 成了一個獨立的小系統,壞了也只影響自己,而不是連累一大片。

  • 支持 Topic 層級結構

在像 Solace 這樣的系統里,可以把消息內容的一部分提升成一個有層次的路徑式主題名字(就像文件夾路徑一樣),比如 orders/usa/california。這樣,客戶端就可以根據模式(pattern)靈活訂閱自己想要的一部分消息,比如只訂閱美國加州的訂單流。而且服務器(broker)不需要解析完整消息,只需要看路徑就能決定怎么分發,非常高效。

  • 并發控制機制

現在用 Kafka 做“最終數據存儲”的話有個問題:沒辦法防止寫入的數據是基于舊版本信息的。舉個例子:你看到賬戶余額是 100,想扣 10,但別人剛好在你之前扣了 90,這時你如果直接寫,會把余額弄錯。

如果有類似樂觀鎖(optimistic locking)的機制,比如基于 key 版本號的檢查,就能避免這種沖突。這樣,當一條消息成功提交時,可以保證它看到的是 key 的最新狀態,從而避免數據更新丟失。

  • Broker 端原生支持 Schema

現在 Kafka 把消息當成黑盒(二進制數組),完全不管里面是什么內容。這就導致:消費者(讀取方)要自己通過旁路機制(比如 Schema Registry)去搞清楚數據格式;如果有壞心眼的生產者(發送方)發了不符合格式的數據,Kafka 也攔不住;也因此,Kafka 的數據很難直接寫入像 Apache Iceberg 這種開源數據表格式。

如果 Kafka 能直接在服務器端支持 Schema,就能大大改善使用體驗,比如Kafka 本身就能提供標準的接口(比如 AsyncAPI)來描述消息結構;還能直接支持按列(columnar)存儲,為不同需求優化數據。

  • 系統擴展性和可插拔性

很多成功的開源項目,比如 Postgres 和 Kubernetes,都有一個共同點:很容易擴展和定制。用戶可以通過標準接口添加自己的插件(而不是改核心代碼),實現自己的功能。

在 Kafka.next 中,這種可擴展性應該成為基礎設計,比如可以寫自定義的消息過濾器、消息轉換器;支持不同的存儲格式(比如按列存儲);可以通過插件添加限流、加密、或者讓 topic 直接和 Iceberg 表對接的能力。

簡單說,就是系統自己盡量少管死,留出空間讓用戶按需擴展

  • 同步提交回調

現在 Kafka 保證的是“最終一致性”,也就是說,生產者發完一條消息后,并不知道什么時候下游系統(比如數據庫)真正處理完了。有些場景下,我們希望當生產者收到確認時,就能確定下游已經同步好了

如果能實現這種同步機制,Kafka 就能真正像一個有強一致性特性的數據庫來用了,比如可以實現“寫后立刻讀到”的體驗。

  • 快照功能(Snapshotting)

目前 Kafka 支持“壓縮”(compaction)功能,也就是保留同一個 key 的最后一條記錄。如果每條記錄都包含了完整狀態,比如一條訂單記錄就包含了所有訂單信息,那這樣壓縮是沒問題的。但如果是部分更新,比如“訂單狀態從待支付改成已支付”,那就需要把所有變化都按順序應用一遍,才能恢復完整狀態。

隨著變化越來越多,恢復速度就會變得越來越慢。

如果 Kafka 支持內置的快照功能,就能在需要的時候把一系列變化總結成一個當前狀態的快照,后續更新基于這個快照繼續處理,舊記錄可以清理掉,大大提高效率。

  • 多租戶支持(Multi-tenancy)

任何現代數據系統,從設計一開始就應該考慮多租戶場景。比如,為每個客戶快速創建隔離的環境,操作應該既便宜又迅速。同時,不同客戶之間在訪問權限、安全性、資源使用、計費等方面應該完全隔離,互不影響。

其實,這里提到的一些功能,有些系統已經實現了。例如,S2 支持了超大量小流(high cardinality streams)、Waltz 里有樂觀鎖(optimistic locking)、Apache Pulsar 做得很好的就是多租戶(multi-tenancy)

但,要把這些特點全部集成在一個系統里——尤其是開源系統,目前我還沒見過。

回過頭來說,以上這些,只是我個人心目中理想版Kafka.next應該具備的能力。(當然,強調一下,這篇文章完全代表我個人觀點,和我供職的公司 Confluent 沒有官方關系。)這些想法,主要是基于我這些年看到大家用 Kafka 想做的各種應用場景和需求總結出來的。不過我相信,每個用過 Kafka 或類似平臺的人,心里應該也都有自己的一份清單。

最后,當然有個很重要的問題是:那這樣一個系統到底應該怎么設計呢?

關于這個,我今天就先不展開了。不過可以先透露一點:如果要真的實現上面這些功能,基于日志結構合并樹(Log-Structured Merge Tree,簡稱 LSM Tree)的設計,很可能是個不錯的選擇。


特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
賴清德暗示接受兩岸統一,要求北京調整對臺政策,國臺辦直接挑明

賴清德暗示接受兩岸統一,要求北京調整對臺政策,國臺辦直接挑明

小鬼頭體育
2025-05-21 04:35:43
92年廣東男子瞞著老婆花68萬囤茅臺,25年后用錢,才知道真實價值

92年廣東男子瞞著老婆花68萬囤茅臺,25年后用錢,才知道真實價值

磊子講史
2025-05-24 11:33:12
法網瘋狂一夜!男單8強出其4:阿卡取11連勝,穆塞蒂力克丹麥天才

法網瘋狂一夜!男單8強出其4:阿卡取11連勝,穆塞蒂力克丹麥天才

大秦壁虎白話體育
2025-06-02 09:07:48
我媽沒有退休金,繼父每月給她存7800元,18年后繼父兒子找到我媽

我媽沒有退休金,繼父每月給她存7800元,18年后繼父兒子找到我媽

風起青萍之未
2025-06-01 18:21:23
4人進8強 隨著薩巴2-0、斯瓦泰克2-1 鄭欽文死亡半區:2大苦主全贏

4人進8強 隨著薩巴2-0、斯瓦泰克2-1 鄭欽文死亡半區:2大苦主全贏

夢憶之淺
2025-06-02 00:52:46
生于1992年的她,追求低級趣味,嚴重違反黨的工作紀律、生活紀律,構成嚴重職務違法并涉嫌貪污犯罪

生于1992年的她,追求低級趣味,嚴重違反黨的工作紀律、生活紀律,構成嚴重職務違法并涉嫌貪污犯罪

新京報政事兒
2025-06-01 15:59:01
凱洛格:俄羅斯贏不了這場戰爭!

凱洛格:俄羅斯贏不了這場戰爭!

仗劍看世界
2025-04-30 07:49:28
中美談判停滯,特朗普連退兩步,謝鋒上臺致辭,對美強調一件事

中美談判停滯,特朗普連退兩步,謝鋒上臺致辭,對美強調一件事

涼羽亭
2025-06-02 12:37:35
哈里王子欲改姓“斯賓塞”致敬戴妃,梅根早已自稱“蘇塞克斯”

哈里王子欲改姓“斯賓塞”致敬戴妃,梅根早已自稱“蘇塞克斯”

全球奇趣娛樂八卦
2025-06-02 11:09:00
馬斯克最新發聲:不想為美政府所做的一切承擔責任

馬斯克最新發聲:不想為美政府所做的一切承擔責任

財聯社
2025-06-02 07:10:20
著名相聲演員孫越單飛,新職業惹爭議,終于知道他為啥這么胖了!

著名相聲演員孫越單飛,新職業惹爭議,終于知道他為啥這么胖了!

草莓解說體育
2025-06-01 12:01:57
沒有北約支持,烏克蘭哪來這大膽子?俄羅斯“鐵拳”絕不是擺設

沒有北約支持,烏克蘭哪來這大膽子?俄羅斯“鐵拳”絕不是擺設

荷蘭豆愛健康
2025-06-02 12:34:09
工業GDP:中國不再是等于“美國、日本、德國”之和,而是超過了

工業GDP:中國不再是等于“美國、日本、德國”之和,而是超過了

大道無形我有型
2025-06-01 14:41:07
日系陣營的“叛徒”:馬自達用最笨的辦法,打了誰的臉?

日系陣營的“叛徒”:馬自達用最笨的辦法,打了誰的臉?

四象八卦
2025-06-02 09:06:55
全新榮放取消燃油版本:豐田押注混動轉型,中國市場掀起技術博弈

全新榮放取消燃油版本:豐田押注混動轉型,中國市場掀起技術博弈

沙雕小琳琳
2025-06-02 12:49:29
姆巴佩去年12月采訪:現在并不想巴黎拿歐冠,因為我要先贏下

姆巴佩去年12月采訪:現在并不想巴黎拿歐冠,因為我要先贏下

懂球帝
2025-06-01 19:14:20
蘭博基尼車主撇開代駕小哥酒駕進車庫,卻因賴賬5元被舉報,交警:吊銷駕照并罰款

蘭博基尼車主撇開代駕小哥酒駕進車庫,卻因賴賬5元被舉報,交警:吊銷駕照并罰款

極目新聞
2025-06-02 12:45:38
曼聯官宣!6250萬簽約1巨星!阿莫林9000萬重構曼聯左路攻防

曼聯官宣!6250萬簽約1巨星!阿莫林9000萬重構曼聯左路攻防

卡靈頓分析師
2025-06-02 11:21:56
82年探親路上我舍命救下一女兵,歸隊第二天上級把我叫到辦公室

82年探親路上我舍命救下一女兵,歸隊第二天上級把我叫到辦公室

蕭竹輕語
2025-05-27 10:40:52
趙心童排名爭議引發博主不滿,世臺聯被批“吃相難看”

趙心童排名爭議引發博主不滿,世臺聯被批“吃相難看”

小犙拍客在北漂
2025-06-02 12:55:40
2025-06-02 14:07:00
CSDN incentive-icons
CSDN
成就一億技術人
25596文章數 242067關注度
往期回顧 全部

科技要聞

新造車5月再洗牌:問界回前三,小米守第五

頭條要聞

女子花460萬買大平層 買第二套時發現土地使用權剩47年

頭條要聞

女子花460萬買大平層 買第二套時發現土地使用權剩47年

體育要聞

傲了一輩子的恩里克,心中永遠住著一個小天使

娛樂要聞

章子怡深夜曬娃,兒女正面照曝光

財經要聞

美稱中方違反經貿會談共識 商務部駁斥

汽車要聞

吉利汽車5月銷量23.52萬輛 同比增長46%

態度原創

教育
健康
藝術
房產
公開課

教育要聞

2024智慧家長家教好故事展播(二十二)

唇皰疹和口腔潰瘍是"同伙"嗎?

藝術要聞

故宮珍藏的墨跡《十七帖》,比拓本更精良,這才是地道的魏晉寫法

房產要聞

金地華南落子海南自貿港22萬㎡標桿項目,夯實代建行業領軍者地位

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 金平| 抚宁县| 朝阳市| 边坝县| 太谷县| 通许县| 刚察县| 汽车| 天镇县| 闽清县| 南漳县| 八宿县| 南溪县| 雷波县| 黄大仙区| 苏尼特右旗| 阿拉善右旗| 广南县| 铜川市| 双柏县| 资兴市| 湖北省| 同江市| 石家庄市| 张北县| 宁强县| 海阳市| 黑龙江省| 巴彦县| 独山县| 剑川县| 双城市| 甘洛县| 金乡县| 宿松县| 镇沅| 鄄城县| 嘉兴市| 宁安市| 海原县| 义马市|