為什么已有Kafka应民,我們最終卻選擇了Apache Pulsar夕吻?

在一家商業(yè)公司黄虱,采用任何一項(xiàng)新技術(shù)盐捷,包括開源技術(shù),都有一定的風(fēng)險(xiǎn)滞诺,即使這項(xiàng)技術(shù)具有顯著的技術(shù)優(yōu)勢(shì)。Apache Pulsar 的引入經(jīng)過了我們的深思熟慮和充分調(diào)研。我想跟大家分享一下我們使用和調(diào)研 Apache Pulsar 的經(jīng)驗(yàn)。因?yàn)槲覀兿嘈趴隙ㄓ衅渌臀覀冾愃频墓疽部梢詮?Pulsar 中受益斟湃。

Apache Pulsar 是我們?yōu)榱酥С?STICORP 客戶應(yīng)用而采用的一項(xiàng)關(guān)鍵技術(shù)坛缕。STICORP 是一家總部位于巴西的軟件公司陶衅。我們提供軟件解決方案來幫助 7,000 多家客戶管理和自動(dòng)化他們的稅務(wù)報(bào)告,幫助他們確保稅務(wù)報(bào)告的合規(guī)性焚刺,避免處罰屯远,并確定可以節(jié)省稅收的地方坡脐。這需要管理大量的稅務(wù)文檔,以及大量由客戶行為觸發(fā)產(chǎn)生的工作流程。這些稅務(wù)文檔包括發(fā)票,發(fā)貨和付款等瞪讼。在一天內(nèi)嫡霞,單個(gè)客戶可能就會(huì)產(chǎn)生超過 200,000 個(gè)需要我們進(jìn)行處理的稅務(wù)文檔。

歡迎工作一到五年的Java工程師朋友們加入Java技術(shù)交流:611481448

群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用、高并發(fā)装悲、高性能及分布式、Jvm性能調(diào)優(yōu)、Spring源碼,MyBatis溜畅,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來學(xué)習(xí)提升自己浴捆,不要再用"沒有時(shí)間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個(gè)交代碌奉!

我們的系統(tǒng)通過與客戶和政府系統(tǒng)進(jìn)行集成自動(dòng)獲取這些稅務(wù)文檔哩都,并以便于客戶分析這些文檔背后的數(shù)據(jù)價(jià)值的方式組織它們盖呼。這些文檔的內(nèi)容和復(fù)雜性取決于需要解決的特定業(yè)務(wù)流程侯谁。例如墙贱,有些文檔是基于發(fā)票魁衙,發(fā)貨訂單,和客戶與供應(yīng)商之間的付款記錄等捌刮,而另外一些文檔是用于記錄這些活動(dòng)完成時(shí)的附加文檔堕扶。

處理這些文檔中的所有不同信息需要一個(gè)包含多個(gè)步驟的工作流程钾埂。文件通常以加密形式到達(dá),因此第一步是解密它們儡炼。然后將文檔中的 XML 格式的原始消息內(nèi)容轉(zhuǎn)換為 JSON 格式唬党。從那之后,這些文檔會(huì)被劃分到多個(gè)主題(Topic)并被丟到事件總線(Event Bus)上。其他工作流程會(huì)監(jiān)聽事件總線凌蔬,并處理這些文檔坎弯,最終將處理結(jié)構(gòu)匯總到下游的 Couchbase NoSQL 數(shù)據(jù)庫中,供其他應(yīng)用程序訪問。

性能和可擴(kuò)展性對(duì)我們來說至關(guān)重要愉择。因?yàn)樯蛇@些文檔的交易的天然性質(zhì),我們可以看到單個(gè)客戶在突發(fā)高峰時(shí)刻可能就會(huì)產(chǎn)生每秒 25,000 條消息。能夠支持大量主題對(duì)我們來說也很重要 - 能夠?qū)⑽臋n中的信息分解為多個(gè)主題峭梳,可以幫助我們更加輕松地組織和管理數(shù)據(jù),將數(shù)據(jù)正確的分發(fā)和連接到相應(yīng)的工作流進(jìn)行處理踱侣;但這也意味著我們對(duì)于單個(gè)客戶可能就需要使用 30 個(gè)不同的主題流济。

為什么我們需要新技術(shù)

我們最初使用 Apache Kafka 來實(shí)現(xiàn)事件總線。雖然我們有一個(gè)穩(wěn)定的 Kafka 基礎(chǔ)設(shè)施嘲玫,并且決定去做出基礎(chǔ)設(shè)施的改變通常并不容易,但我們意識(shí)到 Kafka 不是滿足我們需求的最佳技術(shù) -?Kafka 并不是為我們今天生活的云原生(Cloud Native)世界所設(shè)計(jì)的乔遮,因此我們需要花費(fèi)大量時(shí)間才能使其適用于我們的應(yīng)用程序坯辩。?我們使用 Kafka 面臨的主要挑戰(zhàn)是它不善于處理大量主題。此外,Kafka 的架構(gòu)讓我們感到痛苦 -因?yàn)?Kafka Broker 是綁定存儲(chǔ)狀態(tài)的资昧,擴(kuò)展或縮小 Kafka 集群需要重新平衡分區(qū)东揣,這會(huì)影響我們的性能和請(qǐng)求時(shí)延,并限制我們對(duì)工作負(fù)載變化做出反應(yīng)的方式和速度钟鸵。

部署 Apache Pulsar

在尋找替代方案時(shí)棺耍,我們了解了 Apache Pulsar 并決定對(duì)其進(jìn)行評(píng)估害幅。由于 Apache Kafka 和 Apache Pulsar 使用類似的消息概念,因此我們看到?所有的 Kafka 用例可以使用 Pulsar 實(shí)現(xiàn),其方式與使用與 Kafka 完全相同。兼容是促使我們切換到 Pulsar 的原因之一。

我們還注意到了 Pulsar 在架構(gòu)設(shè)計(jì)上與 Kafka 的一些重要差異箫踩。一個(gè)關(guān)鍵的區(qū)別是?存儲(chǔ)和計(jì)算的分離?- Pulsar Broker 是無狀態(tài)的,與存儲(chǔ)相互分離谭贪;而在 Kafka 的數(shù)據(jù)直接存儲(chǔ)在 Broker 上境钟。這是架構(gòu)設(shè)計(jì)差異上的一個(gè)例子,它允許 Pulsar 能夠?qū)崿F(xiàn)一些在 Kafka 上做很困難或不可能的事情俭识。這其中的例子包括:

主題可擴(kuò)展性:我們需要擁有超過 100,000 個(gè)主題(不考慮增長)慨削,這不僅有助于我們管理應(yīng)用程序處理的不同類型的數(shù)據(jù),還允許個(gè)別客戶使用自定義應(yīng)用程序連接到系統(tǒng)中的數(shù)據(jù)套媚。Pulsar 的架構(gòu)可以輕松處理數(shù)百萬個(gè)主題缚态。

性能:由于 Pulsar 的分層架構(gòu),以及 IO 隔離的特性凑阶,讀取和寫入使用不同的物理存儲(chǔ)猿规。因此,讀取的峰值根本不會(huì)影響寫入性能宙橱,反之亦然姨俩。Pulsar 還支持非持久性主題蘸拔,允許非常高的吞吐量,完全不需要持久性的主題环葵,這對(duì)于實(shí)時(shí)應(yīng)用程序非常有用调窍。

消息隊(duì)列: Pulsar 提供了統(tǒng)一的消息模型,不僅支持類似 Kafka 的消費(fèi)模式张遭,也支持消息隊(duì)里的消費(fèi)模式邓萨。在不需要考慮有序性的應(yīng)用場景中,Pulsar 可以直接當(dāng)消息隊(duì)列進(jìn)行使用菊卷。Pulsar 在訂閱(Subscription)級(jí)別而不是主題級(jí)別執(zhí)行此操作缔恳,因?yàn)槟憧梢栽谕粋€(gè)主題中同時(shí)有按序消費(fèi)的消費(fèi)者和不按序消費(fèi)的消費(fèi)者,這對(duì)于很多場景是非常有價(jià)值洁闰。另一個(gè)場景歉甚,如果新的消費(fèi)者需要從頭開始讀取一個(gè)主題里面的所有消息,那么對(duì)于 Kafka 來說扑眉,你將被迫要么犧牲吞吐量纸泄,要么重新平衡分區(qū),或者要么犧牲有序性腰素。而使用 Pulsar聘裁,您只需添加新訂閱,Pulsar 就會(huì)將消息扇出到新增的消費(fèi)者弓千,以增加新消費(fèi)者的吞吐量衡便。

操作更簡單:使用 Apache Kafka,任何容量擴(kuò)展都需要重新平衡分區(qū)计呈,同時(shí)還需要將被平衡的分區(qū)重新拷貝到新添加的 Broker 上砰诵。使用 Pulsar,我們可以輕松添加和刪除節(jié)點(diǎn)捌显,而無需重新平衡整個(gè)集群茁彭。此外,使用 Pulsar扶歪,你永遠(yuǎn)不必?fù)?dān)心一個(gè)分區(qū)是否會(huì)超過 Broker 的物理磁盤空間理肺;但是在 Kafka 中,一個(gè)分區(qū)的容量不能超過一臺(tái) Broker 的物理磁盤空間善镰。

無限的數(shù)據(jù)保留期:我們的一些客戶甚至需要在幾個(gè)月后訪問他們的文檔妹萨。我們希望能夠?qū)?shù)據(jù)保存在 Pulsar 中,而不會(huì)刪除它炫欺,并在以后需要時(shí)使用它乎完。這樣我們不必重新從客戶或者政府部門導(dǎo)入數(shù)據(jù),我們也不必?fù)?dān)心丟失消息品洛。當(dāng)我們需要使用新的一套系統(tǒng)來執(zhí)行一個(gè)新的業(yè)務(wù)流程時(shí)树姨,我們不需要訪問數(shù)據(jù)庫摩桶,我們可以簡單地將文檔從消息總線中拉取出并為新的業(yè)務(wù)流程重新處理它們即可。

由于 Apache Pulsar 提供了太多無法忽視的優(yōu)點(diǎn)帽揪,我們決定實(shí)施并部署了 Apache Pulsar硝清,在使用的過程中也對(duì) Apache Pulsar 非常滿意。我們已經(jīng)將超過 30%的生產(chǎn)數(shù)據(jù)流遷移到 Pulsar转晰,并計(jì)劃在未來六個(gè)月內(nèi)將所有數(shù)據(jù)流都遷移到 Pulsar芦拿。

喜歡小編輕輕點(diǎn)個(gè)關(guān)注吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末查邢,一起剝皮案震驚了整個(gè)濱河市蔗崎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侠坎,老刑警劉巖蚁趁,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異实胸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)番官,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門庐完,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人徘熔,你說我怎么就攤上這事门躯。” “怎么了酷师?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵讶凉,是天一觀的道長。 經(jīng)常有香客問我山孔,道長懂讯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任台颠,我火速辦了婚禮褐望,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘串前。我一直安慰自己瘫里,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布荡碾。 她就那樣靜靜地躺著谨读,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坛吁。 梳的紋絲不亂的頭發(fā)上劳殖,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天铐尚,我揣著相機(jī)與錄音,去河邊找鬼闷尿。 笑死塑径,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的填具。 我是一名探鬼主播统舀,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼劳景!你這毒婦竟也來了誉简?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤盟广,失蹤者是張志新(化名)和其女友劉穎闷串,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筋量,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烹吵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桨武。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肋拔。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖呀酸,靈堂內(nèi)的尸體忽然破棺而出凉蜂,到底是詐尸還是另有隱情,我是刑警寧澤性誉,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布窿吩,位于F島的核電站,受9級(jí)特大地震影響错览,放射性物質(zhì)發(fā)生泄漏纫雁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一蝗砾、第九天 我趴在偏房一處隱蔽的房頂上張望先较。 院中可真熱鬧,春花似錦悼粮、人聲如沸闲勺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菜循。三九已至,卻和暖如春申尤,著一層夾襖步出監(jiān)牢的瞬間癌幕,已是汗流浹背衙耕。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勺远,地道東北人橙喘。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像胶逢,于是被迫代替她去往敵國和親厅瞎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理初坠,服務(wù)發(fā)現(xiàn)和簸,斷路器,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 姓名:周小蓬 16019110037 轉(zhuǎn)載自:http://blog.csdn.net/YChenFeng/art...
    aeytifiw閱讀 34,721評(píng)論 13 425
  • 本文轉(zhuǎn)載自http://dataunion.org/?p=9307 背景介紹Kafka簡介Kafka是一種分布式的...
    Bottle丶Fish閱讀 5,469評(píng)論 0 34
  • kafka的定義:是一個(gè)分布式消息系統(tǒng)碟刺,由LinkedIn使用Scala編寫锁保,用作LinkedIn的活動(dòng)流(Act...
    時(shí)待吾閱讀 5,320評(píng)論 1 15
  • 以前對(duì)錢沒什么概念者填,還記得以前被朋友問“你覺得愛情重要霉赡?還是錢重要?”那時(shí)不假思索的理所當(dāng)然的說幔托,愛情,當(dāng)然愛情重...
    源來你還在這里閱讀 498評(píng)論 0 1