Mafka&Plusar主題運維特性
目錄
分區(qū)主題API
Create a partitioned topic.
Delete a partitioned topic.
Set the replication clusters for a topic.
Remove the replication clusters from a topic.
Truncate a topic.
Unload a topic
update the number of partitions on an existing partitioned topic (分區(qū)必須擴容,不能縮容)
主題Bundle特性
Pulsar 實現(xiàn)了 Broker 的動態(tài)負載均衡,無需管理員手工干預蓬豁。Pulsar 從架構上分離了存儲層和計算層像寒,可以更加靈活地分配 Broker 與主題的映射關系。Pulsar Broker 將消息持久化保存到存儲服務器,當在 Broker 之間重平衡主題時,無需將消息從一個 Broker 復制到另一個 Broker。在這種情況下萄传,新加入的 Broker 只需要查找 Metadata Store 并指向主題消息所在的正確存儲服務器即可。
對于高寫入負載蜜猾,如果所有 Bookie 都已滿秀菱,只需增加更多的 Bookie,新的消息條目(即新的 Ledger)即可存儲到這些新的 Bookie 上蹭睡。通過這種分段設計衍菱,在存儲擴展期間 Pulsar 無需從 Bookie 中重新復制舊消息。對于高讀取負載肩豁,Pulsar 將消息緩存在 Broker 內(nèi)存中脊串,所以 Bookie 的讀負載會顯著卸載到 Broker 上辫呻,而 Broker 是負載均衡的。
Pulsar 計算層(Broker)和存儲層(Bookie)分離的一大優(yōu)勢是 Pulsar Broker 是無狀態(tài)的琼锋,基于動態(tài) Bundle 歸屬可以實現(xiàn)良好的水平擴展性放闺。當 Broker 過載后,可以輕松地將更多 Broker 加入集群并重新分配 Bundle 歸屬關系缕坎。
Pulsar 通過 Bundle 將主題分組以便于跟蹤怖侦,并在 Broker 之間動態(tài)地分配和平衡 Bundle。如果特定的 Bundle 發(fā)生過載念赶,則自動進行拆分础钠,將分配單元維護在合理的流量水平恰力。
Pulsar 將 Broker 全局負載數(shù)據(jù)(CPU叉谜、內(nèi)存以及網(wǎng)絡使用率)以及 Bundle 負載數(shù)據(jù)(消息輸入/輸出速率)收集到 Leader Broker,以運行負載均衡算法邏輯:執(zhí)行 Bundle-Broker 分配踩萎、Bundle 拆分和卸載(縮減)停局。
Bundle-Broker 分配邏輯隨機選擇負載最少的 Broker,并將客戶端重定向到分配的 Broker URL香府。Broker-Bundle 歸屬關系會在 Metadata Store 中創(chuàng)建臨時鎖董栽,如果 Owner 不可用(失去歸屬權)則會自動釋放鎖
主題Segment特性
存儲服務的分層的架構和以Segment為中心的存儲是Pulsar(使用BookKeeper)的兩個關鍵設計理念。 這兩個基礎為Pulsar提供了許多重要的好處:
無限制的主題分區(qū)存儲
即時擴展企孩,無需數(shù)據(jù)遷移
無縫Broker故障恢復
無縫集群擴展
無縫的存儲(Bookie)故障恢復
獨立的可擴展性
Mafka VS Pulsar
Apache Pulsar和Apache Kafka之間的根本區(qū)別在于Apache Kafka是以分區(qū)為存儲中心锭碳,而Apache Pulsar是以Segment為存儲中心。
對比優(yōu)劣
Mafka在Apache Kafka中勿璃,分區(qū)只能存儲在單個節(jié)點上并復制到其他節(jié)點擒抛,其容量受最小節(jié)點容量的限制。這意味著容量擴展需要對分區(qū)重新平衡补疑,這反過來又需要重新復制整個分區(qū)歧沪,以平衡新添加的代理的數(shù)據(jù)和流量。
Pulsar在Apache Pulsar中莲组,同樣是以分區(qū)為邏輯單元诊胞,但是以Segment為物理存儲單元。分區(qū)隨著時間的推移會進行分段锹杈,并在整個集群中均衡分布撵孤,旨在有效地迅速地擴展
Pulsar是以Segment為中心的,因此在擴展容量時不需要數(shù)據(jù)重新平衡和拷貝竭望,舊數(shù)據(jù)不會被重新復制
參考
https://pulsar.apache.org/admin-rest-api/#tag/persistent-topic
https://pulsar.apache.org/docs/2.6.0/admin-api-partitioned-topics