dependabot[bot] on npm_and_yarn
Bump y18n from 3.2.1 to 3.2.2 … (compare)
dependabot[bot] on npm_and_yarn
Bump ini from 1.3.5 to 1.3.7 B… (compare)
dependabot[bot] on npm_and_yarn
Bump tree-kill from 1.2.1 to 1.… (compare)
dependabot[bot] on npm_and_yarn
dependabot[bot] on npm_and_yarn
Bump handlebars from 4.1.2 to 4… (compare)
dependabot[bot] on npm_and_yarn
Bump lodash from 4.17.15 to 4.1… (compare)
Why you need ZeroNode ?
Application backends are beckaming complex these days and there are lots of moving parts talking to each other through network. There is a great difference between sending a few bytes from A to B, and doing messaging in reliable way. ❗️❗️❗️
How to handle dynamic components ❓ (i.e., pieces that come and/or go away temporarily, scaling a microservice instances )
How to handle messages that we can't deliver immediately ❓ (e.g waiting for a component to come back online)
How to route messages in complex microservice architechture ❓ (i.e. one to one, one to many, custom grouping messaging)
How we handle network errors ❓ (i.e., reconnecting of various pieces)
We created Zeronode on top of zeromq as to address these and some more common problems that developers will face once building solid systems.
With zeronode its just super simple to create complex server-to-server communications (i.e. build network topologies).
Basics
Zeronode allows to create complex network topologies (i.e. line, ring, partial or full mesh, star, three, hybrid ...) But lets start from the basics. You want to send a message from A to B (💻 --> 💻) and that means you'll need to create 2 nodes. Think of every node as an actor (i.e. participant, minimal building block) in your networking system.
👉 node can connect to multiple nodes (i.e node.connect(addressOfNodeB), node.connect(addressOfnodeC))
👉 nodes can connect to particular node if the latest is binded to some interface (i.e node.bind(interfaceAddress))
👉 if node A is connected to node B then we have a channel between them and both nodes can talk to each other
👉 node-s are resilent to restarts, network failures, connect/bind order 💪🤘👍
👉 node-s can run on same or different machines, processes, containers etc ...
👉 data transfers between node-s via both request/reply and tick (fire forget) patterns
🎓🎓🎓
Much more interesting patterns and features you can discover by reading the document or try to reach us via Drift Chat under Steadfast.tech
Installation & Important notes
Zeronode depends on zeromq
📢📢 For Debian, Ubuntu, MacOS, Fedora, Redhat you can just run
$ npm install zeronode
and it'll also install zeromq for you.
Kudos 🙌 to Dave for adding install scripts. For other platforms please open an issue or feel free to contrubute.