2009-09-18 33 views
2

您是否曾經遇到過如此容易開發的事情,但停下來想一想您項目的服務器需求?這是我的情況。

我想與一個遊戲網站競爭,他們有多人Flash遊戲,如撲克,拉米,步步高和其他紙牌遊戲,總共8場比賽。對於每場比賽他們有房間和桌子。

我將使用Silverlight和套接字。我已經設法開發策略服務器,即使用WinForms(Silverlight中的客戶端套接字應用程序)的套接字服務器應用程序。我自己的測試車輛定位系統,所以在開發我想要的東西沒有問題,問題是如何計算服務器的要求,內存,帶寬,基於以下要求網速根據編程規範計算服務器要求

  1. 服務器應支持24.000用戶/天或1000用戶/小時
  2. 每個遊戲房間應該有它自己的表,用戶可以在玩
  3. 用戶不應該失去的分數和遊戲速度要快於一般

我只是不知道如何到h還有以下情況:如果1000個用戶通過Socket連接連接到一個滿是表格的房間,一個用戶離開一個表格,則所有1000個用戶都必須更新並且UI應該反映這些更改。假設我將通過向每個用戶發送一個100字節的小消息來更新客戶端,這將消耗100個字節* 1000個用戶= 100 kb,並且這僅用於1個UI更改,1個遊戲和1個房間,而不是計算我所有的其他遊戲和房間。向客戶端發送字節的1000次迭代也應該非常耗時。

我是一名開發人員,但在這些情況下沒有經驗。請指教。數字會很好。

+0

爲什麼你需要1個用戶離開的100個字節的消息?你可以1)分配所有消息的端口,所以如果你收到端口5552上的任何消息,你就會知道它的一個用戶離開。 msg只會是離開用戶的id/ip.address。 2)使用壓縮或加密技術使消息10-25字節? – 2009-09-18 20:00:17

+0

先生。點擊upvote,這是關於遊戲和桌子,如雅虎網絡遊戲,有房間和桌子,你可以在網站上玩。 imgine你可以在一頁中看到所有的表格。現在如果有人離開了一張桌子,你需要通過從服務器向所有客戶端發送字節來更新所有客戶端。 – 2009-09-18 20:05:49

回答

2

我可以爲您提供的最佳答案是運行壓力測試並查看單個服務器可支持多少負載。在運行這些測試時,監視內存,IO,CPU和磁盤活動(如果相關),以便首先了解哪些資源將耗盡。

我們在亞馬遜的EC2雲基礎架構上部署我們的應用程序。這可以讓我們輕鬆(在幾分鐘內)根據需要添加或刪除容量。也許值得考慮一下你的情況。

4

在您構建並優化實際應用程序之前,您無法預測某些性能級別所需的硬件。

您必須先完成應用程序。然後你可以衡量他們在負載下的表現。然後,您可以決定在多大程度的表現上花費多少錢。

+0

完全同意......並且說實話,這些問題通常比解決人們真正想玩的有趣遊戲的問題更容易解決! – dicroce 2009-09-18 20:02:57

1

總是遵循這兩個規則

「程序優化的第一條規則:不要這樣做。程序優化的第二條規則(僅針​​對專家!):不要這樣做。「 - Michael A. Jackson

0

首先,您應該更多地考慮如何以及何時向哪些客戶端發送什麼信息。並非每個客戶都需要了解每個表格的變化。

只有客戶需要的信息太多,您需要決定何時/如何傳輸。你也應該把信息打包成有意義的數據包。桌子上發生的事情只對那張桌子很有意思。

此外,您還需要對應用程序進行配置,以確保知道它消耗的資源。卡牌遊戲不應該吃掉這麼多資源。但重要的一點是先建立它,當你遇到瓶頸時,試着修復它。

0

在這一點上很難猜到這些事情。

從實用的角度來看,您可能最終希望研究a)雲託管類型的服務,以便爲您帶來更好的帶寬價格調整,或者b)經驗豐富的全方位服務託管公司,可以幫助您計算您的需要根據以前的經驗。

免責聲明:我爲Rackspace Hosting工作,它提供了上述兩者。