[英]WCF - solution architecture
我正在开发一个项目,其中iOS应用程序将使用WCF服务。 在任何给定时间点,网络服务器上预期的点击次数约为900-1000。 每个请求可能需要1-2秒才能完成。 预计每秒24/7的请求数量相同。
这就是我的计划:
现在,如果稍后引入了负载均衡器,则无法在通过另一个节点路由的请求之间共享内存中存储的对象 - 任何想法?
我希望你的大师可以通过抛出你对整个架构,WCF限制,对象状态持久性等的意见/建议来帮助我。请提供一些关于所需硬件的指示。 我们计划使用Windows 2008 Enterprise Edition服务器,IIS和SQL Server 2008 Std版数据库。
添加更多t#3:正如我所说,我们从远程系统获取服务的一些信息。 在托管WCF的Web服务器上,将安装远程系统的客户端,并且WCF引用此客户端dll之一以获取信息,以哈希表的形式(该方法返回哈希表 - 大约150000个对象将在这个集合中)。 您是否建议将此信息写入数据库,并且到达服务的iOS请求(每秒一次)直接从数据库中检索此信息? 如果这是静态的,它会比直接从这个哈希表中消费更好吗?
让我根据我在WCF框架下提供类似金额或请求的经验,提出一些意见/建议,3.5。
我不同意#3。 在这里使用数据库是正确的做法。 为了解决响应时间,实现缓存和可能的cache dependency
,以便在所有实例之间保持数据同步(假设您负载均衡)(另请参阅上面/下面建议的App Fabric)。 在现实世界的场景中,数据经常会发生变化,您必须尽量减少影响。
据我所知,我们使用Barracuda硬件和软件来处理可扩展性。
考虑使用Lucene 索引 keys/values
(如果适用)。 Lucene在读/写方面表现出色。 不要用它来存储你的整个数据,阅读它。 如果使用正确,可以节省生命。 请注意,在负载平衡环境中实现它可能很复杂。
基本上,缓存可能是您的架构唯一必要的更改。
由于您使用的是Windows Server 2008,我肯定会使用Windows Server App Fabric Cache来存储您的状态:
http://msdn.microsoft.com/en-us/library/ff383813.aspx
如果您将服务转移到Azure,它可以免费使用,得到良好支持和集成,并且(或多或少)与Windows Azure App Fabric Cache兼容。 在我们公司(免责声明:不是我的团队)我们曾经使用MemCache但改为App Fabirc Cache并且不后悔。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.