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.