10.1 微服务架构概述
10.1.1 微服务架构特点
- 架构对比
type MonolithicApp struct {
UserService *UserService
OrderService *OrderService
ProductService *ProductService
}
type MicroserviceArchitecture struct {
Services []Service
}
type Service interface {
Register() error
Discover() []ServiceInstance
Call() (Response, error)
}
- 微服务设计原则
type MicroserviceDesignPrinciples struct {
Decoupling bool
IndependentDeploy bool
TechDiversity bool
Scalability bool
Resilience bool
}
10.2 服务注册与发现
10.2.1 服务注册
import (
"github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/net/gotel"
)
type ServiceRegistry struct {
services map[string][]ServiceInstance
}
type ServiceInstance struct {
ID string
Name string
Address string
Port int
Metadata map[string]string
Status ServiceStatus
}
type ServiceStatus string
const (
ServiceUp ServiceStatus = "UP"
ServiceDown ServiceStatus = "DOWN"
)
func (r *ServiceRegistry) Register(service ServiceInstance) error {
r.services[service.Name] = append(
r.services[service.Name],
service
)
return nil
}
func (r *ServiceRegistry) Unregister(serviceID string) error {