Начинаю работать на игровом сервере, написанном на Java. Конечно, Java - не лучшее решение для разработки серверов, но это язык, с которым мне удобнее всего.

Я пытаюсь спроектировать этот игровой сервер для обработки большого количества подключений, и я не уверен, на чем больше сосредоточиться: на хранении данных в памяти или уменьшении использования памяти и использовании большей мощности процессора?

0
qrokodial 28 Авг 2011 в 00:03

2 ответа

Лучший ответ

Конечно, зависит от того, на что похожа ваша игра. Я недавно протестировал свой сервер с 5000 клиентов при примерно 20 МБ оперативной памяти. Вы можете хранить гораздо больше данных о состоянии, чем я, и это может быть проблемой.

Ваша серьезная проблема со многими соединениями заключается в настройке сокетов для их правильной обработки, использование определенного способа обработки сокетов сильно замедляется или разрывает соединения @ 1024 и т. Д. Я не уверен, сколько оптимизации вы можете сделать в java.

Посмотрите на эту ссылку, о чем я говорю.

И удачи! А также как можно скорее переключите языки на язык, предлагающий функции, сопоставимые с java, но без ужасных недостатков (имеется в виду Objective-C или C #). Я не просто "хлопаю java", но проблема, которую вы собираетесь решить, когда говорите о том, что делать что-то производительное, заключается в том, что java отвлечет вас слишком далеко от операционной системы, и вы не сможете воспользоваться преимуществами оптимизации. когда вам это нужно.

1
Nektarios 27 Авг 2011 в 20:16

Я бы не советовал вам проектировать сервер для большего, чем вам действительно нужно. Если вы вдруг обнаружите, что у вас 10 000 клиентов, вы можете перепроектировать систему.

Я бы начал с базового сервера, например. i5 с 8 ГБ памяти менее чем за 500 фунтов стерлингов или i7 с 24 ГБ менее чем за 1000 фунтов стерлингов.

По мере роста количества подключений у вас, скорее всего, закончится пропускная способность, прежде чем у вас закончатся ресурсы, если вы не используете облачное решение.

Кстати: вы можете реализовать высокочастотную торговую систему с задержкой менее 100 микросекунд на Java. Я не слышал ни о каких высокочастотных торговых системах Objective-C. C # может работать так же или лучше в Windows, но я предпочитаю Linux для серверной системы.

0
Peter Lawrey 27 Авг 2011 в 20:20