2011-08-23 65 views
1

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

WCF路由服务听起来像一个完美的结合,但事实并非如此,因为它需要实际的工作请求通过它,创建了路由服务的瓶颈(整个问题是要让系统成为能够扩展)。如果我有更小的消息,WCF路由将毫无疑问。

那里有什么符合法案的吗?最好基于.NET/Windows的?

回答

0

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

可以使用OneWayOperationContract来创建异步服务,以便不阻塞请求池。

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

更新

我想明白你的问题现在好了,你正在寻找负载分配到不同的服务器,以避免请求瓶颈,由于流量负载(基于内容的优选地分布)。

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

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

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

+0

不是因为他们明确阻止工作,而是因为执行路由的服务器将不得不处理整个大消息内容。在高峰时段,这是一个可笑的数据量和请求数量。 – StingyJack

+0

有你 - 更新了答案。 – TheCodeKing

相关问题