node-dot

0.9.12 • Public • Published

dot

dot is a minimalist toolkit for building fast, decentralized, scalable and fault tolerant microservices. Please see this article to find out more.

Dot Schema

Install

npm i --save node-dot

You can also clone this repository and make use of it yourself.

git clone https://github.com/Dvs-Bilisim/dot.git
cd dot
npm i
npm test

Components

There are 2 simple components:

  • Server : ~100 LOC, extends Base (~50 LOC)
  • Client : ~150 LOC, extends Base (~50 LOC)

Documentation lines are not included to LOC values.

Server will automatically manage routing between client and Service instances. String responses are reserved for errors. If you send a string back, it means that an error occured. Client is for sending requests.

Configuration

Server

  • debug : Debug mode. It's disabled by default.
  • delimiter : Delimiter between service and method names. It's a single dot(.) by default.
  • discover : Parameters for node-discover module. Please see official repository for more information.
  • group : This parameter is for grouping services. If you set a value, client instance connects matched servers only.
  • iface : optional. name of the network interface to get outer ip from
  • port : Start point for port range. If you set server instance looks up for its port starting from this number. It's 8000 by default.
  • secret : Encryption key for auto discovery feature. It's a string "dot" by default.

Client

  • debug : Debug mode. It's disabled by default.
  • delimiter : Delimiter between service and method names. It must be same value in server and client instances. It's a single dot(.) by default.
  • discover : Parameters for node-discover module. Please see official repository for more information.
  • group : This parameter is for grouping services. If you set a value, client instance connects matched servers only.
  • secret : Encryption key for auto discovery feature. It's a string "dot" by default.
  • timeout : Request timeout. Socket communication has auto recovery feature but in some cases you might want to have a timeout option.

Error Types

To have a better understanding on error types, there are a few more things to explain. A service is the name of your Service class in camel-case form and each static function in that class is called method. On client-side, you need to concatenate service name and method with delimiter as path. Default delimiter is a single dot(.). You can configure that by delimeter parameter.

  • INVALID_METHOD : Requested method doesn't exist in your service class
  • INVALID_PATH : Path parameter is not a valid string
  • INVALID_RESPONSE : Service sent an invalid response back
  • INVALID_SERVICE : Requested service doesn't exist
  • LOCKED : Clean shutdown on progress
  • MISSING_METHOD : Method is not a valid string
  • REQUEST_TIMEOUT : Request sent via socket but no response in allowed amount of time
  • SERVICE_TIMEOUT : No service found to send the request in allowed amount of time

Example Server

const Server = require('node-dot').Server;
 
class SampleService {
    static test(request, reply) {
        reply(request);
    }
 
    static async test2(request) {
        if (!request) throw new Error('invalid request');
        return request;
    }
}
 
const server = new Server();
server.addService(SampleService);
server.start();

Example Client

const Client = require('node-dot').Client;
 
const client = new Client();
client.send('sampleService.test', request, response => {
    console.log(response);
});

Benchmark

Test device specifications.

  • Dell XPS 13
  • Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz 4 Cores
  • 8 GB Ram

First, you should start server instance. Then execute following command:

node tests/benchmark.js

Your results should be similar to following values:

total time spent for 25000 requests is 0.98 seconds
min processing time is 0.20 seconds
max processing time is 0.76 seconds
average processing time is 0.46 seconds

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.9.12
    10
    • latest

Version History

Package Sidebar

Install

npm i node-dot

Homepage

dot.js.org/

Weekly Downloads

10

Version

0.9.12

License

MIT

Unpacked Size

85.1 kB

Total Files

12

Last publish

Collaborators

  • umuplus