1

我对使用 ASP.NET 环境进行缩放有一些疑问。我正在开始构建一个应用程序,我希望它会吸引大量用户,如果是这种情况,我需要了解更多关于扩展的信息。

它在很大程度上取决于用户生成的内容,当内容更改时需要通过池 AJAX 调用通知其他用户,WebSockets 不是一个选项。

我知道基本的东西不会从数据库中读取,放在内存中,但是如何在网络农场中做到这一点?

如果用户内容是在 Webserver 1 上创建的,而其他用户是来自 Webserver 2 的请求对象,系统应该如何处理。我们如何通知用户而不需要通过 DB?提出大量内部请求?使用一些分布式缓存?

4

3 回答 3

4

如果您希望从第一天起就需要这种可扩展性,请查看 AppFabric:http ://www.slideshare.net/chrduf/scale-your-data-tier-with-windows-server-app-fabric

http://www.microsoft.com/en-us/server-cloud/windows-server/appfabric.aspx

如果您希望在以后看到更多内容,那么最好先使用您所知道的内容编写应用程序,以便稍后重构为 AppFabric。这将使您能够获得一些东西,而不是陷入学习新技术的困境,因此当您进行重构时,您可以更好地了解自己的产品,这将有利于您在任何新平台上做出决策。

于 2012-08-05T14:54:37.177 回答
3

如果您使用的是 SQL Server,请查看SqlDependency与 IIS 结合的对象Cache。基本上,如果底层记录集从 Server1 更改并且数据库中的内容更新,则将通知所有其他 Web 服务器更新其本地副本。在幕后,SqlDependency 使用 Service Broker,因此您可能还需要阅读它。

更多信息:

使用 SqlCacheDependency 类在 ASP.NET 中进行缓存

于 2012-08-05T14:52:12.393 回答
0

以下是一些使用 pub/sub 机制提供分布式缓存的产品

1)Oracle的Coherence http://coherence.oracle.com/display/COH34UG/Real+Time+Client+-+RTC它也有.net版本(来自java的端口)

2) Windows AppFabric 分布式缓存http://msdn.microsoft.com/en-us/library/ff383731(v=azure.10).aspx这在语法上类似于 Coherence

另一个便宜的选择是使用 Nodes.js

于 2012-08-05T15:00:28.113 回答