Dotaz na architekturu. Vytvoření sběrnice služeb/zpráv pomocí Node.js

Situace je tedy taková, že mám různé zdroje dat, které poskytují proud zpráv z externích zařízení. Některé posílají zprávy na sériovém portu, některé přes UDP, některé přes Telnet.. Chci vytvořit malý Node.js systém, který přijímá zprávy z každého z těchto zdrojů. Celkem asi 20 zdrojů.

Mám řadu míst, kam chci tyto zprávy předávat, a přeji si, aby se klienti mohli připojit přes telnet a přijímat tyto zprávy.

Myslím, že byste to mohli nazvat „servisní sběrnice“ nebo „sběrnice zpráv“..

V tuto chvíli jen kopím nápady, jak to strukturovat, nechci jeden velký soubor node.js, který umí všechno...

Chci, aby každý z „přijímačů“ byl v externích souborech .js do mého hlavního souboru node.js. Je můj přístup níže v pořádku a existují nějaká vylepšení, která bych mohl ve svém přístupu provést?

Hlavní soubor Node.js

Zavede dva „přijímače“. Každý z nich zpracuje příchozí zprávy ze zdroje dat

var sys = require("sys");

AVLReceiver = require("./avlreceiver.js").AVLReceiver();
PagerReceiver = require("./pagerreceiver.js").PagerReceiver();

pagerreceiver.js – ukázkový přijímač zpráv

Přijímá zprávy ze sériového portu..

var serialport = require("serialport");
var sys = require("sys");

var PagerReceiver = {};

PagerReceiver.initializePort = function () {
    this.serialport = new serialport.SerialPort("/dev/ttyS0", { 
        parser: serialport.parsers.readline("n"), baudrate: 57600 
      });

    this.serialport.on("data", this.processMessage);
};

PagerReceiver.processMessage = function (data) {
  //deal with the message
};

PagerReceiver.initializePort();

exports.PagerReceiver = function() {
       return PagerReceiver;
};

Byl by to vhodný způsob, jak rozbít systém node.js? Jakékoli připomínky k javascriptu byly také vděčně přijaty. Také jakékoli komentáře k jakýmkoli jiným architektonickým přístupům, které bych měl zvážit při vytváření sběrnice zpráv v node.js, by byly skvělé.

Děkuji za přečtení,

Duncane.

Odpověď

Tento příspěvek je starší 8 let a problém by byl dobře a skutečně vyřešen; ale myslel jsem si, že každému, kdo přijde tímto způsobem, vložím nějaké nápady pomocí moderního uzlu a Typescriptu.

Jak jste zjistili, sběrnice zpráv se opravdu hodí. To pomáhá nezahltit vaši aplikaci, když zařízení začnou odesílat velké objemy zpráv.

Čistým způsobem, jak toho dosáhnout, by bylo použití vyhrazené servisní sběrnice, jako je @node-ts/bus, která se zabývá všemi technickými složitostmi opakování zpráv, přihlašování k odběru témat atd.

Dalším by bylo zabudování protikorupční vrstvy pro zprávy generované zařízeními. Když je každá zpráva přijata, je přeložena do doménové zprávy, která odpovídá vašim standardům. Tím se zabrání tomu, aby se každý obslužný program zpráv musel více starat o dešifrování zpráv a jejich zpracování.