Modelos de comunicação e revisão MQTT
Simulador MQTT
Publisher
Subscriber
Skill
Issue
Simule um dispositivo IoT utilizando o Eclipse Paho (escolha a implementação que quiser). Atente-se às seguintes specs:
Conceitos de TDD
Introdução ao HiveMQ
Broker em cloud e Dashboard
Skill
Issue
Nessa atividade, deve-se desenvolver a integração entre o simulador desenvolvido nas duas primeiras atividades ponderadas e um cluster configurado no HiveMQ. Para tal, deve-se garantir que o simulador é capaz de se comunicar utilizando autenticação em camada de transporte (TLS).
Introdução ao Metabase
AUR
Skill
Issue
ETAPA 1 - Dashboard Metabase
ETAPA 2 - Integração Sqlite+HiveMQ
Integração Metabase
configurações
configurações
map
configurações
dados
Skill
Issue
ETAPA 1 - Dashboard Metabase
ETAPA 2 - Integração Sqlite+HiveMQ
Introdução ao MongoDB
Aprimoramento DB e Dashboard
Atomicidade (Tudo ou nada)
Consistência (Sempre o mesmo estado, mesmo quando distribuído)
Isolamento (Uma operação pode afetar a outra)
Durabilidade (Sem perdas de dados)
BAsicamente disponível (Sempre disponível, nem sempre consistente)
Estado Suave (Permite períodos de inconsistência em transição)
Eventual consistência (Eventualmente o estado se torna consistente)
Skill
Issue
Não tenho ponderada para vocês essa semana. Podem usar esse tempo para dev =)
MongoDB Atlas
Integração MongoDB Atlas
Introdução ao Apache Kafka
Gerenciamento de escalabilidade
Skill
Issue
Seguindo os autoestudos do encontro de hoje, implemente um cluster kafka, criando drivers para um producer e um consumer na linguagem de sua preferência.
Apache Parquet + acompanhamento
Skill
Issue
Implementação da integração entre Kafka e HiveMQ
Concorrência e paralelismo
package main
import (
"fmt"
"time"
)
// Função que exibe uma mensagem após um sleep de 2 segundos
func printWithDelay(msg string) {
time.Sleep(2 * time.Second)
fmt.Println(msg)
}
func main() {
start := time.Now() // Início da medição do tempo
// Chamando a função 3 vezes
printWithDelay("Mensagem 1")
printWithDelay("Mensagem 2")
printWithDelay("Mensagem 3")
elapsed := time.Since(start) // Tempo total de execução
fmt.Printf("Tempo total de execução: %s\n", elapsed)
}
package main
import (
"fmt"
"time"
)
// Função que exibe uma mensagem após um sleep de 2 segundos
func printWithDelay(msg string) {
time.Sleep(2 * time.Second)
fmt.Println(msg)
}
func main() {
start := time.Now() // Início da medição do tempo
// Chamando a função 3 vezes
go printWithDelay("Mensagem 1")
go printWithDelay("Mensagem 2")
go printWithDelay("Mensagem 3")
elapsed := time.Since(start) // Tempo total de execução
fmt.Printf("Tempo total de execução: %s\n", elapsed)
}
package main
import (
"fmt"
"sync"
"time"
)
// Função que exibe uma mensagem após um sleep de 2 segundos
func printWithDelay(msg string, wg *sync.WaitGroup) {
defer wg.Done() // Indica que a goroutine foi concluída
time.Sleep(2 * time.Second)
fmt.Println(msg)
}
func main() {
var wg sync.WaitGroup // Cria um WaitGroup
start := time.Now() // Início da medição do tempo
// Adiciona 3 ao contador de tarefas do WaitGroup
wg.Add(3)
// Chamando a função 3 vezes de forma concorrente
go printWithDelay("Mensagem 1", &wg)
go printWithDelay("Mensagem 2", &wg)
go printWithDelay("Mensagem 3", &wg)
wg.Wait() // Aguarda todas as goroutines serem concluídas
elapsed := time.Since(start) // Tempo total de execução
fmt.Printf("Tempo total de execução: %s\n", elapsed)
}
package main
import (
"fmt"
"time"
)
// Função que envia uma mensagem para um canal após um sleep de 2 segundos
func printWithDelay(msg string, ch chan string) {
time.Sleep(2 * time.Second)
ch <- msg // Envia a mensagem para o canal
}
func main() {
ch := make(chan string, 3) // Cria um canal com buffer para 3 strings
start := time.Now() // Início da medição do tempo
// Chamando a função 3 vezes de forma concorrente
go printWithDelay("Mensagem 1", ch)
go printWithDelay("Mensagem 2", ch)
go printWithDelay("Mensagem 3", ch)
// Recebe as mensagens do canal e imprime
for i := 0; i < 3; i++ {
msg := <-ch
fmt.Println(msg)
}
close(ch)
elapsed := time.Since(start) // Tempo total de execução
fmt.Printf("Tempo total de execução: %s\n", elapsed)
}
type paddedInt struct {
value int
_ [56]byte
}