mint_candy, так. перестаньте употреблять слово клиент как пользователь. клиент - это сферический скрипт в вакууме, который работает с сокетом. каждый из таких клиентов хранит свой стейт. Если стейт пуст то вы присылаете Х последних сообщений и по мере промотки ленты запрашиваете с сервера другие (до какого-то момента)
Константин Андреевич, по списку - отсутствие серверного шифрования как класс, что приводит нас к высокому шансу того что в случае утечки ваши файлы будут полностью открыты. Кроме того в BackBlaze все данные хранятся в одном датацентре, судя по информации и как они при этом обеспечивают 8*9 of durability - неизвестно. Вероятнее всего враньё. Далее по трафику - большое число жалоб на скорость взаимодействия с их сервисами, а значит там даже намека нет на CDN.
Ну и в довесок в нормальных облаках ещё несколько десятков сервисов, которые интегрируются с хранилищем
mint_candy, это для других задач. Например, представьте анонимный чатик где люди общаются только пока не оборвалось соединение) я сейчас утрировал, но примерно так. В целом - каждой задаче свой инструмент
mint_candy, нельзя перепослать всем сообщение. По тому что это:
- трата сухого трафика
- трата чужих ресурсов
- потенциальное место налажать
- не безопасно
Хранить на сервере нельзя по тому что вам надо гарантированно идентифицировать клиента (а не пользователя)
Перепослать сообщения нужно стандартным механизмом - пришел клиент, получили для него сообщения с последнего стейта, послали сообщения как и всегда
Проверку на клиенте на дубль сообщения делать обязательно. Возможность переполучить что-то в сокете высока
mint_candy, вы в любом случае при нескольких клиентах обязаны сделать stateless backend и перенести логику запросов сообщений на клиента. Сообщения модно посылать как угодно. Но лучше точечно ибо в группу посылают только в случае когда отключившиеся клиенты больше никогда не участвуют в получении информации
mint_candy, сервер не должен знать ничего про клиента. Все клиенты не зависят друг от друга и имеют право иметь в отсутствие сети разный набор сообщений. Если одна система получила сообщение то и другая обязана получить
никакой путаницы)