Naar de hoofdinhoud
Alle collectiesData en externe interfaces
Railgenius - real-time telematicagegevens met behulp van Railnova's Generieke Kafka Streaming API
Railgenius - real-time telematicagegevens met behulp van Railnova's Generieke Kafka Streaming API

Hoe een interface met Railnova Kafka opzetten om telematicagegevens in realtime te verzamelen.

Meer dan een jaar geleden bijgewerkt

Introductie

Kafka is de standaard message broker bij Railnova voor server-to-server datastromen en Railnova biedt een Generieke Kafka Streaming API aan alle Enterprise klanten onder de volgende voorwaarden.

Waarom Kafka?

In vergelijking met de meeste andere berichtensystemen, zoals AMQP en MQTT, heeft Kafka een betere doorvoer, ingebouwde partitionering, replicatie en fouttolerantie, waardoor het een goede oplossing is voor grootschalige, zeer beschikbare berichtverwerkingstoepassingen. We hebben in het verleden prestatieproblemen ondervonden met zowel MQTT als AMQP (in een server-naar-server omgeving) en een gebrek aan redundantie met single-node MQTT en AMQP architecturen.

Een ander belangrijk kenmerk van Kafka is dat het berichtenretentie biedt, waardoor de consument het bericht on-demand kan ophalen (binnen de retentieperiode) en ook specifieke berichten meerdere keren kan ophalen, in het geval van een systeemstoring of voor replay-doeleinden.

Kafka is een open-source protocol en is niet afhankelijk van een specifieke cloudleverancier. Kafka-berichten kunnen heel eenvoudig worden geconsumeerd vanuit Azure Event Hubs, AWS Kinesis of GCP dataflow. Je kunt een Kafka-service ook rechtstreeks hosten in je cloudomgeving Confluent of serviceprovider Aiven. Je kunt de Kafka-documentatie hier bekijken en de Kafka-clients in je favoriete programmeertaal hier.

Prijzen van de Generieke Kafka Streaming API

De prijs van de Generieke Kafka Streaming API service is afhankelijk van het datavolume en de gebruikte serverbronnen. Neem daarom contact op met ons Sales team voor een offerte voor de Generieke Kafka Streaming API voor de gegevens over je vloot.

Als je andere servicevoorwaarden wenst dan de generieke voorwaarden, bieden we ook aangepaste API's met aangepaste SLA's en integratieplannen, afhankelijk van een specifieke commerciële overeenkomst. Neem contact op met ons Sales team voor eventuele vragen met betrekking tot aangepaste API's.

Brokerinformatie en verbinding

Onze Kafka broker is toegankelijk voor alle Railnova Enterprise klanten vanaf het openbare internet en authenticatie vindt plaats met behulp van het SASL protocol. Wij bieden een testomgeving naast de productieomgeving. De host en het wachtwoord worden op verzoek verstrekt. Neem contact op met support@railnova.eu om meer informatie te krijgen.

Testomgeving

Productie omgeving

Broker host

Wordt apart verzonden

Wordt apart verzonden

Gebruiker (voor SASL)

Naam van je bedrijf

Naam van je bedrijf

Wachtwoord (for SASL)

Wordt apart verzonden

Wordt apart verzonden

Schema register host

Wordt apart verzonden

Wordt apart verzonden

Authentificatieprotocol

SASL SCRAM of SASL Plain

SASL SCRAM of SASL Plain

Onderwerpnaam

output-sharing-gebruikersnaam

output-sharing-gebruikersnaam

Onderwerpbehoud op de generieke Kafka-service

Standaard 24 uur

Standaard 24 uur

CA-certificaat (nodig voor SASL-verificatie) wordt ook apart verzonden.

De gegevens zullen beschikbaar zijn in een enkele topic, gepartitioneerd per assetnummer (locomotief of treinstel). De gegevens moeten worden geconsumeerd door één enkele verbruikersgroep op dat moment.

Berichtformaat en schema

De schema's kunnen direct worden opgehaald uit ons schemaregister met dezelfde gebruiker en hetzelfde wachtwoord als voor de broker of kunnen op verzoek worden verzonden.

Berichten worden gecodeerd met Avro en gecomprimeerd met zstd.

compression.codec

zstd

Avro schema namespace

eu.railnova.supernova.analyst

Avro key schema naam

AnalystKey

Avro value schema naam

AnalystValue

Berichtenenvelop

De envelop van het bericht wordt gedefinieerd door het schema AnalystValue en hier zijn de top-level sleutelnaam en beschrijving.

Sleutel naam

Sleutel type

Omschrijving

type

string

Type bericht (telematica, foutcode, …)

timestamp

string

ISO 8601 gecodeerde datum-tijd in UTC/Zulu tijdzone

asset

integer

Asset ID in Railnova

asset_uic

string

UIC van de asset, zoals gedefinieerd in het admin menu van Railnova.

device

integer

Toestel-ID in Railnova (kan nul zijn als de gegevens niet afkomstig zijn van een Railster)

is_open

bool

Gebruikt voor de status van foutcodes en alerts

content

string

De payload van het bericht. In het interne Railnova-formaat.

Het is gecodeerd in JSON.

Het wordt hieronder beschreven.

De asset en asset_uic mapping naar de asset naam en aanvullende gegevens kunnen via onze API gevonden worden op het asset endpoint.

De payload van de inhoud

De inhoud van de sleutel bevat een JSON gecodeerd object dat de payload van het bericht is, specifiek voor elk berichttype.

Deze inhoud van de payload binnen een inhoudsveld kan in de toekomst veranderen, omdat het afhankelijk is van de inkomende gegevens van configureerbare IoT-apparaten zoals de Railster of gegevens van derden. Onder deze Generic Kafka Streaming API wordt geen garantie gegeven voor de schemacontinuïteit van de payload van de inhoud.

De payload van de inhoud kan worden verkend via de pagina "Telematics data" op https://one.railnova.eu/telematics/#/.

Als voorbeeld is hier wat je typisch kunt verwachten van een bericht van het type "positie" voor de inhoud.

{
"gps_time": "2020-06-15 00:00:07",
"fix": 1,
"longitude": 5021011,
"course": 310,
"location": "Bièvre",
"period_km": 1.165,
"latitude": 49946116,
"speed": 101
}

Hier is nog een voorbeeld van een bericht van de Railster embedded rule engine:

{
"ZSG_Catenary_Voltage": 1.6,
"ZSG_IW_HB_Druck": 8.6,
"ZSG_IW_HLDruck": 4.92,
"ZSG_IW_IFahrSumme_scaled_A": 21.90234375,
"ZSG_IW_IFahrdr_1_scaled_A": 0,
"ZSG_IW_IFahrdr_scaled_A": 22.90234375,
"ZSG_IW_Weg": 31019,
"ZSG_IW_ZBK_Gesamt": 0,
"ZSG_IW_ZBK_eigene_Lok": 0,
"ZSG_IW_Zugnummer": 953,
… a hundred more symbols
}

Hier is nog een voorbeeld van een alert van de Railster embedded rule engine:

{
"name": "Tueren auf Seite Rechts wurden Freigegeben bei Befehl Freigabe links",
}

Depreciatie beleid onder de Generieke Kafka Streaming API

Onder deze Railfleet - Algemeen HTTP REST API voorwaarden, willen we ervoor zorgen dat onze klanten geïnformeerd worden en de tijd hebben om hun systemen te updaten voor ingrijpende veranderingen plaatsvinden, terwijl de normale functie- en productontwikkeling workflows bij Railnova mogelijk blijven.

Een functierelease kan bepaalde functies uit eerdere releases vervangen ("een ingrijpende wijziging"). Wanneer we ingrijpende wijzigingen uitbrengen, informeren we je vóór de releasedatum over de ingrijpende wijzigingen en garanderen we dat de wijzigingen zes maanden lang terug compatibel zijn (als je binnen twee weken reageert).

Wijzigingen die als "breaking" worden beschouwd onder de generieke Kafka API zijn:

  • het wijzigen of verwijderen van bestaande velden van de envelopstructuur (AnalystValue schema),

  • verwijderen van een reeds bestaand message_type

Code voorbeeld

We bieden een open-sourced codevoorbeeld in python waarmee je je eerste bericht op onze Kafka kunt ophalen na het volgen van de README.md op GitHub.

Support

Heb je nog vragen? Ga naar het Railnova-platform en klik op "Contact" voor hulp.

Was dit een antwoord op uw vraag?