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--服务器基本结构相关推荐

  1. ASP.NET Web Game 构架设计3--业务逻辑服务器之计时器

      ASP.NET Web Game 构架设计3--业务逻辑服务器之计时器   业务逻辑服务器里主要包括以下四个模块 u          计时服务器 u          资源服务器 u       ...

  2. Asp.Net Web Api 部署------在云服务器IIS上部署Web Api程序

    Asp.Net Web Api 部署------在云服务器IIS上部署Web Api程序 本人Web Api程序框架选择的是.Net 5.0 一.在服务器上安装运行时RunTime,.Net 5 运行 ...

  3. Web信息架构——设计大型网站(第3版)

    Web信息架构--设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!) [美]]Peter Morville(彼得·莫维尔)  Louis Rosenfeld(路易斯·罗森菲尔德) ...

  4. Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!)

    Web信息架构--设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!) [美]]Peter Morville(彼得·莫维尔) Louis Rosenfeld(路易斯·罗森菲尔德)   ...

  5. Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!)...

    Web信息架构--设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!) [美]]Peter Morville(彼得·莫维尔)  Louis Rosenfeld(路易斯·罗森菲尔德) ...

  6. 架构设计思维篇之结构

    avatar 结构是相关元素之间的组织和安排,它是一个很普遍的概念,我们无时无刻不在谈论着各种对象的结构,如:细胞结构.人体结构.目录结构.分子结构.组织架构.文章结构等等数不尽的结构. 那么,当人们 ...

  7. Java企业级应用架构设计中的分布式结构

    Java企业级应用架构设计中的分布式结构 2010-12-24 13:54:12|  分类:默认分类 |  标签:|字号大中小 订阅 Java企业级应用架构设计是每个Java开发者不必学的知识,本文将 ...

  8. 千万PV级别WEB站点架构设计

    高性能与多级容灾WEB站点架构: 容灾要求: 接入层容灾.逻辑层容灾.数据层容灾 数据层包括: NoSQL集群.MySQL集群.分布式文件存储.日志采集分析与存储 过载保护: 接入层过载保护.业务逻辑 ...

  9. 《系统架构设计》-03-软件结构体系和架构风格

    文章目录 1. 软件结构体系 1.1 抽象(Abstract) 1.1.1 抽象的应用 1.1.2 不同层次的抽象 1.2 组件(Component) 1.2.1 定义 1.2.2 切入点 1.3 组 ...

最新文章

  1. NFS: Mac OS X (server) and Mac OS X (clients)实现思路
  2. 从python中的列表中获取唯一值[重复]
  3. php是什么症状脾虚什么症状怎么治,脾虚的5个症状是什么呢
  4. ios 内存深度优化_iOS 25个性能优化/内存优化常用方法
  5. 【原】概率论——第一章第1节
  6. java io流printstream_java IO流:打印流 PrintStream
  7. [网络流24题] 航空路线问题 (费用流)
  8. 微软2013年校园实习生招聘笔试题及答案
  9. 【网络流24题】餐巾计划问题(最小费用最大流)
  10. 一个代表年月的类YearMonth
  11. win C/C++程序通过Get方式获取网页源代码
  12. [转载]安全设置 IIS 中的权限
  13. paip.mysql备份慢的解决
  14. mysql转储表_Mysql导出表结构及表数据 mysqldump用法
  15. ReactJS快速入门
  16. 关于taocp的MIX[水上原创]
  17. 基于Bilibili热门视频Top100弹幕的数据爬取与分析(报告版)
  18. 最近复习了一下JavaScript
  19. 数论 · 幂函数求导
  20. 电脑重启桌面 计算机图标消失,电脑重启后计算机图标不见了怎么办

热门文章

  1. Devexpress xaf针对某个用户登录后在面板中设置导航无效的解决方法
  2. 微信开发中,H5的video标签使用
  3. [LeetCode] 21. Merge Two Sorted Lists ☆
  4. Eclipse设置控制台日志输出位置
  5. 链方法[C# 基础知识系列]专题三:如何用委托包装多个方法——委托链
  6. 五分钟带你摸透 Vue组件及组件通讯
  7. javascript --- typeof方法和instanceof方法
  8. JavaScript的值传递和引用传递
  9. 中本聪研究所创始人对Core的发展方向感到厌恶
  10. 好文章,被架构师秒杀之后