1

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

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

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

4

1 回答 1

0

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

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

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

更新

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

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

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

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

于 2011-09-03T15:56:23.717 回答