Советы по технологии для одной программы, много одновременных http-клиентов на маленьком хосте? [закрыто]

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

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

Я понимаю Apache / PHP / MySQL на более крупных серверах, но они, похоже, требуют слишком много ресурсов для поддержки множества одновременных (скажем, порядка 100) соединений на маленьком хосте - при этом каждое соединение избыточно загружается в свою собственную копию тот же интерпретируемый код.

Я думаю, например, пропустить веб-сервер общего назначения и иметь одну скомпилированную в памяти программу на C ++, которая обслуживает множество одновременных HTTP-соединений - легкий и быстрый. Приложение будет довольно простым. Или, возможно, надстройка или модуль для легкого веб-сервера. Или, может быть, что-то вроде node.js, если это было очень ресурсоэффективным и легко масштабируемым даже на небольшом хосте. Я даже не знаю терминологию или ключевые слова для стиля программирования, который я ищу, отсюда и мой вопрос.

Я попробовал StackOverflow, который предлагал обмен Raspberry Pi, где предлагался этот обмен. Есть какие-нибудь подсказки или подсказки?

0
задан 1 September 2017 в 08:52
4 ответа

не нужен веб-сервер общего назначения, такой как Apache

. Ищите легкий веб-сервер, например Mathopd , thttpd , Lighttpd .

одна резидентная скомпилированная программа на C ++, которая обслуживает множество одновременные HTTP-соединения - легкий и быстрый

«быстрый, легкий, не разветвляющий HTTP-сервер для UN X-систем» * в менее 4K LoC C - Mathopd.

много одновременных (порядок из 100, скажем) соединений

Очевидно

2
ответ дан 4 December 2019 в 12:19

Я думаю, что ваш основной выбор - это узел и голанг. На первый взгляд Go выиграет по производительности, https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=go&lang2=node , однако в зависимости от сложности программы. вы пытаетесь написать, и надежность, которая вам нужна, node может быть достаточно эффективной, и определенно проще написать простую программу.

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

1
ответ дан 4 December 2019 в 12:19

Если ваш сайт статичен, использование CDN позволит вам без проблем обслуживать сотни тысяч клиентов на Raspberry Pi. CDN получит страницы и кеширует их для вас. Только когда вы измените страницы, CDN придется их снова получить.

Если только часть сайта является динамической, вы можете использовать гибридный подход. Сделайте сайт максимально статичным и используйте Ajax только для извлечения измененных данных. Получение только небольшого json-файла с пользовательскими данными требует меньше ресурсов, чем получение всей HTML-страницы. Сценарий на стороне клиента будет извлекать динамические данные и отображать HTML-код в браузере. Разместите статическую часть в CDN.

Как отмечали другие, вам не нужен Apache для небольшого сайта на небольшом устройстве. Помимо Mathopd, thttp и lighthttpd, вы можете попробовать Nginx , Hiawata , Monkey Server , kHTTP Server , libmicrohttpd ].

0
ответ дан 4 December 2019 в 12:19

Flask - это облегченная среда Python для веб-разработки. Это может сработать, в зависимости от того, что вы подразумеваете под словом «многие».

0
ответ дан 4 December 2019 в 12:19

Теги

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