0.9.12 • Published 4 years ago

node-dot v0.9.12

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

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
0.9.12

4 years ago

0.9.11

4 years ago

0.9.9

4 years ago

0.9.8

5 years ago

0.9.7

5 years ago

0.9.6

5 years ago

0.9.5

5 years ago

0.9.4

5 years ago

0.9.3

5 years ago

0.9.2

5 years ago

0.9.1

5 years ago

0.9.0

5 years ago

0.8.7

5 years ago

0.8.6

5 years ago

0.8.5

5 years ago

0.8.4

5 years ago

0.8.3

5 years ago

0.8.2

5 years ago

0.8.1

5 years ago

0.7.4

5 years ago

0.7.2

5 years ago

0.5.6

5 years ago

0.5.5

5 years ago

0.5.4

5 years ago

0.5.3

5 years ago

0.5.2

5 years ago

0.5.1

5 years ago

0.5.0

5 years ago

0.4.7

5 years ago

0.4.5

5 years ago

0.4.1

5 years ago

0.3.0

6 years ago

0.2.5

6 years ago