一、背景

  有一些時候,多個團(tuán)隊需要共同完成一個任務(wù),比如,A團(tuán)隊將Hadoop集群計算的結(jié)果交給B團(tuán)隊繼續(xù)計算,B完成了自己任務(wù)再交給C團(tuán)隊繼續(xù)做。這就有點像業(yè)務(wù)系統(tǒng)的工作流一樣,一環(huán)一環(huán)地傳下

去,直到最后一部分完成。在業(yè)務(wù)系統(tǒng)中,我們經(jīng)常會用SOA的架構(gòu)來解決這種問題,每個團(tuán)隊在ESB(企業(yè)服務(wù)股總線)服務(wù)器上部署自己的服務(wù),然后通過消息中間件完成調(diào)度任務(wù)。對亍分步式的多個

Hadoop集群系統(tǒng)的協(xié)作,同樣可以用這種架構(gòu)來做只要把消息中間件引擎換成支持分步式的消息中間件的引擎就行了。

  本文樓主將使用zookeeper做為分步式消息中間件構(gòu)造一個大型超市的部分?jǐn)?shù)據(jù)計算模型來完成各個區(qū)域利潤計算的業(yè)務(wù)需求。

  由于采購和銷售分別是由不同廠商進(jìn)行的軟件開發(fā)和維護(hù),而且業(yè)務(wù)往來也在不同的城市和地區(qū)。 所以在每月底結(jié)算時,工作量都特別大。 比如,計算利潤表: 當(dāng)月利潤 = 當(dāng)月銷售金額 - 當(dāng)月采購

額 - 當(dāng)月其他支出(樓主只是粗略計算)。如果采購系統(tǒng)是單獨的系統(tǒng),銷售是另外單獨的系統(tǒng),及以其他幾十個大大小小的系統(tǒng), 如何能讓多個系統(tǒng),配合起來完成該需求?

二、系統(tǒng)構(gòu)思

  樓主基于zookeeper來構(gòu)建一個分步式隊列的應(yīng)用,來解決上面的功能需求。排除了ESB的部分,只保留zookeeper進(jìn)行實現(xiàn)。

  1.   采購數(shù)據(jù):海量數(shù)據(jù),基于Hadoop存儲和分析(樓主環(huán)境有限,只使用了很少的數(shù)據(jù))

  2.   銷售數(shù)據(jù):海量數(shù)據(jù),基于Hadoop存儲和分析(樓主環(huán)境有限,只使用了很少的數(shù)據(jù))

  3.   其他費用支出:為少量數(shù)據(jù),基于文件或數(shù)據(jù)庫存儲和分析

  我們設(shè)計一個同步隊列,這個隊列有3個條件節(jié)點,分別對應(yīng)采購(purchase),銷售 (sell),其他費用(other)3個部分。當(dāng)3個節(jié)點都被創(chuàng)建后,程序會自動觸發(fā)計算利潤, 幵創(chuàng)建利潤(profit)節(jié)點。上面3個節(jié)點的創(chuàng)建,無順序要求。每個節(jié)點只能被創(chuàng)建一次 。

  萬碼學(xué)堂,電腦培訓(xùn),計算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

 

  Hadoop mapreduce1,Hadoop mapreduce2 是2個獨立的Hadoop集群應(yīng)用。 Java App 是2個獨立的Java應(yīng)用 。ZooKeeper集群的有3個節(jié)點 。

  • /queue,是znode的隊列目錄,假設(shè)隊列長度為3

  • /queue/purchase,是znode隊列中,1號排對者,由Hadoop mapreduce1提交,用于統(tǒng)計采購金額

  • /queue/sell,是znode隊列中,2號排對者,由Hadoop mapreduce2提交,用于統(tǒng)計銷售金額

  • /queue/other,是znode隊列中,3號排對者,由Java App提交,用于統(tǒng)計其他費用支出金額

  • /queue/profit,當(dāng)znode隊列中滿了,觸發(fā)創(chuàng)建利潤節(jié)點。

  當(dāng)/qeueu/profit被創(chuàng)建后,利潤java app被啟動,所有zookeeper的連接通知同步程序(紅色線),隊列已完成,所有程序結(jié)束。

三、環(huán)境準(zhǔn)備

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式