gpt4 book ai didi

c# - 是否可以使用 WCF 架构每天处理 1B 请求?

转载 作者:太空狗 更新时间:2023-10-30 01:32:13 25 4
gpt4 key购买 nike

我有用 .NET 编写的机器学习 WCF 服务。计算量不是很大,但是有一些小的计算。有 2 个大的共享集合:

  • 包含统计信息和结果的 ConcurrentDictinary
  • lock 内的 MemoryChache,包含用户 session 详细信息。

它的工作速度非常快,并在 LAN 内提供几毫秒的响应时间(在客户端),工作负载不是很密集。由于工作负载会更高 - ConcurrentDictinary、lock`s、MemoryChache(带 GC)和 WCF 基础设施(带 WebServer)将成为限制因素。

现在我有一个拥有巨大流量的客户,所以我预计每天会有多达 10 亿个请求(每天最多 200m 用户 session * 来自一个用户的 5 个请求)请求。并且请求是同步的(页面加载时间将取决于它们)所以我必须尽量减少响应时间。

所以:

我能否使 WCF 基础结构水平扩展? WCF 请求能否以相等的比例并行化到多个端点?

为了通过 MemoryChache 和一般计算并行化内存使用,我认为可以使用某种自定义类型的 MapReduce。是否有任何内置的 .NET 分布式计算方法可以帮助我? AFAIK-不。也许在 SCALA 中重写所有内容并使用 Hadoop 或更好的 Spark 会更容易。但是不想重写所有的事情 :( 想法?

最佳答案

是的,查看用于水平缩放的负载平衡。您可以通过带有流量管理器 (F5 is popular provider - click this link for more info) 的硬件解决方案、通过软件平衡器 (e.g. Consul) 或通过您的代码 - there is a good sample on Code Project 来实现这一点。 .

负载平衡策略包括循环法,或基于资源的决定,决定哪个服务最不忙。

对于 1B 交易,网络可能成为瓶颈,这将迫使您采用硬件解决方案。对于路由智能很少的粗略解决方案,您可以在 100 或 1000 台机器上的不同端点上托管您的服务,然后让您的客户将流量分配给节点。

我认为最有说服力的信息是是否存在任何共享状态——实例是否需要相互了解。如果是这样,那么您需要考虑的不仅仅是简单的负载平衡!

关于c# - 是否可以使用 WCF 架构每天处理 1B 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37822281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com