Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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,...
- Host: GitHub
- URL: https://github.com/giorgio-casciaro/jesus
- Owner: giorgio-casciaro
- Created: 2017-01-29T14:49:23.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-12-05T16:30:29.000Z (almost 6 years ago)
- Last Synced: 2024-04-25T02:41:17.397Z (7 months ago)
- Topics: events, json-schema, microservice, nodejs, rpc
- Language: JavaScript
- Homepage:
- Size: 8.17 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# jesus
Javascript Microservice Comunication Manager:
jesus is a cross-service multichannel (http,tcp,upd) comunication (rpc, events) layerFEATURES:
- 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 jsonschemaREQUIRE:
- 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