Thingsplode Synapse - blazingly fast, super-light communication library for anti-fragile cloud architecture.
Work in progress - version 1.0.0-snapshot
- shines in embedded environment where CPU cycles are precious;
- scales in the cloud, when millions of concurrent connections need to be served;
Supported protocols:
- REST over HTTP (simplicity);
- File streaming (download) over HTTP
- File streaming (upload) over HTTP - #2
- REST over HTTPS (simplicity and security);
- Websocket (bidirectional communication for mobile and web);
- MQTT (small size for IoT);
- Unix domain sockets for microservices within the same Docker container (or other host-only communication) (speed) - #3;
Hides the complexity of microservice communication for you. It provides:
- generated Swagger definition for your published endpoints;
- built-in Swagger UI for browsing and calling services;
- HTTP file download support;
- message introspectors on the Endpoint (server) and Endpoint Proxy (client);
- load balancer with partitioning / fail-over;
- circuit breaker (fast failing of connections);
- replicated service registry - #4;
- reliable messaging;
- error handling and message resend mechanism;
- built-in performance monitoring
- api keys - #5;
- Endpoint Proxy (Client) authentication and authorization - #6;
- message authentication - #7;
- json with Jackson
- json with Gson
- message pack
- google protocol buffer - #8;
- request/response pattern
- rpc pattern
- publish/subscribe patterns
- publish one service over multiple channels (Websocket / Rest / MqTT)
- client proxy with sequential/blocking dispatching;
- client proxy with asynchronous message dispatching;
- message pipelining on the Endpoint (Server) side (see HTTP pipelining) - #9;
Some architectural choices are supporting the performance of the library:
- non-blocking message processing (speed)
- reactive programming in the user space
- memory mapped files for persistence (speed)
- The Endpoint Proxy (Client) dispatches a Request to the Endpoint service (Server) and expects a Response;
- The Endpoint Proxy can signal events towards the Endpoint service (Server) in a fire and forget manner (also with activated reliable messaging).
- The Endpoint service (Server) sends commands to the Endpoint Proxy (Client) and expects a Command Execution Result.
- A notification is sent by the Endpoint service (Server) to the Endpoint Proxty (Client) also with reliable messaging.
- http keepalive support