2016-05-03 231 views
14

現在使用Azure服務結構,是否還會有一種用例還使用單獨的隊列解決方案(如Windows Service Bus)?缺點可能是一個新的單點失敗,但有沒有好處?隊列可以添加一些緩衝區,但另一方面,Service Fabric應該能夠很好地擴展並提供有狀態的功能,因此不需要隊列緩衝區?Azure服務結構和消息隊列

回答

12

當然,好處是Azure Service Bus和Azure存儲隊列等服務提供的功能並不包括在Service Fabric中。因此,問自己的問題是:您是否添加了外部服務依賴關係來獲得該功能,或者您是否自己在Service Fabric上構建自己的服務?服務結構上的自包含應用程序是很好的,但重新發明現有功能是不好的,因此您必須決定最適合您的位置,並朝這個方向傾斜。

例如,想想..

  • 可移植性。自身包含在Service Fabric中的應用程序可以託管在Service Fabric可以運行的任何位置(Azure,其他公共雲,自己的機器或數據中心等)。
  • 沒有外部依賴意味着更少的故障點,單個工具集以及統一的開發,部署,升級和維護過程。

在另一方面..

  • 服務,如服務總線提供rich set of features。值得花時間在Service Fabric上構建和維護您自己需要的功能嗎?
6

好問題!我也在爲此糾纏。就我而言,我正在使用RabbitMQ羣集進行排隊。我想避免它,並希望使用可靠隊列的狀態服務。我公開了一種將消息添加到服務的方法,並使用RunAsync方法在消息到達時將其出列。與連接到RabbitMQ的無狀態服務相比,我對使用這種方法的性能印象不深。但在放棄之前,我計劃將狀態服務劃分爲5個節點,並查看是否有任何性能改進,使用有狀態的服務來排隊工作。

+0

對您關於RabbitMQ vs Reliable Queues性能的評論真的很感興趣。你最終得到了什麼? – kenchilada

+3

我們的應用需要處理大量的會話。我開始使用5種有狀態的服務,每種都有自己的分區,使用Reliable Qs。分區用於幫助分發消息的負載。用這條路線處理1000個信息花了45秒。使用RMQ,跨越3個分區無狀態服務,處理1000 msgs只需要0.350秒!不僅在處理方面有了巨大的改進,而且不再需要有狀態副本。 – code5

+1

爲了進一步修正我之前說的話,@Vaclav Turecek提到的缺點是應用程序的零件和零件更加分散而不是自包含。我們的一位工程師正在研究如何使用服務結構集羣對RMQ進行集羣。這還沒有更新。我曾希望使用Azure Service Bus,但業務並不想與Azure綁定。 – code5