Одной из самых интересных проблем при проектировании системной архитектуры является сохранение гибкости в выборе масштаба системы. В наши дни роль масштабирования непрерывно растет, так как все больше систем работает в интрасетях или в Интернете. В таких системах идея планирования мощности выглядит абсурдно, если вы хотите, чтобы допустимая погрешность составляла меньше двух порядков. Созданный вами сайт неожиданно становится популярным, и счет посетителей буквально идет на миллионы. Так же просто (и с такими же катастрофическими последствиями) возможен и другой вариант: вы создаете сайт, которым никто особенно не интересуется. Дорогостоящее оборудование простаивает, поглощая деньги за потребляемую энергию и администрирование. В сетевом мире переход сайта из одного состояния в другое происходит за минуты.
С проблемами масштабирования сталкивается каждый, кто подключает свою систему к сети. Эти проблемы особенно актуальны для массовых многопользовательских онлайновых игр (ММО) и виртуальных миров. Такие системы должны масштабироваться в расчете на большое количество пользователей. Однако, в отличие от веб-серверов, на которых пользователи запрашивают более или менее статическую информацию и не взаимодействуют друг с другом, игроки ММО или обитатели виртуальных миров приходят ради взаимодействий как с миром (изменение базовой информации о мире), так и друг с другом. Взаимодействия усложняют масштабирование инфраструктур таких систем, поскольку взаимодействие пользователей с системой в основном происходит независимо (хотя, конечно, бывают и исключения) и не приводит к значительному изменению состояния виртуального мира. Если взять двух конкретных участников мира, вероятность их взаимодействия в любой отдельный момент времени ничтожно мала. Но практически каждый игрок почти всегда с кем-то взаимодействует. Таким образом, система получается массово-параллельной, но взаимозависимой в малом количестве взаимодействий.
No related posts.