GitHub - micro/go-micro: A Go microservices framework (original) (raw)

Go Micro is a framework for distributed systems development.

📖 Documentation | Sponsor the project

Overview

Go Micro provides the core requirements for distributed systems development including RPC and Event driven communication. The Go Micro philosophy is sane defaults with a pluggable architecture. We provide defaults to get you started quickly but everything can be easily swapped out.

Features

Go Micro abstracts away the details of distributed systems. Here are the main features.

Getting Started

To make use of Go Micro

go get go-micro.dev/v5@latest

Create a service and register a handler

package main

import ( "go-micro.dev/v5" )

type Request struct { Name string json:"name" }

type Response struct { Message string json:"message" }

type Say struct{}

func (h *Say) Hello(ctx context.Context, req *Request, rsp *Response) error { rsp.Message = "Hello " + req.Name return nil }

func main() { // create the service service := micro.New("helloworld")

    // register handler
    service.Handle(new(Say))

    // run the service
    service.Run()

}

Set a fixed address

service := micro.NewService( micro.Name("helloworld"), micro.Address(":8080"), )

Call it via curl

curl -XPOST
-H 'Content-Type: application/json'
-H 'Micro-Endpoint: Say.Hello'
-d '{"name": "alice"}'
http://localhost:8080

Experimental

There's a new genai package for generative AI capabilities.

Protobuf

Install the code generator and see usage in the docs:

go install go-micro.dev/v5/cmd/protoc-gen-micro@latest

Docs: internal/website/docs/getting-started.md

Command line

Install the CLI and see usage in the docs:

go install go-micro.dev/v5/cmd/micro@latest

Docs: internal/website/docs

Package reference: https://pkg.go.dev/go-micro.dev/v5

Selected topics:

Adopters