ASP.NET Web Game 架构设计1--服务器基本结构
 

2010-04-08 作者:warensoft 来源:warensoft的blog

 

1. 基本结构图

2. 系统组成与角色

整个系统大体上分为三个部分:1.网页客户端。2.IIS Web服务器。3.数据库及逻辑服务器。其中Web服务器不处理任何逻辑,它的作用只有两点:1.承载用户。2.中转数据,利用ADO.NET Data Service以及调用其他的WCF,使得Web服务器成为一个数据代理服务器。

经过失败经验的论证,让IIS承载过多的逻辑,绝对是一个烂想法,应用系统应该在一开始设计的时候就彻底屏蔽这种方案,从上面图中也不难看出来,逻辑的处理应该是一部分放在网页中使用JS来实现,另外一部分放在应用系统的逻辑服务器上实现的。

另外,如果简单的将网页部署到IIS上,性能指标总上不去,典型的体现在要么内存占用很高,CPU上不去,要么是CPU上去了,内存又占用的太小,这样很难将服务器的能力发挥到极致。为了应对这个问题,一个非常理想的方案是使用IIS中的WebGarden技术,可以启动多个w3wp.exe,即多个IIS服务进程。这样作的好处是将CPU资源以及内存资源均匀的分配到多个服务进程上去,以提升服务器资源的利用效率。但是,这同样也带来了一些问题,因为要将同一个网站的资源分配到多个进程,这样内存就无法共享,再加上HTTP协议本身就是短连接,所以每次客户端发出请求的时候,都有可能被不同的服务进程所接收,这样就是导致Session无法使用,很头疼吧。为了应对这个问题,我们又需要去配置应用程序的状态服务器,说白了,就是将Session统一存储到一个服务器上,通常是将其以二进制方式存储到SQL Server中。当然,这时要求存储在Session中的数据必须是可以串行化的。

上面说的,可以提高服务器的利用效率以外,在IIS上配置WebGarden还有什么优点呢?从上面的说明中不难看出,因为状态是存储在统一的SQL Server中的,所以用户状态是与网站配置到哪一台Web服务器是无关的。因此,我们可以大量添加Web服务器,同时,位于不同Web服务器上的用户可以共享相同的SQL Server状态管理,这样可以大大提高在同服、同世界的用户数量。

Web服务器,我们再来看一下应用程序的逻辑服务器和数据库服务器。这两个服务器通常在运营成本有限的情况下,是放在同一台服务器上的(当然,能分开是最好的)。应用程序服务器一般会在某一个时间间隔下出现一个CPU使用的高峰,内存占用一般都很小,而对于SQL Server来讲,因为要提供大量的缓存,所以对于内存的消耗是比较大的。

辑服务程序,是整个系统最容易出现性能瓶颈的地方,可以使用C++或者C#来编写,然后提供一个WCF(TCP方式的)的外部接口,以便Web服务器调用。值得重点强调的,无论是利用C++还是C#来编写该程序,都一定要考虑好资源释放问题(Java,C#开发人员更应该注意这一点,千万别想着什么垃圾自动回收,很多资源是回收不了的),包括数据库连接的释放,数据结构(临时数据的储存体)的释放,以及无用线程的释放。



使用decj简化Web前端开发
Web开发框架形成之旅
更有效率的使用Visual Studio
MVP+WCF+三层结构搭建框架
ASP.NET运行机制浅析【图解】
编写更好的C#代码
10个Visual Studio开发调试技巧
更多...   


.NET框架与分布式应用架构设计
.NET & WPF & WCF应用开发
UML&.Net架构设计
COM组件开发
.Net应用开发
InstallShield


日照港 .NET Framework & WCF应用开发
神华信息 .NET单元测试
北京 .Net应用软件系统架构
台达电子 .NET程序设计与开发
赛门铁克 C#与.NET架构设计
广东核电 .Net应用系统架构
更多...   
 
 
 
 
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号