проектирование / программирование сервера высокого уровня [закрыто]

Я заинтересован в разработке простого сетевого сервера, который принимает и обслуживает ограниченное количество соединений (<25) изнутри локальной сети в любое время. Сервер динамически генерирует изображения и передает их клиентам со скоростью ~ 40-50 МБ / с. Какие-либо предложения / комментарии по имеющимся примерам дизайна для такого сервера - многопоточность, многозадачность, другие парадигмы дизайна, которые следует иметь в виду? А что, если этот сервер настроен на прием соединений (> 10000) из любого места в Интернете. Изменится ли какие-нибудь параметры? Есть ли какие-нибудь доступные примеры?

Это в основном вопрос типа программирования. я не ищу сжатия изображений или каких-либо других конкретных алгоритмов или транспортов. Просто общий вид на более высоком уровне. Должна ли быть многопоточность, какой тип очередей? Какой язык лучше всего подходит, почему? Есть ли литература / книги / статьи и т. Д.? (кроме comer)

Примите во внимание любые указатели

1
задан 17 April 2011 в 19:06
4 ответа

Другой высокоуровневый вопрос об архитектуре. Ошеломите 2 за один день. Я чувствую себя особенным.

Правильно. Независимо от того, что это - Вы, делают, это, должно быть быстрым и легким.

У меня, вероятно, была бы игра вокруг с управляемым событиями сервером. Node.js кажется, что мог бы сделать хорошего кандидата на это.
Не волнуйтесь слишком много о количестве одновременных соединений, или в этом отношении, скорость передачи данных.

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

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

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

Затем пойдите и исследование, как сделать все эти вещи.

Затем наймите людей, которые знают то, что они делают. Это кажется, что Вы пытаетесь сделать все внезапно, все сами.

1
ответ дан 3 December 2019 в 22:24

Таким образом, у Вас есть сервер, генерирующий вещи, и Вы ищете принятие обслуживания сервера и предоставление доступа к нему в Интернете? По http?

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

Обслуживание локальных статических файлов по http довольно легко в эти дни, на linux/bsd я рекомендовал бы использовать nginx. Параллелизм, который Вы упоминаете, продвинет Вас в Большую Пропускную способность быстро, в зависимости от чисел, которые Вы перемещаете в территорию CDN.

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

1
ответ дан 3 December 2019 в 22:24
  • 1
    я думаю udp как надежность, не как проблема. И из-за ограничений тот же сервер генерирует изображения также (я, привычка вдается в подробности, поскольку это означало бы описывать собственную технологию). Какие-либо серверы как этот? Какие-либо указатели дизайна на использовании многопоточности, io библиотеки, язык реализации и т.д.? –  John Qualis 24 September 2010 в 12:49

Какие-либо параметры изменились бы?

Да. это не был бы сервер. Какая-либо подсказка, сколько обработки powe Вы должно было бы генерировать 10 000 изображений параллельно? И, учитывая Ваш клиент fo 25 пропускной способности, который составил бы 16 ГБ/с к 20GB/s только в пропускной способности (фактор 400).

Вы, вероятно, говорите о 400-500 серверах здесь.

0
ответ дан 3 December 2019 в 22:24

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

0
ответ дан 3 December 2019 в 22:24

Теги

Похожие вопросы