Skip to content

moocdev/micro

 
 

Micro Go.Dev reference License

Micro is a distributed cloud operating system.

Overview

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.

Contents

  • 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

Getting Started

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.

Usage

See the docs for detailed information on the architecture, installation and use.

License

See LICENSE which makes use of Apache 2.0

About

A distributed cloud operating system

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 98.9%
  • Other 1.1%