ASP.NET Web Game 架构设计1--服务器基本结构
ASP.NET Web Game 架构设计1--服务器基本结构
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#开发人员更应该注意这一点,千万别想着什么垃圾自动回收,很多资源是回收不了的),包括数据库连接的释放,数据结构(临时数据的储存体)的释放,以及无用线程的释放。
这次先聊到这里,在后面的BLog中我们会对整个构架中的每一个技术点进行详细说明的。如何大家需要技术支援,请给我发Email:warensoft@foxmail.com
转载于:https://www.cnblogs.com/warensoft/archive/2010/03/26/1697293.html
ASP.NET Web Game 架构设计1--服务器基本结构相关推荐
- ASP.NET Web Game 构架设计3--业务逻辑服务器之计时器
ASP.NET Web Game 构架设计3--业务逻辑服务器之计时器 业务逻辑服务器里主要包括以下四个模块 u 计时服务器 u 资源服务器 u ...
- Asp.Net Web Api 部署------在云服务器IIS上部署Web Api程序
Asp.Net Web Api 部署------在云服务器IIS上部署Web Api程序 本人Web Api程序框架选择的是.Net 5.0 一.在服务器上安装运行时RunTime,.Net 5 运行 ...
- Web信息架构——设计大型网站(第3版)
Web信息架构--设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!) [美]]Peter Morville(彼得·莫维尔) Louis Rosenfeld(路易斯·罗森菲尔德) ...
- Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!)
Web信息架构--设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!) [美]]Peter Morville(彼得·莫维尔) Louis Rosenfeld(路易斯·罗森菲尔德) ...
- Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!)...
Web信息架构--设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!) [美]]Peter Morville(彼得·莫维尔) Louis Rosenfeld(路易斯·罗森菲尔德) ...
- 架构设计思维篇之结构
avatar 结构是相关元素之间的组织和安排,它是一个很普遍的概念,我们无时无刻不在谈论着各种对象的结构,如:细胞结构.人体结构.目录结构.分子结构.组织架构.文章结构等等数不尽的结构. 那么,当人们 ...
- Java企业级应用架构设计中的分布式结构
Java企业级应用架构设计中的分布式结构 2010-12-24 13:54:12| 分类:默认分类 | 标签:|字号大中小 订阅 Java企业级应用架构设计是每个Java开发者不必学的知识,本文将 ...
- 千万PV级别WEB站点架构设计
高性能与多级容灾WEB站点架构: 容灾要求: 接入层容灾.逻辑层容灾.数据层容灾 数据层包括: NoSQL集群.MySQL集群.分布式文件存储.日志采集分析与存储 过载保护: 接入层过载保护.业务逻辑 ...
- 《系统架构设计》-03-软件结构体系和架构风格
文章目录 1. 软件结构体系 1.1 抽象(Abstract) 1.1.1 抽象的应用 1.1.2 不同层次的抽象 1.2 组件(Component) 1.2.1 定义 1.2.2 切入点 1.3 组 ...
最新文章
- NFS: Mac OS X (server) and Mac OS X (clients)实现思路
- 从python中的列表中获取唯一值[重复]
- php是什么症状脾虚什么症状怎么治,脾虚的5个症状是什么呢
- ios 内存深度优化_iOS 25个性能优化/内存优化常用方法
- 【原】概率论——第一章第1节
- java io流printstream_java IO流:打印流 PrintStream
- [网络流24题] 航空路线问题 (费用流)
- 微软2013年校园实习生招聘笔试题及答案
- 【网络流24题】餐巾计划问题(最小费用最大流)
- 一个代表年月的类YearMonth
- win C/C++程序通过Get方式获取网页源代码
- [转载]安全设置 IIS 中的权限
- paip.mysql备份慢的解决
- mysql转储表_Mysql导出表结构及表数据 mysqldump用法
- ReactJS快速入门
- 关于taocp的MIX[水上原创]
- 基于Bilibili热门视频Top100弹幕的数据爬取与分析(报告版)
- 最近复习了一下JavaScript
- 数论 · 幂函数求导
- 电脑重启桌面 计算机图标消失,电脑重启后计算机图标不见了怎么办
热门文章
- Devexpress xaf针对某个用户登录后在面板中设置导航无效的解决方法
- 微信开发中,H5的video标签使用
- [LeetCode] 21. Merge Two Sorted Lists ☆
- Eclipse设置控制台日志输出位置
- 链方法[C# 基础知识系列]专题三:如何用委托包装多个方法——委托链
- 五分钟带你摸透 Vue组件及组件通讯
- javascript --- typeof方法和instanceof方法
- JavaScript的值传递和引用传递
- 中本聪研究所创始人对Core的发展方向感到厌恶
- 好文章,被架构师秒杀之后