Ü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.