Azure Service Fabric和消息队列

use*_*582 17 .net message-queue azure-service-fabric

现在使用Azure Service结构,是否还有一个用例也可以使用单独的队列解决方案,例如Windows Service Bus?缺点可能是一个新的单点故障,但有上升空间吗?队列可以添加一些缓冲,但另一方面,Service Fabric应该能够很好地扩展并提供有状态功能,因此不需要队列缓冲区吗?

Vac*_*cek 15

当然,优点是Azure Service Bus和Azure存储队列等服务提供的功能在Service Fabric中不包含在开箱即用中.因此,问自己的问题是:您是否添加了外部服务依赖项来获取该功能,还是通过在Service Fabric上自行构建它来保持自包含?Service Fabric上的自包含应用程序很好,但重新发明现有功能很糟糕,因此您必须确定最有价值的地方并向这个方向倾斜.

例如,想想..

  • 可移植性.Service Fabric上自包含的应用程序可以托管Service Fabric可以运行的任何位置(几乎任何地方(Azure,其他公共云,您自己的计算机或数据中心等).
  • 没有外部依赖性意味着更少的故障点,单个工具集以及统一的开发,部署,升级和维护过程.

另一方面..

  • Service Bus等服务提供丰富的功能.是否值得花时间在Service Fabric上构建和维护您自己需要的功能?


cod*_*de5 7

好问题!我也在这周围徘徊.就我而言,我正在使用RabbitMQ集群进行排队.我想避免它,并希望使用Reliable Queues提供有状态服务.我公开了一种方法,将消息添加到服务中,并使用RunAsync方法在消息到达时将消息出列.与连接到RabbitMQ的无状态服务相比,使用此方法的性能给我留下了深刻的印象.但在我放弃之前,我计划在5个节点上划分有状态服务,并查看是否有任何性能改进,使用状态服务队列消耗工作人员.

  • 嗨@RobBird,实际上我们最初的想法是如何托管RabbitMQ.您看,SFX是一个支持我们的微服务的应用集群.数据库群集也是如此.所以我们决定只生成一些Linux服务器(你也可以使用Windows)并托管我们的RMQueue集群.因为我们需要非常高的吞吐量,所以我们选择了Rabbit.消息服务总线提供了很好的维护方面.价格方面他们是可比的.如果不是高性能,我会选择MSB.总是有一个权衡. (4认同)
  • 我们的应用程序需要处理大量的对话.我使用Reliable Qs开始使用5个有状态服务,每个服务都有自己的分区.分区用于帮助分发消息负载.按照这条路线,处理1000个消息需要45秒.使用RMQ,跨3个分区无状态服务,处理1000个消息仅花费0.350秒!不仅需要在处理方面取得巨大的显着改进,而且还需要拥有有状态复制品. (3认同)
  • 为了进一步修改我在上面所说的内容,@ Vaclav Turecek提到的缺点是应用程序的零散部分更加分散,而不是自成体系。我们的一位工程师目前正在研究如何使用Service Fabric群集对RMQ进行群集。尚无更新。我原本希望使用Azure Service Bus,但该公司不想与Azure捆绑在一起。 (2认同)
  • 嗨@ code5 - 出于兴趣,你最终做了什么?一直在研究类似的方法,并对上面的性能指标非常感兴趣.您是将RabbitMQ视为来宾可执行文件还是在容器中运行? (2认同)
  • @ code5精简的Github Gist将对社区有益 (2认同)