Devo usar o protocolo MQTT?

8

Estou planejando começar a implementar o caso de uso da IoT abaixo.

Caso de uso

Os dispositivos IoT enviarão 100 mil mensagens / minuto para o gateway via repetidores e o gateway transferirá as mensagens para a nuvem. Eu quero rastrear os funcionários de uma organização. Os sensores serão fixados no cartão de identificação. O sensor envia os dados relacionados à localização (aprox. 15 KB / mensagem) para o gateway via repetidores. É para fins analíticos. Depois que os dados forem transmitidos para a nuvem, farei algumas análises e armazenarei no banco de dados e exibirei em uma página da web. Com base nesses dados de análise, mostrarei a localização atual do usuário e também a localização móvel do usuário em um determinado período de tempo passado (última 1 hora ou 2 horas ou 1 dia).

Vou fazer algum processamento sobre os dados e enviá-los para o front end / DB.

Eu analisei o básico da IoT e sua arquitetura. Decidi usar a arquitetura de pilha "SMACK" (Spark, Mesos, Akka, Cassandra, Kafka).

Decidi usar o "cliente nativo Kafka" no gateway para publicar as mensagens na nuvem.

Devo usar o protocolo MQTT para transferir a mensagem para Kafka? Ou o MQTT não é necessário para o caso de uso acima?

Se sim, qual seria o benefício de usar o MQTT com a arquitetura "SMACK"?

SKK
fonte
2
1,5 Megabytes por minuto? Por funcionário, o dia todo? Esqueça os protocolos, você provavelmente deve dar um passo atrás e considerar os dados em si, encontrando uma maneira de destilá-los antes da transmissão.
22418 Chris Stratton
Meus pensamentos exatamente (+1). Quantos empregados você tem? Já em um site grande com 2.000 funcionários, você acompanha a localização quase uma vez por segundo - quem precisa dessa precisão? O que você pode fazer com isso? E por que precisa de 15kB para lat / long? Qual é o resto e com que frequência isso muda?
Mawg diz que restabelece Monica
Apenas curioso - como você está acompanhando os IDs? RFID passivo de longo alcance? Bluetooth? Se algo além de RFID passivo, posso prever problemas de bateria.
Mawg diz que restabelece Monica

Respostas:

5

Você não precisa usar o MQTT. Os clientes Kafka instalados nos cartões de identificação dos funcionários podem enviar dados diretamente para o broker kafka na nuvem. Portanto, enquanto você estiver usando o Kafka para o gateway, você poderá realmente usar o kafka para os próprios sensores.

Kafka e MQTT não são intercambiáveis, eles têm lados fortes diferentes (consumo de energia, consumo de largura de banda, taxa de transferência ...), mas acho que você sabe disso, assumindo a complexidade da sua pilha. Kafka pode lidar com 100 mil mensagens / minuto.

Se você decidir usar o MQTT de qualquer maneira, aqui está uma postagem de blog sobre como a IBM usa o MQTT e o Kafka no mesmo projeto. O projeto deles também é sobre mobilidade, então acho que pode ajudar.

Gerenciando dispositivos de IoT com Kafka e MQTT

atakanyenel
fonte
atayenel, Obrigado por explicar em detalhes. No meu caso, devo usar o gateway em vez de enviar diretamente a mensagem do sensor. Google (MQTT) e provedores de serviços IBM IOT usando MQTT? Depois de ler o link abaixo, tenho algumas confusões ... Você sabe o motivo, existe algum motivo específico? cloud.google.com/iot/docs/concepts/protocols
SKK
Kafka pode lidar com essa quantidade de dados?
Mawg diz que restabelece Monica
Kafka é melhor que mqtt na taxa de transferência de dados. Portanto, se o mqtt lidar com isso, o kafka também poderá lidar com isso.
precisa saber é
@atayenel obrigado por seus comentários. O que você sugere para os requisitos mínimos aproximados de hardware para o meu caso de uso?
SKK
@ SKK Não posso dizer exatamente, mas você pode olhar para esta pergunta .
atakanyenel
2

Não há nenhum problema com quase qualquer tipo de intermediário MQTT para manipular essa carga, especialmente para mensagens qos = 0 (provavelmente no seu caso). Temos carga constante no nosso broker com 100.000 mensagens recebidas (0,5 KB) por segundo (+ SSL). O problema pode aparecer do lado do tráfego, não do pps.

Em relação à arquitetura do seu sistema, meu conselho pessoal - tente torná-lo o mais simples possível. E média simples - apenas alguns componentes / serviços intermediários. Se você pode conectar diretamente dois serviços - faça-o. Você sempre terá a possibilidade de torná-lo mais complexo quando começar a adicionar recursos.

shal
fonte
Obrigado. Deseja que eu use arquitetura simples em vez de SMACK?
SKK
Você pode consultar este iot.stackexchange.com/q/2718/5382 ?
SKK
Depende de você, mas, na minha opinião, eu o criaria da maneira mais simples possível, concentrando-me apenas nas tarefas importantes no início. Caso usual é que o seu entendimento do projeto antes e depois (ou no meio) é totalmente diferente e muitas vezes você tem uma conclusão final "se eu fazê-lo novamente eu vou fazer diferente"))
shal