【发布时间】:2011-04-10 14:42:35
【问题描述】:
我们的客户要求是开发一个可以承受 1-2k 并发网站用户的 WCF,响应时间应该在 25 毫秒左右。
此服务从数据库中读取几列,并将被不同的供应商使用。
您能否建议我在开发时需要采取的任何架构或任何额外工作。以及我们如何计算服务器硬件配置来应对。
提前致谢。
【问题讨论】:
标签: asp.net wcf web-services
我们的客户要求是开发一个可以承受 1-2k 并发网站用户的 WCF,响应时间应该在 25 毫秒左右。
此服务从数据库中读取几列,并将被不同的供应商使用。
您能否建议我在开发时需要采取的任何架构或任何额外工作。以及我们如何计算服务器硬件配置来应对。
提前致谢。
【问题讨论】:
标签: asp.net wcf web-services
几乎不可能。你需要网络连接到服务、服务激活、业务逻辑处理、数据库连接(另一个网络连接)、数据库查询。由于有 2000 个并发用户,您需要多个应用程序服务器 = 网络连接受负载均衡器的影响。我无法想象网络和硬件基础设施应该能够在 25 毫秒内为 2000 个并发用户完成这样的操作。这样的要求是不现实的。
我想如果您只是尝试从您的计算机运行数据库查询到远程数据库,您会发现即使如此简单的任务也不会在 25 毫秒内完成。
【讨论】:
几个原则:
详细说明。立即构建一个简单的系统。即使业务逻辑非常简化,如果它是 Web 服务和数据库访问,您也可以对其进行性能测试。与一位用户一起测试。你看到了什么?时间都去哪儿了?在您开发系统时,添加真实代码继续进行该测试。原因:一)。现在你知道 25ms 是否可以实现。乙)。您会立即发现任何损害性能的代码更改。现在对大量用户进行测试,您遇到了哪些降级模式?这开始为您提供并表明您的平台功能。
我怀疑结果将是单台机器无法为您切割。即使它会,如果你成功了,你会得到更多的流量。所以计划使用多台服务器。
无论如何,出于可靠性原因,您需要不止一台服务器。当您不能假设单个服务器时,各种有趣的实现细节都会出现 - 例如。你不再有单身人士了;-)
大多数情况下,我们使用缓存可以获得良好的性能。许多用户会要求相同的数据吗?你能缓存它吗?是否有更新需要考虑?在什么情况下你需要一个集群失效的分布式缓存系统?多服务器案例再次出现。
【讨论】:
为什么需要 WCF?
您能否将尽可能多的服务转移到静态服务和缓存查找中?
如果我了解您的问题,将会有 1000 名用户访问您的网站并在您的数据库上执行查询。您绝对应该查看 WCF 连接上的连接池,但最好的办法是完全避免进行数据库查找,并让您的网站从缓存命中返回数据。
我还想了解为什么您不能直接连接到数据库进行查找,您实际上是否首先需要 WCF 服务?
查看 Memcached。
【讨论】: