Cenário
Dispositivo IoT (atualmente dispositivo IPv4) que envia via soquete TCP uma carga útil para um servidor uma vez por dia. O servidor tem um endereço IP público, o dispositivo está atrás de um roteador / NAT. Vou usar um módulo baseado no ESP8266 (ou seja, o Olimex one)
Objetivo
O servidor deve poder enviar dados para qualquer cliente sempre que necessário. Não estou interessado em comunicação direta de cliente para cliente (por exemplo, conectar um dispositivo a partir do meu smartphone) como o furador deve fazer.
Outros requisitos
Os dispositivos IoT podem crescer até vários milhares. Sua conexão com a Internet é fornecida por muitos roteadores / modems habilitados para 4G. Cada um irá lidar com 10-20 clientes.
Solução proposta
Até onde eu entendo, uma solução comum é o MQTT. Os clientes enviam periodicamente dados para o broker (por exemplo, Mosquitto em execução no servidor de hospedagem), que, por sua vez, atualiza o aplicativo Web principal que é executado no mesmo servidor.
Pergunta
A abordagem MQTT é adequada para um número "grande" de dispositivos (mais de 1000), a maioria deles atrás de um roteador 4G?