Я обновил свой ответ.

даю веб-приложение на Ruby on Rails, которое должно быть легко масштабируемым. В этом приложении данные создаются мобильным клиентом (приблизительно 20 байтов) каждую секунду. Все эти данные должны быть переданы на сервер в определенный момент, желательно как можно скорее.

Чтобы выполнить эту задачу, я хочу, чтобы сервер действовал как служба RESTful. Клиент может буферизовать местоположения (скажем, каждые 5–30 секунд), а затем отбрасывать их как HTTP-запрос пут, где сервер может их затем сохранить. Я полагаю, что эта модель проще в реализации и лучше обрабатывает большой объем трафика, так как клиенты могут хранить данные в буфере, пока не услышат ответ от сервера.

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

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

Благодарю.

Обновить

Теперь у нас есть несколько дополнительных требований. Во-первых, мобильный клиент не может загружать более 5 ГБ данных в месяц. В этом случае мы говорим одно сообщение в секунду по восемь часов в день в месяц. Во-вторых, мы хотим объединить сообщения как можно меньше. Это делается для того, чтобы в случае, если что-то случилось с мобильным клиентом (например, автокатастрофа), мы потеряли как можно меньше данных.

Ответы на вопрос(4)

Ваш ответ на вопрос