2013-03-19 65 views
6

在重新發明輪子之前,我正在尋找指向滿足這些要求的開源項目的指針。爲erlang尋找持久的,分佈式的工作隊列

  • 二郎實施雖然去或C是可能的,如果沒有太多的行李(如:依賴扭迷宮)
  • 端點或客戶端二郎(如:我想二郎代碼當我做這些工作時運行。)
  • 將作業分配給節點,並調用一些erlang函數來完成作業。
  • 堅持以某種方式
  • 的作業沒有主節點,不存在單一故障點
  • 同質架構
  • 管理的,可能會得到備份,而無需在地板上
  • 工作是下降的作業的作業隊列做過不止一次的是確定
  • 運行剖面像了Riak或Couchbase(如:啓動一個節點,然後啓動他人和指向它)

的Stro ng偏好輕量級的東西。在erlang中有很多過度鍛鍊的企業級解決方案,這些解決方案看起來像需要花費很長時間才能學習,因爲從頭開始重新創建它(事實上,我基本上構建瞭解決這個問題的解決方案,以回答某人其他人的問題在這裏stackoverflow我可以建立我所描述的,但這似乎是在erlang設計的中間那些需求之一。)

我考慮過: - ejabbered - 更多的消息框架 - rabitmq - 理論上這樣做,但每次我去他們的網站時,我都沉浸在抽象的海洋中。它似乎準備好做所有事情。我甚至不知道它是否有任何持久性。

修改即可添加:以下是使用儲物櫃進行分佈式鎖定的幻燈片。好像它解決問題的一個關鍵部分 http://www.slideshare.net/knutnesheim/locker-distributed-consistent-locking

進一步編輯(如果一個人想推出自己的。):我真的要尋找的東西比RabbitMQ的更輕巧。我知道它可以做我想做的事,但看起來它的成本與自己做這件事的成本差不多,最終定製解決方案會更接近我真正需要的。

回答

1

我們使用RabbitMQ執行此類任務。 RabbitMQ交換隊列綁定模型支持靈活的配置。您發佈到交易所,綁定確保消息到達隊列中。一個或多個工作進程可以訂閱隊列。隊列和交流可以持久。有人說完全理解RabbitMQ大概需要半年的時間。

+0

半年完全理解RabbitMQ的時間比一個月還要長,所以我認爲需要我自己構建自己的解決方案,從一開始我就會完全理解。我認爲這是我對RabbitMQ的關注。它確實是一切,並且是「企業級」,但也有一個陡峭的學習曲線。很高興知道它可以做我所需要的,我會做更多的調查,看看我能不能找出如何堅持和設置它以滿足我的需求。 – nirvana 2013-03-20 16:10:02

+1

試試RabbitMQ。與使用自己的解決方案相比,您將獲得更多的收益。 – Tilman 2013-03-20 18:49:11

+1

學習RabbitMQ應該比滾動你自己的要少很多。關鍵部分 - >交換綁定到隊列。消息被髮布到Exchange,它們逐漸下降到綁定的隊列。隊列是您與消費者收到消息的地方。有很多使用RabbitMQ庫的例子。 – Travis 2013-08-29 11:34:04

5

我們使用RABBITMQ將我們所有的應用程序綁定到一組完整的事物中。在整個設置中是一箇中央RABBITMQ服務器,系統創建隊列,無論是持久還是臨時。由於RABBITMQ的可用性,我們的整個分銷系統都在其上運行。使用不同技術構建的系統通過RABBITMQ發送和接收來自其他系統的任務。

我們想出了一個消息格式,它可以是JSON或XML,系統之間可以相互通信。它太快了。然而,我不會在這裏進入太多的細節,但是,我必須在頂級的RABBITMQ客戶端上編寫一個OTP應用程序來從erlang程序員中抽取所有AMQP的東西。程序員知道的是一個APi,比如我發送一個請求到System A,準備消息格式M並且調用API:zeenode_amqp:req(SystemA,Message)。系統可以發送synchronousasynchronous請求。

您應該從中獲得什麼:RABBITMQ對排隊系統非常有用。事實上,在我們的設置中,只要從客戶端打到RABBITMQ,就立即向服務器發送消息。通過使用精心設計的隊列和交換命名約定並仔細瞭解各種AMQP用例模型,它將非常適合您。

我認爲可以使用Gproc等流程字典結合Erlang Queue ModulePoolboy推出自己的產品。無論如何,我會推薦RABBITMQ。讓我知道,我可以寄給你一些圖書館,所以你研究它們,看看它們是否適合你。一旦你有一個好的RABBITMQ設置,按照他們站點上的文檔進行配置,然後你也安裝了Erlang amqp客戶端,那麼就可以動態地創建隊列和交換(無論你是否希望它們是持久的,取決於你在做什麼)。您甚至可以羣集RABBITMQ服務器,以確保可用性。

+1

相關提示RabbitMQ可以與JSOn一起工作,並堅持下去。如果您對RabbitMQ庫有任何建議,我很感激。我知道有一個叫RabnyMQ網站上的兔子和其他人。我的部分問題是,RabbitMQ提供瞭如此多的選項 - 例如三種不同的聚類策略,並且很難知道什麼是正確的。我想我可以閱讀更多文檔。很高興聽到人們正在使用它來完成這種工作,這也是我關心的一部分。 – nirvana 2013-03-20 16:18:50