Начинаю работать на игровом сервере, написанном на Java. Конечно, Java - не лучшее решение для разработки серверов, но это язык, с которым мне удобнее всего.
Я пытаюсь спроектировать этот игровой сервер для обработки большого количества подключений, и я не уверен, на чем больше сосредоточиться: на хранении данных в памяти или уменьшении использования памяти и использовании большей мощности процессора?
2 ответа
Конечно, зависит от того, на что похожа ваша игра. Я недавно протестировал свой сервер с 5000 клиентов при примерно 20 МБ оперативной памяти. Вы можете хранить гораздо больше данных о состоянии, чем я, и это может быть проблемой.
Ваша серьезная проблема со многими соединениями заключается в настройке сокетов для их правильной обработки, использование определенного способа обработки сокетов сильно замедляется или разрывает соединения @ 1024 и т. Д. Я не уверен, сколько оптимизации вы можете сделать в java.
Посмотрите на эту ссылку, о чем я говорю.
И удачи! А также как можно скорее переключите языки на язык, предлагающий функции, сопоставимые с java, но без ужасных недостатков (имеется в виду Objective-C или C #). Я не просто "хлопаю java", но проблема, которую вы собираетесь решить, когда говорите о том, что делать что-то производительное, заключается в том, что java отвлечет вас слишком далеко от операционной системы, и вы не сможете воспользоваться преимуществами оптимизации. когда вам это нужно.
Я бы не советовал вам проектировать сервер для большего, чем вам действительно нужно. Если вы вдруг обнаружите, что у вас 10 000 клиентов, вы можете перепроектировать систему.
Я бы начал с базового сервера, например. i5 с 8 ГБ памяти менее чем за 500 фунтов стерлингов или i7 с 24 ГБ менее чем за 1000 фунтов стерлингов.
По мере роста количества подключений у вас, скорее всего, закончится пропускная способность, прежде чем у вас закончатся ресурсы, если вы не используете облачное решение.
Кстати: вы можете реализовать высокочастотную торговую систему с задержкой менее 100 микросекунд на Java. Я не слышал ни о каких высокочастотных торговых системах Objective-C. C # может работать так же или лучше в Windows, но я предпочитаю Linux для серверной системы.
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].