高性能服务器 - 我应该使用什么?

0 windows iis-7 python sql-server-2008

我有一个大型游戏引擎,可以为手机客户端和网站提供服务。数据库是 MSSQL2008,引擎是用 C# 编写的。

网站是用ASP.NET MVC构建的,手机的web服务也是基于ASP.NET MVC构建的(可能会迁移到WCF或者纯socket服务器)。

该网站和 Web 服务位于 IIS 7 服务器上,而 DB 位于专用服务器上。两者都连接在本地快速 LAN 上。

游戏需要每个用户的实时响应(低于 1 秒)。当我对服务进行一些负载测试时 - 似乎在大约 250 个用户上它达到了 1 秒响应(在 50 时大约为 200 毫秒)。它应该支持超过 10000 个连接的用户。(我猜是服务器复制)。

我想再添加一层 - 用于游戏 Web 服务的专用实时服务器。我听说 Python 可用于构建非常高性能的服务 - 添加这一层是一个聪明的主意吗?(该层应该有内存临时数据库来为实时玩家提供服务,然后每 X 秒将其全部转储到后端数据库)。

我的架构好吗?怎么改进呢?

小智 6

在我看来,你应该先问问自己瓶颈在哪里。

  • 大多数时候 SQL Server 是磁盘 IO 的硬消费者;这本身就是一个完整的优化主题(数据库架构、SQL 查询与 StoreProc 等)。您可能想要使用 SQL 探查器。
  • 您是否使用任何使用 Web 服务的状态机制,如果是,您是否使用 SQL 服务器来保留该状态,这可能是一个性能问题。
  • 您是否尝试过分析您的 .Net 代码和 SQL 查询代码?
  • 您是否通过 SOAP 发送二进制块,二进制内容需要以 base64 编码,这可能会导致一些与 SSL 相同的开销(网络和带宽);
  • 你有没有问过你自己是否使用了除 WebService/SOAP 之外的较少语言的协议;可能是 HTTP/JSON 协议,甚至是自定义的二进制协议。
  • 构建 python 代理是一件有趣的事情,但我很确定您可以使用 .Net 和 Windows 服务实现类似的概念,但您可能还会问自己价格是多少,因为如果您需要将整个事物进行集群,您将需要把更多的同步和健壮性(防碰撞)功能放在上面。