AnyCable-Go
AnyCable-Go Pro aims to bring AnyCable to the next level of efficient resources usage and developer experience happiness.
Read also AnyCable Goes Pro: Fast WebSockets for Ruby, at scale.
Memory usage
Pro version uses a different memory model under the hood, which gives you yet another 30-50% RAM usage reduction.
Here is the results of running websocket-bench broadcast
and connect
benchmarks and measuring RAM used:
version | broadcast 5k | connect 10k | connect 15k |
---|---|---|---|
1.3.0-pro | 142MB | 280MB | 351MB |
1.3.0-pro (w/o poll)* | 207MB | 343MB | 480MB |
1.3.0 | 217MB | 430MB | 613MB |
* AnyCable-Go Pro uses epoll/kqueue to react on incoming messages by default.
In most cases, that should work the same way as with non-Pro version; however, if you have a really high rate of
incoming messages, you might want to fallback to the actor-per-connection model (you can do this by specifying --netpoll_enabled=false
).
NOTE: Currently, using net polling is not compatible with WebSocket per-message compression (it's disabled even if you enabled it explicitly).
More features
- Adaptive RPC concurrency
- Multi-node streams history
- Slow drain mode for disconnecting clients on shutdown
- Binary messaging formats
- Apollo GraphQL protocol support
- Long polling support
- OCCP support
Installation
Read our installation guide.