我希望实现一个维护可用服务列表的服务(web / windows,.net),并根据请求的性质或类型提供端点。然后,请求者可以将实际工作请求传递给提供的端点。实际的工作请求可能包含非常大的数据块(从10MB到可能超过GB)。
WCF路由服务听起来非常合适,但事实证明并非如此,因为它需要实际的工作请求才能通过它,从而在路由服务中造成瓶颈(重点是让系统能够运行)向外扩展)。如果我有较小的消息,那么WCF路由就没那么明白了。
那里有什么适合账单吗?最好是基于.NET / windows?
答案 0 :(得分:0)
你的意思是因为请求阻止了工作吗?
可以使用OneWay
OperationContract
创建异步服务,以免阻止请求池。
[ServiceContract]
interface IMyContract
{
[OperationContract(IsOneWay = true)]
void DoWork()
}
<强>更新强>
我认为现在更好地理解您的问题,您希望将负载分配到不同的服务器,以避免由于流量负载导致请求瓶颈(最好根据内容分发)。
我会说MVC Routing
确实是理想的。您可以利用的功能之一是功能崩溃。您实际上可以定义多个备份端点,如果一个端点出现故障,它将自动切换到下一个端点。有一个很好的介绍如何工作here。
这里还有一篇很好的文章,讨论了使用相同的原理与WCF进行负载均衡。它为round robin filter实现提供了2个解决方案,允许您对服务请求进行负载平衡(即使在开始时他说他的一般答案是否支持负载平衡是出于实现原因而不是。)
如果您担心通过一台服务器路由的所有请求仍然成为瓶颈,那么请考虑Web负载均衡器。这是同样的情况。坐在中间转发数据包不需要太多工作,并且它们处理大量流量没有问题。我不认为这是IMO的问题。