【问题标题】:Azure service fabric : IReliableQueueAzure 服务结构:IReliableQueue
【发布时间】:2016-04-16 23:44:05
【问题描述】:

我正在为我们的新服务使用 azure 服务结构。

对于面向客户端的网关,我有一个使用 Web API 端点获取请求的无状态服务,实际工作是使用可靠的无状态参与者完成的。

正如Sean McKenna - MSFT 在这个question 中所建议的那样,我将传入的请求放在 ReliableQueue 中并将结果存储在 ReliableDictionary 中。

我不明白如何实现这个,我在哪里定义 ReliableQueue?很明显(?)入队作业将发生在 Web API 控制器上,但是我应该在哪里出列对象以及何时出列?没有事件触发告诉我添加了一个对象??

如您所见,我会喜欢这方面的一些帮助

谢谢

【问题讨论】:

    标签: asp.net .net azure-service-fabric


    【解决方案1】:

    在您提到的问题中,我正在描述WordCount sample 中显示的模式。

    在这种情况下,应用程序由无状态网关服务和有状态处理服务组成。客户端输入被发送到无状态网关,然后中继到有状态服务,最初保存在ReliableQueue 中。同时,在RunAsync 方法中运行一个无限while 循环,将项目从队列中拉出并处理它们,结果存储在ReliableDictionary 中。当您想要快速 ACK 回复到您收到(并安全地持久化!)其输入的客户端并能够异步执行实际处理时,此模式很有用。

    请注意,如果您打算将状态存储在 ReliableQueue/ReliableDictionary 中,则使用无状态参与者进行处理可能没有太大价值。您最好将该逻辑移动到有状态服务中的类型中并在那里进行处理,因为您可能会为自己节省来回的网络跳跃。

    【讨论】:

    • 我的演员正在做长时间的工作,他们需要从各种来源提取信息并从客户网站上进行一些网络报废。你仍然认为将所有这些东西放在有状态的服务中可能更明智吗?
    • 是的。您没有理由不能在有状态服务的线程中进行长时间运行的工作。此外,当您需要您的演员进行一系列外部交互时,演员模型的单线程性质可能会出现一些问题,就像您所做的那样。一般来说,如果你限制他们需要召唤的数量,演员的效果最好。我们正在编写一些文档以使本指南更加清晰。
    • @SeanMcKenna-MSFT 链接已失效。你能把它更新到正确的网址吗?
    • @RomanGanz:看这里:azure.microsoft.com/en-us/resources/samples/… - 我们用新示例更新了 repo,但 WordCount 示例在同一个 repo 中,但应用程序位于“经典”分支中: github.com/Azure-Samples/service-fabric-dotnet-getting-started/…
    【解决方案2】:

    如果我正确理解您的问题,您只是在寻找一种从无状态服务与 Actor 进行通信的方法。如果是这样,您不需要可靠的队列 - 只需使用 ActorProxy 实例拨打电话:

    ActorId actorId = new ActorId("YourActorId");
    string applicationName = "fabric:/YourAppName";
    IYourActor actor = ActorProxy.Create<IYourActor>(actorId, applicationName);
    await dtoActor.DoWork(new WorkItem());
    

    Service Fabric 将为您路由此呼叫。

    【讨论】:

      【解决方案3】:

      您可以拥有一个有状态的服务,它将在 RunAsync 方法中从队列中取出项目(请参阅 here 以获取 RunAsync() 示例)。

      当您使一个项目出队时,您可以使用 ActorProxy 与一个演员通信并要求它完成工作。

      【讨论】:

        猜你喜欢
        • 2015-12-04
        • 2018-06-23
        • 2020-05-12
        • 1970-01-01
        • 2016-12-04
        • 2017-03-30
        • 2016-08-23
        • 2016-11-02
        • 1970-01-01
        相关资源
        最近更新 更多