An alternative server framework for #golang that uses I/O multiplexing

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.

https://github.com/tidwall/shiny

It uses the Reactor pattern where the server waits for the OS to signal a readiness event. This is similar to the way that libuvlibeventhaproxynginxredis, 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.

Features

  • 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.

Share This: