- Der Overhead ist sehr gering. Die Funktionen im NIF tun nichts weiter, als Daten zu empfangen und sie an einen Worker-Thread zu senden, sodass die C-Funktion sofort zurückkehren kann. Es ist so konzipiert, dass es so schnell wie möglich ist und gleichzeitig sehr wenig Auswirkungen auf den aufrufenden Thread hat und eine minimale Garbage-Collection-Last erzeugt.
- Es ermöglicht die Verwendung derselben Bibliothek und desselben Agents, die von AppSignal für Ruby verwendet werden, das auf Tausenden von Produktionsservern auf der ganzen Welt läuft. Es ist eine kampferprobte Technologie, die täglich kombiniert 1 Milliarde Anfragen verarbeitet (November 2016).
- Die Bibliothek und der Agent sind in Rust geschrieben, und ihre primären Designüberlegungen waren (und bleiben) Robustheit und Performance.
AppSignal für Elixir
Warum ein NIF?
Die AppSignal-für-Elixir-Integration verlässt sich auf ein NIF, das eine Bibliothek aufruft, um die Hauptarbeit zu erledigen, geschrieben in Rust. Seine Aufgabe ist es, Daten von der Elixir-App zu empfangen, sie zu normalisieren und sie über einen Unix-Socket an einen separaten Agentenprozess zu schreiben. Der Agent sendet die Daten dann regelmäßig zur weiteren Verarbeitung an AppSignal.com. Weitere Informationen zur Funktionsweise unseres Agents finden Sie auf der Seite Wie AppSignal funktioniert.
Während die Verwendung eines NIF inhärente Risiken birgt, bietet die Verwendung eines solchen in diesem Fall mehrere Vorteile: