У меня есть кластер внутренних серверов на GCP, и им нужно отправлять сообщения друг другу. Все серверы должны получать каждое сообщение, но я могу допустить низкий уровень ошибок. Я могу иметь дело с получением сообщения более одного раза на данном сервере. Порядок пакетов не имеет значения.
Мне не нужно много слоя постоянства. Сообщение становится устаревшим в течение нескольких секунд после его отправки.
Я подключил Google Cloud PubSub и довольно быстро понял, что для данной подписки у вас может быть любое количество подписчиков, но только один из них гарантированно получит сообщение. Я думал сделать так, чтобы все подписчики не смогли его подтвердить, но это кажется грубым взломом, который, вероятно, не сработает.
Размер моего кластера серверов динамически определяется автомасштабированием. Он запускает экземпляры ВМ по мере необходимости с динамическими именами хостов и IP-адресами. Нет удобного способа сопоставить динамические хосты со статическими подписками, но кажется, что это мой единственный реальный вариант: создать больше подписок, чем мой максимальный размер пула серверов, а затем использовать какую-то систему paxos (конфигурация времени выполнения, zookeeper, что угодно) для выделения серверов подпискам.
Мне начинает казаться, что, несмотря на то, что мой вариант использования кажется очень простым («Каждый сервер может отправить многоадресное сообщение на любой другой сервер в моей группе»), он может не подходить для Cloud PubSub.
Должен ли я использовать GCM/FCM? Или какая-то другая технология?