Mikroservice-Software zur Sammlung und Analyse von Daten
Mikroservice-Software zur Sammlung und Analyse von Daten
Information
Standort:
Kanada
Branche:
Gesundheitswesen
Plattform:
Browser, IOS, Android
Arbeitsmodell:
Zeit und Materialien
Projektdauer:
1 Jahr
Team-Mitglieder:
1 Full-Stack-Entwickler, 1 Senior Backend-Entwickler, 2 mittlere Full-Stack-Entwickler
ID:
552
Verwendete Technologien
gRPC
Nest.js
Redis
Prisma
Kafka
Keycloak
Thingsboard
Linux
MacOS
AWS
React
MySQL
TypeScript

Über den Kunden

Der Kunde ist ein Startup, das die weltweit erste Plattform zur Geruchswahrnehmung entwickelt hat. Basierend auf einer von der NASA patentierten Technologie soll diese Plattform medizinische Zustände durch Atem- oder Körpergeruch mithilfe eines spezialisierten Sensors und KI identifizieren.

Über das Projekt

Der Kunde wandte sich an Elinext mit dem Bedarf an einem Node.JS-Entwickler, der neue Mikroservices entwickeln und bestehende unterstützen sollte.

Als der Elinext-Entwickler dem Projekt beitrat, befand sich nur ein Dienst in der Entwicklung, nämlich der Konfigurationsdienst. Dies ist der zentrale Mikroservice im Projekt, und jeder andere Mikroservice interagiert mit ihm, um Konfigurationen für die Arbeit mit Routing anzufordern. Gleiches gilt für physische Geräte, die Gerüche empfangen, da deren Funktionalität ebenfalls vom Konfigurationsdienst abhängt.

Zu den weiteren Mikroservices, die unser Entwickler erstellt hat, gehören:

  • Benachrichtigungsdienst – Er sendet Benachrichtigungen über Flutter-Nachrichten, Push-Benachrichtigungen an iOS- und Android-Geräte, E-Mails und WebSocket (Redis wird verwendet, um Anfragen an den Benachrichtigungsdienst zu verteilen). Der Dienst wird für die Verwaltung und Nachverfolgung von Benachrichtigungen verwendet.
  • Flottenmanagementdienst – Dient zur Verwaltung von Geräten, wo Sie Gerätenummern generieren und sie zu Thingsboard hinzufügen können, einer Plattform zum Senden von Anfragen an Geräte, um sie ein- oder auszuschalten, einen Energiesparmodus zu implementieren und andere gerätebezogene Aktionen auszuführen.
  • OLAF-Hub-Dienst – Dient zur Verwaltung von Experimenten und zum Sammeln von Daten und Protokollen. Dieser Dienst arbeitet basierend auf Ereignissen und Beschreibungen des Annotationsdienstes.
  • Annotationsdienst – Dient zur Verwaltung von Anmerkungen und Datenkennzeichnung, einschließlich Geräten, Diensten und Experimenten. Anmerkungen sind mit Ereignissen ausgestattet, die aus Anweisungen bestehen, die in einer für jede Anmerkung spezifischen Konfiguration gespeichert sind. Basierend auf den ausgelösten Ereignissen können Sie Geräte bedienen, Experimente beenden und andere Aktionen durchführen.
  • Dienst für kommerzielle und häusliche Einrichtungen (CDE-Dienst) – Wird verwendet, um den Zugang zwischen Benutzern und Geräten zu trennen, wie z. B. Probezeiten, Gerätesharing, Markierung des Arbeitsbereichs des Geräts und andere.

Einige der Dienste kommunizieren über Kafka miteinander. Da der Konfigurationsdienst stark ausgelastet ist und einen Cache enthält, kommunizieren andere Dienste über eine von Elinext entwickelte Bibliothek mit ihm. Sie funktioniert so, dass zuerst die Anfrage an Kafka gesendet wird, um die Konfiguration im Cache zu suchen. Wenn die Konfiguration nicht gefunden wird, wird die Anfrage dann über gRPC weitergeleitet. Falls bei der Anfrage an gRPC ein Fehler auftritt, erfolgt die Anfrage über HTTPS.

Der herausforderndste Dienst war der Benachrichtigungsdienst. Das Problem trat auf, als bei starker Auslastung mehrere Benachrichtigungen gleichzeitig an ein Gerät gesendet werden konnten. Ein Elinext-Entwickler implementierte eine Lösung, die die Leistung des Dienstes verbesserte und es ihm ermöglichte, mehrere Benachrichtigungen gleichzeitig zu verarbeiten.

Ergebnisse

Der Elinext-Entwickler hat einen stabilen Code vorbereitet, den der Kunde derzeit testet. Seine umfangreiche Erfahrung hat erfolgreich das Problem der überlasteten Dienste gelöst, was zu einer allgemeinen Leistungsverbesserung führte.

Haben Sie vor, ein gleiches Projekt zu schaffen?
Haben Sie eine Projektidee? Lassen Sie uns darüber diskutieren
Kontakt


    Insert math as
    Block
    Inline
    Additional settings
    Formula color
    Text color
    #333333
    Type math using LaTeX
    Preview
    \({}\)
    Nothing to preview
    Insert