Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/giorgio-casciaro/jesus

cross-service multichannel comunication layer: rpc and events over http,tcp,upd,...
https://github.com/giorgio-casciaro/jesus

events json-schema microservice nodejs rpc

Last synced: 2 days ago
JSON representation

cross-service multichannel comunication layer: rpc and events over http,tcp,upd,...

Awesome Lists containing this project

README

        

# jesus
Javascript Microservice Comunication Manager:
jesus is a cross-service multichannel (http,tcp,upd) comunication (rpc, events) layer

FEATURES:
- rpc and event managment
- various response types: noResponse, aknowlegment, response, stream
- various channels:udp,http,socket
- CHANNEL = serialization -> compression -> tranport , ES. compressedHttp = JSON -> gzip -> http/rest
- event's channel selected by event/rpc config (ex. log event on udp, domain event on http/rest)
- All requests and responses (for rpc and events) are described with jsonschema

REQUIRE:
- schema manager, a way to share info between microservice (etcd,consul,memcache,redis,ecc)

TODO:
- the compatibility between microservices is tested at start
- eliminate babel await/async dependecy
- channels based on zeromq
- TLS connnection encryption based on certificates (protection of the exchanged on single comunication)
- specific message encryption (only messages with the right certificate can decrypt)
- comunication between microservice and jesus based on unixsocket: not npm module require, language agnostic comunication, deployable on kubernetes as Daemonset (one jesus server per node, comunication based on unixsocket)

#### EXAMPLE
- Microservice 1
- JesusClient EVENT : find services listening for event and loop rpc
- JesusClient RPC : validate message and data (based on receiver method jsonschema), find right transport and send
- ChannelClient : encode/compress message and send request
- ChannelServer : receive request and decode/decompress message
- JesusServer : receive message and call dervice method
- Microservice 2 function

#### OBJS
- Msg (rpc call) = { Method, Data, Meta}
- Method = method to call
- Data = method data defined in jsonschema
- Meta = { corrid, userid, from, reqInTimestamp, reqOutTimestamp, channel}
- Channel = serialization (simple json,webpack) + compression (gzip) + channel
- Schema = share data schema between services