Я пишу серверную сеть многопользовательской игры. Игра представляет собой РПГ, и она имеет максимальную максимальную мощность в 2000 игроков, но она практически не рассчитана на около 300 игроков, хотя она может быть выше или ниже. В течение самого долгого времени, каждый раз, когда мне приходилось заниматься сетью, где это касалось множества клиентов, я привязался к NIO, потому что не требовал использования сотен потоков. Недавно я столкнулся с презентацией в PowerPoint, где подробно описал две модели, и это почти заставило модель с потоком за клик выглядеть выше NIO. Я также нашел места, где указано, что старый IO может фактически превзойти и NIO.
Здесь можно найти PowerPoint (он немного стар): http://www.mailinator.com/tymaPaulMultithreaded.pdf.
Я еще не написал ни одного контента, поэтому для меня не было бы проблем начинать с самого начала, если бы мне пришлось изменить весь сетевой дизайн. На меня нет давления. Первоначально я разрабатывал реализацию шаблона реактора с помощью NIO (выберите событие, отправьте обработчик для обработки события).
Более подробную информацию можно найти здесь: http://en.wikipedia.org/wiki/Reactor_pattern
Вся моя реализация реакторов предназначена для использования одного потока. Поскольку я читал, что старый IO может превзойти, это фактически поставило меня в дилемму. Я не хочу разрабатывать сложную систему NIO, которая использует несколько потоков, чтобы полностью использовать преимущества всей мощности процессора, но я также склоняюсь к идее о том, что одно приложение использует более 300 потоков. Какой дизайн подходит для моей цели? Преимущество потока на клиента заключается в том, что он действительно использует жгуты всей мощности процессора по своей природе, но в то же время он борется с системой. Не говоря уже о том, что размер стека в одном потоке занимает много памяти (при умножении на пару сотен раз). Должен ли я придерживаться схемы реактора?
Я знаю, что этот вопрос немного неоднозначен, но я чувствую, что мне нужно задать вопрос конкретно для моей ситуации, потому что я не мог найти вопрос на этом сайте или на веб-сайте, где он затрагивает проблему моего рода. Был один об игре, но игра предназначалась для обработки десятков тысяч игроков.
Спасибо большое! Если вам нужно какое-либо разъяснение, пожалуйста, спросите!