Shiny is an alternative server framework for Go that uses I/O multiplexing. It makes direct epoll and kqueue syscalls rather than the standard Go net package.
It uses the Reactor pattern where the server waits for the OS to signal a readiness event. This is similar to the way that libuv, libevent, haproxy, nginx, redis, and other high performance servers work.
The goal of this project is to create a simple server framework for Go that performs on par with Redis and Haproxy for packet handling, but without having to interop with Cgo. My hope is to use this as a foundation for Tile38 and other projects. Early benchmarks are exceeding my expectations.
This project is a work in progress. The API will likely change between now and Tile38 v2.0 release.
- Simple API. Only one entrypoint and four event functions
- Low memory usage
- Very fast single-threaded support
- Support for non-epoll/kqueue operating systems by simulating events with the net package.