2010-09-01 6 views
4

Мне нужен указатель в правильном направлении. Я смотрю вокруг и не могу найти шаблон дизайна (GoF), который укажет мне в правильном направлении.Какой шаблон дизайна выбрать

Я разрабатываю небольшой прототип приложения для цифровых рекламных вывесок, где есть простой сервер и количество игровых приложений (отображающих изображение/видео), подключенных к этому серверу. Мои требования состоят в том, чтобы иметь возможность подключить 100 игроков к одному серверу и распределять данные 50 Мб каждому.

Я планирую создать небольшие концентраторы (программные хабы) между сервером и игроками, собирая игроков (около 25 в каждом?) В концентраторах и имея концентраторы, которые получают и распределяют данные 50 МБ (делясь и побеждайте, правильно?). 50Mb предназначен только для прототипа, я считаю, что в реальной жизни видеоролики будут больше около 300 Мб для каждого. Причина для этих хабов заключается в том, что я бы избежал того, чтобы 100 игроков запросили 50 МБ одновременно, вместо этого только 4 (с 25 игроками) хабов будут запрашивать и распространять.

При использовании концентраторов мне нужно будет перемещать игроков между концентраторами, то есть удалять игрока с одного концентратора и прикреплять его к другому концентратору. (одна из моих мыслей заключается в том, что все игроки, подключенные к одному концентратору, должны делиться контентом, поэтому концентратор будет не загружать 25 разных фильмов)

Пожалуйста, знаете ли, как это делается в реальной жизни? Не могли бы вы прокомментировать мои концепции и/или указать мне в правильном направлении по шаблону/книге, которые помогут мне решить эту проблему.

ответ

5

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

Похоже, вы просто пытаетесь передать видео. Итак:

  • Можете ли вы использовать потоковый видеопоток? Это может быть дешевле, чем создавать собственные.

Если нет:

  • Будет ли модель работы вещания для вас, или это должно быть по требованию? То есть, скажем, клиент 1 запрашивает Видео A. Если через несколько минут Клиент 2 также хочет Video A, нормально ли, если Клиент 2 станет другим средством просмотра того же потока, который получает клиент 1?

  • Будет ли это поставляться через Интернет или в частной сети, над которой у вас есть контроль?

Если вы используете частную сеть и модель вещания будет работать, вы можете быть в состоянии использовать UDP Multicast, что может предложить значительное снижение пропускной способности по сравнению с чистым раствором по требованию.

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

Возвращаясь к предлагаемому решению, я не думаю, что он будет масштабироваться очень надежно. Если какой-то конкретный фрагмент контента очень популярен, тогда один из ваших хабов будет сильно перегружен, а другие простаивают. Возможно, вы захотите изучить более традиционную технологию балансировки нагрузки, которая позволит вам масштабировать, просто добавляя больше серверов.

+0

У игроков есть расписание, например. [video1], [image1], [image2], [video2] и т. д. это время, когда истек, он перезапускает цикл, также один канал может отображать его с 10-11 AM, тогда как другой канал показывает его с 10: 30- 11:30. Это означает, что трансляция не является вариантом. Кроме того, это требование, что каждый игрок (экран + компьютер/labtop) может быть «отключен». Это также требование, чтобы некоторые из них работали над http, поэтому они могут быть расположены в маленьком витрине магазина. –

+0

Каналы с расписанием ... это звучит * точно *, как трансляция для меня. Будут ли несколько клиентов подписываться на канал или на * канал * вы действительно имеете в виду * клиент *? В любом случае, если это через Интернет, это спорный вопрос, потому что многоадресная рассылка UDP не будет работать, к сожалению. –

+0

Извините за мое плохое описание, по каналу я имею в виду _client_. То есть клиент, который отображает содержимое на мониторе. (Я также называю это «игроком» в своем оригинальном посте. Я приписываю свое плохое описание. –

8

Не «» выберите «» шаблон дизайна перед тем, как проектировать. Сначала дизайн, а затем сравните с рисунками.

Ваш дизайн не всегда должен придерживаться шаблонов. Но убедитесь, что ваш дизайн не придерживается анти-шаблонов.

+1

+1 - Я согласен: вам нужно сделать некоторое размышление, прежде чем выбирать шаблон; решение (pattenr) должно всегда соответствовать проблеме, а не наоборот. –

Смежные вопросы