【问题标题】:Web service provider routingWeb 服务提供者路由
【发布时间】:2011-09-06 21:18:04
【问题描述】:

我希望实现一个服务(web/windows、.net),它维护一个可用服务的列表,并且可以根据请求的性质或类型提供一个端点。然后,请求者可以将实际工作请求传递给提供的端点。实际的工作请求可能包含非常大的数据块(从 10MB 到甚至可能超过 GB)。

WCF 路由服务听起来很合适,但事实证明并非如此,因为它需要实际的工作请求才能通过它,从而在路由服务中造成瓶颈(重点是让系统能够向外扩展)。如果我有较小的消息,WCF 路由将是一个明智的选择。

有什么符合要求的吗?最好基于.NET/windows?

【问题讨论】:

    标签: web-services location wcf-routing


    【解决方案1】:

    你的意思是因为请求阻塞了工作吗?

    Do 可以使用OneWay OperationContract 创建异步服务,以免阻塞请求池。

    [ServiceContract]
    interface IMyContract
    {
       [OperationContract(IsOneWay = true)]
       void DoWork()
    }
    

    更新

    我认为现在更好地理解了您的问题,您希望将负载分配到不同的服务器以避免由于流量负载过大而导致的请求瓶颈(最好根据内容进行分配)。

    我会说MVC Routing 确实是这个的理想选择。您可以利用的功能之一是跌倒功能。您实际上可以定义多个备份端点,并且在一个失败的情况下,它将自动转移到下一个。有一个很好的介绍如何工作here

    这里还有一篇很好的文章讨论了使用相同原理使用 WCF 进行负载平衡。它为 round robin filter 实现提供了 2 个解决方案,允许您对服务请求进行负载平衡(尽管在开始时他说出于实现原因,他是否支持负载平衡的一般答案是不)。

    如果您担心所有请求都通过一台服务器路由并且仍然成为瓶颈,那么请考虑使用 Web 负载平衡器。这是相同的场景。坐在中间转发数据包不需要太多工作,而且它们处理大量流量也没有问题。我认为这不是 IMO 的问题。

    【讨论】:

    • 不是因为它们明确阻止工作,而是因为执行路由的服务器必须处理大消息的全部内容。在高峰时间,这是一个荒谬的数据量和请求数量。
    猜你喜欢
    • 2013-04-03
    • 2015-04-16
    • 2012-04-21
    • 2016-08-05
    • 2017-12-02
    • 2020-06-09
    • 1970-01-01
    • 2015-08-02
    • 2012-01-17
    相关资源
    最近更新 更多