broker | ||
client | ||
cmd | ||
codec | ||
errors | ||
metadata | ||
registry | ||
selector | ||
server | ||
transport | ||
.travis.yml | ||
function_test.go | ||
function.go | ||
go-micro.go | ||
go-micro.png | ||
LICENSE | ||
options.go | ||
publisher.go | ||
README.md | ||
service_test.go | ||
service.go | ||
wrapper_test.go | ||
wrapper.go |
Go Micro
Go Micro is a pluggable RPC framework for distributed systems development.
The micro philosophy is sane defaults with a pluggable architecture. We provide defaults to get you started quickly but everything can be easily swapped out. It comes with built in support for {json,proto}-rpc encoding, consul or multicast dns for service discovery, http for communication and random hashed client side load balancing.
Plugins are available at github.com/micro/go-plugins.
Follow us on Twitter or join the Slack community.
Features
Go Micro abstracts away the details of distributed systems. Here are the main features.
- Service Discovery - Automatic service registration and name resolution
- Load Balancing - Client side load balancing built on discovery
- Message Encoding - Dynamic encoding based on content-type with protobuf and json support
- Sync Streaming - RPC based communication with support for bidirectional streaming
- Async Messaging - Native PubSub messaging built in for event driven architectures
Go Micro supports both the Service and Function programming models. Read on to learn more.
Getting Started
For detailed information on the architecture, installation and use of go-micro checkout the docs.
Learn By Example
An example service can be found in examples/service and function in examples/function.
Sponsors
Sixt is an Enterprise Sponsor of Micro
Become a sponsor by backing micro on Patreon