A framework for writting web services in Go.
Developers should focus on writing the business logic.
- Transport agnostic (TCP, HTTP, AMQP ...)
- Protocol agnostic (JSON-RPC, ProtocolBuffer, ...)
- Plain Old Go Struct for business logic
- Handle boilerplate for setting up a service
- Convention over configuration
- RPC.
+------------ + +---------+
| Middlewares | <-> | Handler |
+------------ + +---------+
+-----------+ +----------+
| Transport | <-> | Protocol | <->
+-----------+ +----------+
+------------ + +---------+
| Extensions | <-> | Client |
+------------ + +---------+
Transports:
- AMQP Transport (Minimal)
- HTTP2 Transport
- HTTP Transport
Protocols:
- JSON-RPC Protocol (Minimal)
- ProtocolBuffer
- Lymph Protocol (http://lymph.readthedocs.org/en/latest/protocol.html https://github.com/mouadino/go-lymph)
Client:
- Client
- Circuit Breaker
- Timeout
- Retry
- Remote errors
- Async
Server:
- Multiple services namespaces (a la net/rpc)
- Tracing middleware
- Rate limit middleware
- Registration
Command lines:
- gonano request
- gonano get
- gonano list
Misc:
- Logging (https://godoc.org/gopkg.in/inconshreveable/log15.v2)
- Context (https://blog.golang.org/context)
- Metrics (https://github.com/rcrowley/go-metrics)
- Discovery
- Testing tools (mocking, fake services)
- Protocol/Transport negotiation
- PubSub
- Notify (One way messages)
- Add to travis/circleCI ...
- GoDoc
- More complete example (e.g. user service)
Please check examples folder