Micro is an API first development platform.
Micro addresses the key requirements for building services in the cloud. It leverages the microservices architecture pattern and provides a set of services which act as the building blocks of a platform. Micro deals with the complexity of distributed systems and provides simpler programmable abstractions to build on.
- Introduction - A high level introduction to Micro
- Getting Started - The helloworld quickstart guide
- Upgrade Guide - Update your go-micro project to use micro v3.
- Architecture - Describes the architecture, design and tradeoffs
- Reference - In-depth reference for Micro CLI and services
- Resources - External resources and contributions
- Roadmap - Stuff on our agenda over the long haul
- FAQ - Frequently asked questions
Install micro
go install github.com/micro/micro/v3@latest
Run the server
micro server
Login with the username 'admin' and password 'micro':
$ micro login
Enter username: admin
Enter password:
Successfully logged in.
See what's running:
$ micro services
api
auth
broker
config
events
network
proxy
registry
runtime
server
store
Run a service
micro run github.com/micro/services/helloworld
Now check the status of the running service
$ micro status
NAME VERSION SOURCE STATUS BUILD UPDATED METADATA
helloworld latest github.com/micro/services/helloworld running n/a 4s ago owner=admin, group=micro
We can also have a look at logs of the service to verify it's running.
$ micro logs helloworld
2020-10-06 17:52:21 file=service/service.go:195 level=info Starting [service] helloworld
2020-10-06 17:52:21 file=grpc/grpc.go:902 level=info Server [grpc] Listening on [::]:33975
2020-10-06 17:52:21 file=grpc/grpc.go:732 level=info Registry [service] Registering node: helloworld-67627b23-3336-4b92-a032-09d8d13ecf95
Call the service
$ micro helloworld call --name=Jane
{
"msg": "Hello Jane"
}
Curl it
curl "http://localhost:8080/helloworld?name=John"
Write a client
package main
import (
"context"
"fmt"
"time"
"github.com/micro/micro/v3/service"
proto "github.com/micro/services/helloworld/proto"
)
func main() {
// create and initialise a new service
srv := service.New()
// create the proto client for helloworld
client := proto.NewHelloworldService("helloworld", srv.Client())
// call an endpoint on the service
rsp, err := client.Call(context.Background(), &proto.CallRequest{
Name: "John",
})
if err != nil {
fmt.Println("Error calling helloworld: ", err)
return
}
// print the response
fmt.Println("Response: ", rsp.Message)
// let's delay the process for exiting for reasons you'll see below
time.Sleep(time.Second * 5)
}
Run it
micro run .
For more see the getting started guide.
See the docs for detailed information on the architecture, installation and use.
See LICENSE which makes use of Apache 2.0