Documentation
¶
Overview ¶
Package consul 提供 Consul 配置中心实现
Package consul 基于 Consul 提供注册中心实现。
该包将 Consul 与 go-boot 服务发现和注册中心接口集成, 支持服务注册、发现和阻塞查询(Watch)。
定义:
- ConsulRegistry: 注册中心实现了 center.Registry 接口
- Config: Consul 配置
- Option: 配置选项函数
快速开始:
// 创建 Consul 注册中心
registry, err := consul.NewConsulRegistry(
consul.WithAddress("127.0.0.1:8500"),
)
// 注册服务
registry.Register(ctx, center.InstanceInfo{
ServiceName: "my-service",
Host: "127.0.0.1",
Port: 8080,
})
Index ¶
- type Config
- type ConsulConfigCenter
- type ConsulRegistry
- func (r *ConsulRegistry) Deregister(_ context.Context, info center.InstanceInfo) error
- func (r *ConsulRegistry) Discover(_ context.Context, serviceName string) ([]center.InstanceInfo, error)
- func (r *ConsulRegistry) Register(_ context.Context, info center.InstanceInfo) error
- func (r *ConsulRegistry) Watch(ctx context.Context, serviceName string) (<-chan []center.InstanceInfo, error)
- type Option
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
Address string
Datacenter string
Token string
TTL time.Duration
Container core.Container
}
Config Consul 注册中心配置。
type ConsulConfigCenter ¶
type ConsulConfigCenter struct {
// contains filtered or unexported fields
}
func NewConsulConfigCenter ¶
func NewConsulConfigCenter(cfg *config.ConfigCenterConfig) (*ConsulConfigCenter, error)
func (*ConsulConfigCenter) Load ¶
func (c *ConsulConfigCenter) Load() (config.ConfigData, error)
Load 加载所有配置数据
func (*ConsulConfigCenter) Watch ¶
func (c *ConsulConfigCenter) Watch(key string, callback func(config.ConfigData)) error
Watch 监控配置变更
type ConsulRegistry ¶
type ConsulRegistry struct {
// contains filtered or unexported fields
}
ConsulRegistry 基于 Consul 实现的注册中心。 使用 Consul HTTP API 实现服务注册、发现和阻塞查询(Watch)。
func NewConsulRegistry ¶
func NewConsulRegistry(opts ...Option) (*ConsulRegistry, error)
NewConsulRegistry 创建 Consul 注册中心实例。 支持通过 Option 配置地址、数据中心、Token 等参数。
func (*ConsulRegistry) Deregister ¶
func (r *ConsulRegistry) Deregister(_ context.Context, info center.InstanceInfo) error
Deregister 从 Consul 注销指定服务实例。
func (*ConsulRegistry) Discover ¶
func (r *ConsulRegistry) Discover(_ context.Context, serviceName string) ([]center.InstanceInfo, error)
Discover 发现指定服务的健康实例列表。 通过 Consul Health API 查询,仅返回通过健康检查的实例。
func (*ConsulRegistry) Register ¶
func (r *ConsulRegistry) Register(_ context.Context, info center.InstanceInfo) error
Register 向 Consul 注册一个服务实例。 如果配置了 TTL,同时注册健康检查。 权重信息存储在 Meta["weight"] 中。
func (*ConsulRegistry) Watch ¶
func (r *ConsulRegistry) Watch(ctx context.Context, serviceName string) (<-chan []center.InstanceInfo, error)
Watch 监听指定服务的实例变化。 使用 Consul 的阻塞查询(Blocking Query)实现长轮询, 通过 WaitIndex 增量获取变化。Watch 的返回结果与 Discover 完全一致。
Click to show internal directories.
Click to hide internal directories.