我知道这是两个不同的系统,但有一些不同的目的,但在某些情况下,它们可以达到相同的目标,我想知道将我们的一些服务从NServiceBus(NSB)迁移到以下是多么容易奥尔良或MS Service Fabric。我花了几个小时的时间来学习奥尔良和MS Service Fabric的高级学习,但有些问题没有得到解决。我可以列出一些我希望在迁移中保留的NSB功能,我希望你能分辨出Orleans或Service Fabric是否支持这样的东西:
在NSB中,我们可以设置服务的最大线程数 应该运行,以便我们可以优先考虑低服务 在具有高延迟的不太关键的服务上的延迟我可以吗 配置单个或多个应用程序的最大实例数量 特定服务器Orlean的谷物应该运行?我 谈论具有不同ID的谷物
我们的部分服务依赖于第三方服务电话 可能暂时无法使用。在这种情况下例外是 抛出并通过配置的重试次数运行消息。我摔倒 处理消息的进一步尝试已经结束(服务仍在 不可用),消息被放入我们可以看到的错误队列中 它可以在第三方服务重新启动时随时重新处理 跟踪。我知道我们可以在奥尔良之上实施其他工具 有一个类似的系统,但奥尔良或MS Service Fabric提供 在消息重试和失败方面开箱即用的东西 消息/调用存储在特殊位置或特殊状态下?
在我们的系统因客户端发起的传入消息超载的罕见事件中,消息是 卡在传入队列中,系统会采取任何可以处理的内容,以及所有 休息信息正在等待转发按照“第一个”处理 来 - 先服务“原则。我想奥尔良无法掩盖这一点 因为它听起来更像纯粹的排队概念, 但以防万一 有人会知道如何将它迁移到奥尔良, 喜欢整合到某种排队系统
答案 0 :(得分:1)
Orleans或Service Fabric 可靠的演员:这些是针对(虚拟)演员的类似解决方案,但具有不同的权衡。 https://richorama.github.io/2016/07/08/orleans-vs-service-fabric/
Orleans和Service Fabric 无状态服务:您可以通过SF运行Orleans,您可以获得Orleans版本的虚拟角色和SF的弹性。
答案1:奥尔良谷物(演员)不是服务,数以千计,数百万,谷物为您提供服务。所以你不能微调谷物之间的调度。奥尔良粒子不是T型所有消息的处理者,通常你有大量的粒子,粒子更像是一个对象而不是一个类。
答案2,3:您可以使用Orleans流实现这些传入和传出的消息队列(这基本上是一个很好的概念),尽管Orleans没有为您的错误队列提供开箱即用的解决方案,重新处理但是,奥尔良流并不是一个简单的队列,通常你有大量的流,流是运行时可变的粒子通信图,因为粒子的数量很大,所以流的数量也是如此。由于Orleans为您提供异步/等待抽象而不是处理粒度之间的低级双向消息传递,因此这些流是多个单向消息的抽象。
答案 1 :(得分:0)
NServiceBus端点可以完美地托管在Service Fabric中。如果您选择无状态托管,则无需更改。请参阅示例https://docs.particular.net/nservicebus/hosting/service-fabric-hosting/示例,了解如何在Service Fabric中设置托管