Nätverk & systemintegration/Kursinnehåll
SV
← Till kursöversikten
ÄMNE 08 / 09 · Robusthet

Trådar & återanslutning

Hantera parallella händelser, köer och avbrott utan att tappa kontrollen över systemet.

18 min läsning5 kunskapsfrågorPraktisk övning
DET HÄR TAR DU MED DIG
  • Skilja process, tråd, task och callback.
  • Skydda delat tillstånd och välja köpolicy.
  • Verifiera säker återanslutning med loggar och räknare.
Sensortasks
Begränsad kö
Publicering → MQTTS
Ett system som hittar tillbaka · Ett förenklat flöde
01 — UTFORSKA

Flera saker behöver hända samtidigt

En process har eget virtuellt minne och minst en tråd. Trådar delar processens kod, globala data och heap men har egna stackar och körflöden. Schemaläggaren avgör vilken tråd eller task som får köra.

En callback är en funktion som anropas av ett befintligt körflöde; den blir inte automatiskt en egen tråd. Låt callbacks registrera en händelse eller notifiera en task och sedan avslutas snabbt.

02 — UTFORSKA

När två trådar skriver samtidigt

counter++ innebär i praktiken läs, addera, skriv. Två trådar kan läsa samma gamla värde och en uppdatering försvinner. Detta är en race condition. Korrekthet får inte bero på vilken tråd som råkar köras först.

En mutex skyddar den kritiska sektionen. Håll den kort och lås upp på alla felvägar. Skydda hela det sammanhängande villkoret, exempelvis både kön och räknaren för dess längd. pthread_create startar en tråd, medan pthread_join väntar på att den avslutas och frigör dess kvarvarande trådresurser.

EXEMPEL
lås mutex
  läs → ändra → skriv delat tillstånd
lås upp mutex
03 — UTFORSKA

Kön frikopplar mätning från publicering

Låt temperatur- och fukttasks skapa händelser i en begränsad kö. En publiceringstask äger MQTT-publiceringen. Kön jämnar ut korta variationer, men löser inte att produktionen ständigt är snabbare än konsumtionen.

När kön blir full krävs en uttalad policy. Du kan blockera producenten, droppa nya händelser, behålla de senaste, lagra ett värde per sensor eller spara kritiska händelser beständigt. Välj utifrån vad data betyder.

04 — UTFORSKA

Timers och anslutningstillstånd

I kursens ESP32-exempel notifierar temperaturtimern sin task var femte sekund och fukttimern sin task var sjunde sekund. Timer-callbacken gör inget nätverksarbete. En separat statistiktask observerar systemet.

Eventloopen rapporterar Wi-Fi-frånkoppling, erhållen IP-adress och MQTT-anslutning. Callbacks uppdaterar tillstånd och räknare. Sensortasks behöver då inte tolka nätverksfel själva.

05 — UTFORSKA

Mät även det som inte kom fram

Referensflödet fortsätter skapa händelser under avbrott men droppar händelser som når publiceringstasken offline. Loggen gör förlusten synlig. Återanslutning ska följas av mottagen data för att bevisa återställd funktion.

MQTTS ska behålla certifikatkontrollen vid varje ny anslutning, med rätt CA och systemtid. Växla inte till en okrypterad reservväg. Dokumentera avbrottstid, återhämtningstid och räknare före och efter.

EXEMPEL
created          → skapade händelser
published        → publicerade händelser
offline_dropped  → bortfall vid avbrott
queue_dropped    → bortfall vid full kö
reconnects       → återanslutningar
FRÅN KUNSKAP TILL HANDLING

Prova själv

Ta med ämnet in i ditt eget IoT-case. Dokumentera vad du upptäcker.

  1. Identifiera tasks, callbacks och delade resurser i ditt flöde.
  2. Lägg till en sensorhändelse och välj policy för full kö och offline-läge.
  3. Bryt anslutningen kontrollerat och notera räknare och tidsstämplar.
  4. Återställ nätet. Verifiera certifikatkontroll, ny mottagen mätning och synlig dataförlust. Spara normal- och avbrottslogg.
DIN TUR

Testa dina kunskaper

Stanna upp en stund. Vad har fastnat?

01Vad är lämpligt i en timer-callback?

02Vad ska hända med TLS-skyddet vid återanslutning?

03Två trådar kör counter++ samtidigt och en ökning försvinner. Vad är den troliga orsaken?

04Vad krävs när en begränsad kö blir full?

05Vilken räknare visar bortfall när händelser når publiceringstasken utan anslutning i referensflödet?

Fortsätt vara nyfiken

Originalmaterial och utvalda källor för dig som vill gå djupare.

Föreläsningsbilder · Ämne 8Joakim Englund · Systementor AB · PDF på svenskaESP-MQTT och ESP-IDFEspressif · Engelska

Ett steg närmare helheten.

Markera ämnet när du känner dig redo.

Hitta nästa sak att förstå.

Introduktion & MQTTÄmne 1 · GrundernaPortar & socketsÄmne 2 · NätverkHTTP(S) & API:erÄmne 3 · IntegrationJSON, XML & datakontraktÄmne 4 · IntegrationSystemintegration & SOAÄmne 5 · IntegrationNätverk & segmenteringÄmne 6 · NätverkSäker kommunikationÄmne 7 · SäkerhetTrådar & återanslutningÄmne 8 · RobusthetLoggning & övervakningÄmne 9 · Robusthet