Documentation
¶
Overview ¶
Package nacos 提供 registry 接口的 Nacos 实现。
本包封装 nacos-sdk-go 的 naming_client 和 config_client, 实现 registry 包定义的 Registrar、Discoverer、Subscriber 和 ConfigStore 接口。
与 ekit/nacos 包的关系 ¶
ekit/nacos SDK 薄封装:Bootstrap 配置、NewNamingClient/NewConfigClient 工厂 ekit/registry provider 无关的抽象接口 ekit/registry/nacos(本包) 将 SDK client 适配为 registry 接口
典型用法:
本包**的目录名是 nacosimpl,但包名是 nacos**(与 registry/nacos 同名)⇒ import 时必须起别名,否则与 registry/nacos 同时 import 时会「nacos redeclared」。 org 内既有消费方一律按 `nacosimpl "github.com/oekit/registry/nacosimpl"` 引入。
import nacosimpl "github.com/oekit/registry/nacosimpl"
namingClient, _ := nacos.NewNamingClient(cfg)
configClient, _ := nacos.NewConfigClient(cfg)
reg, err := nacosimpl.NewRegistrar(namingClient, nacosimpl.WithRegistrarGroup(cfg.Group))
if err != nil {
return err
}
disc, err := nacosimpl.NewDiscoverer(namingClient, nacosimpl.WithDiscovererGroup(cfg.Group))
if err != nil {
return err
}
sub, err := nacosimpl.NewSubscriber(namingClient, nacosimpl.WithSubscriberGroup(cfg.Group))
if err != nil {
return err
}
store, err := nacosimpl.NewConfigStore(configClient)
if err != nil {
return err
}
所有实现均满足并发安全要求(底层 SDK client 自身并发安全)。
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrNilClient = errors.New("registry/nacos: client must be non-nil")
ErrNilClient 表示构造时传入了 nil 的 SDK client。
Functions ¶
Types ¶
type ConfigStore ¶
type ConfigStore struct {
// contains filtered or unexported fields
}
ConfigStore 实现 registry.ConfigStore 接口,基于 Nacos config client。
从 Nacos 配置中心拉取和监听服务运行时配置(如超时、重试、LB 策略)。
func NewConfigStore ¶
func NewConfigStore(client config_client.IConfigClient) (*ConfigStore, error)
NewConfigStore 创建基于 Nacos 的配置存储。
必须传入非 nil 的 configClient,否则返回 ErrNilClient。
func (*ConfigStore) ListenConfig ¶
func (s *ConfigStore) ListenConfig(ctx context.Context, dataID, group string, onChange func(data string)) error
ListenConfig 监听指定 dataID 的配置变更。
当配置内容变化时,回调 onChange 并传入最新内容字符串。
func (*ConfigStore) StopListenConfig ¶
func (s *ConfigStore) StopListenConfig(ctx context.Context, dataID, group string) error
StopListenConfig 停止监听指定 dataID 的配置变更。
type Discoverer ¶
type Discoverer struct {
// contains filtered or unexported fields
}
Discoverer 实现 registry.Discoverer 接口,基于 Nacos naming client。
只返回健康实例(HealthyOnly=true)。
func NewDiscoverer ¶
func NewDiscoverer(client naming_client.INamingClient, opts ...DiscovererOption) (*Discoverer, error)
NewDiscoverer 创建基于 Nacos 的服务发现器。
必须传入非 nil 的 namingClient,否则返回 ErrNilClient。
func (*Discoverer) Discover ¶
Discover 根据服务名称从 Nacos 拉取健康实例列表。
Group 使用 Discoverer 的默认值,Clusters 使用 Discoverer 的默认值。
func (*Discoverer) DiscoverAll ¶
func (d *Discoverer) DiscoverAll(ctx context.Context, serviceName string) ([]registry.Instance, error)
DiscoverAll 根据服务名称从 Nacos 拉取全部实例列表(包括不健康的实例)。
Group 和 Clusters 使用 Discoverer 的默认值。
type DiscovererOption ¶
type DiscovererOption func(*Discoverer)
DiscovererOption 是 Discoverer 的配置选项函数类型。
func WithDiscovererClusters ¶
func WithDiscovererClusters(clusters ...string) DiscovererOption
WithDiscovererClusters 设置发现器查询的集群列表。 默认空(查询所有集群)。
func WithDiscovererGroup ¶
func WithDiscovererGroup(group string) DiscovererOption
WithDiscovererGroup 设置发现器使用的默认服务分组。 默认值 "DEFAULT_GROUP"。
type Registrar ¶
type Registrar struct {
// contains filtered or unexported fields
}
Registrar 实现 registry.Registrar 接口,基于 Nacos naming client。
实例以临时模式(Ephemeral=true,心跳维持)注册,适合 AP 场景。 Group 和 Cluster 在构造时指定,作为该 Registrar 所有注册操作的默认值。
func NewRegistrar ¶
func NewRegistrar(client naming_client.INamingClient, opts ...RegistrarOption) (*Registrar, error)
NewRegistrar 创建基于 Nacos 的服务注册器。
必须传入非 nil 的 namingClient,否则返回 ErrNilClient。
func (*Registrar) Deregister ¶
Deregister 从 Nacos 注销服务实例。
inst.Group / inst.Cluster 非空时覆盖 Registrar 默认值。
type RegistrarOption ¶
type RegistrarOption func(*Registrar)
RegistrarOption 是 Registrar 的配置选项函数类型。
func WithRegistrarCluster ¶
func WithRegistrarCluster(cluster string) RegistrarOption
WithRegistrarCluster 设置注册器使用的默认集群名称。 默认值空字符串(Nacos SDK 内部使用 "DEFAULT")。
func WithRegistrarGroup ¶
func WithRegistrarGroup(group string) RegistrarOption
WithRegistrarGroup 设置注册器使用的默认服务分组。 默认值 "DEFAULT_GROUP"。
type Subscriber ¶
type Subscriber struct {
// contains filtered or unexported fields
}
Subscriber 实现 registry.Subscriber 接口,基于 Nacos naming client。
利用 Nacos 的推送机制,当服务实例列表变化时回调注册的 callback。
func NewSubscriber ¶
func NewSubscriber(client naming_client.INamingClient, opts ...SubscriberOption) (*Subscriber, error)
NewSubscriber 创建基于 Nacos 的服务订阅器。
必须传入非 nil 的 namingClient,否则返回 ErrNilClient。
func (*Subscriber) Subscribe ¶
func (s *Subscriber) Subscribe(ctx context.Context, serviceName string, cb func([]registry.Instance)) error
Subscribe 订阅指定服务的实例变更。
当 Nacos 推送实例变更时,将 SDK 的 model.Instance 列表转换为 provider 无关的 registry.Instance 列表后回调 cb。
func (*Subscriber) Unsubscribe ¶
func (s *Subscriber) Unsubscribe(ctx context.Context, serviceName string) error
Unsubscribe 取消订阅指定服务的实例变更。
type SubscriberOption ¶
type SubscriberOption func(*Subscriber)
SubscriberOption 是 Subscriber 的配置选项函数类型。
func WithSubscriberGroup ¶
func WithSubscriberGroup(group string) SubscriberOption
WithSubscriberGroup 设置订阅器使用的默认服务分组。 默认值 "DEFAULT_GROUP"。