micro--go-micro
c7657f73f4
goreleaser / goreleaser (push) Has been cancelled
* test(harness): read agent plan from the scoped store
The store-scoping change moved an agent's plan from the default table
key agent/{name}/plan to its own table (database "agent", table {name},
key "plan"). The plan-delegate harness tests still read the old key and
failed with 'not found'; read through store.Scope(mem, "agent", name)
like the agent does.
* docs: orient agents-first across README, landing, and docs overview
Lead with agents (then services and flows), surface MCP + A2A as the
interop story, and frame agents as services. Landing hero and feature
grid reordered agents-first with an A2A gateway card.
* v6: module path go-micro.dev/v6, TLS secure by default, NewService
Cut v6. Three breaking changes, bundled so the major bump is paid once:
- Module path go-micro.dev/v5 -> go-micro.dev/v6 across all imports + go.mod.
- TLS verification on by default (was off). MICRO_TLS_SECURE removed;
MICRO_TLS_INSECURE=true opts out for self-signed/dev.
- micro.NewService(name, opts...) is the canonical service constructor,
symmetric with NewAgent/NewFlow; micro.New kept as a deprecated alias;
the old name-less NewService(opts...) removed. Generators emit NewService.
Also ports the JWT auth token provider in-module (go-micro.dev/v6/auth/jwt/token
on golang-jwt/jwt/v5), dropping the v5-pinned github.com/micro/plugins/v5/auth/jwt
and the deprecated dgrijalva/jwt-go.
Docs/README/landing updated to v6 and @latest; v5->v6 migration guide added;
CHANGELOG cut as [6.0.0]. Blog posts left at their historical versions.
---------
Co-authored-by: Claude <noreply@anthropic.com>
78 行
3.3 KiB
Markdown
78 行
3.3 KiB
Markdown
---
|
|
layout: default
|
|
---
|
|
|
|
## Architecture
|
|
|
|
<img src="/images/generated/architecture.jpg" alt="Go Micro architecture" style="width: 100%; border-radius: 8px; margin: 1rem 0 1.5rem;" />
|
|
|
|
An overview of the Go Micro architecture.
|
|
|
|
## Overview
|
|
|
|
Go Micro abstracts away the details of distributed systems. Here are the main features.
|
|
|
|
- **Authentication** - Auth is built in as a first class citizen. Authentication and authorization enable secure
|
|
zero trust networking by providing every service an identity and certificates. This additionally includes rule
|
|
based access control.
|
|
|
|
- **Dynamic Config** - Load and hot reload dynamic config from anywhere. The config interface provides a way to load application
|
|
level config from any source such as env vars, file, etcd. You can merge the sources and even define fallbacks.
|
|
|
|
- **Data Storage** - A simple data store interface to read, write and delete records. It includes support for many storage backends
|
|
in the plugins repo. State and persistence becomes a core requirement beyond prototyping and Micro looks to build that into the framework.
|
|
|
|
- **Service Discovery** - Automatic service registration and name resolution. Service discovery is at the core of micro service
|
|
development. When service A needs to speak to service B it needs the location of that service. The default discovery mechanism is
|
|
multicast DNS (mdns), a zeroconf system.
|
|
|
|
- **Load Balancing** - Client side load balancing built on service discovery. Once we have the addresses of any number of instances
|
|
of a service we now need a way to decide which node to route to. We use random hashed load balancing to provide even distribution
|
|
across the services and retry a different node if there's a problem.
|
|
|
|
- **Message Encoding** - Dynamic message encoding based on content-type. The client and server will use codecs along with content-type
|
|
to seamlessly encode and decode Go types for you. Any variety of messages could be encoded and sent from different clients. The client
|
|
and server handle this by default. This includes protobuf and json by default.
|
|
|
|
- **RPC Client/Server** - RPC based request/response with support for bidirectional streaming. We provide an abstraction for synchronous
|
|
communication. A request made to a service will be automatically resolved, load balanced, dialled and streamed.
|
|
|
|
- **Async Messaging** - PubSub is built in as a first class citizen for asynchronous communication and event driven architectures.
|
|
Event notifications are a core pattern in micro service development. The default messaging system is a HTTP event message broker.
|
|
|
|
- **Pluggable Interfaces** - Go Micro makes use of Go interfaces for each distributed system abstraction. Because of this these interfaces
|
|
are pluggable and allows Go Micro to be runtime agnostic. You can plugin any underlying technology.
|
|
|
|
## Design
|
|
|
|
We will share more on architecture soon
|
|
|
|
## Related
|
|
|
|
- [ADR Index](architecture/index.md)
|
|
- [Configuration](config.html)
|
|
- [Plugins](plugins.html)
|
|
|
|
## Example Usage
|
|
|
|
Here's a minimal Go Micro service demonstrating the architecture:
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"go-micro.dev/v6"
|
|
"log"
|
|
)
|
|
|
|
func main() {
|
|
service := micro.NewService(
|
|
micro.Name("example"),
|
|
)
|
|
service.Init()
|
|
if err := service.Run(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
```
|