Documentation
¶
Overview ¶
* KV 存储相关方法 提供对etcd KV存储的封装,包括Put、Get等操作
app.EnableEtcdDiscovery(nil) discovery := app.EtcdDiscovery
// 存白名单(初始化或管理接口调用)
discovery.Put("gateway/public_routes", []string{
"/v1/auth/user/login",
"/v1/auth/user/register",
"/v1/oauth",
})
// 读白名单 var routes []string
if err := discovery.Get("gateway/public_routes", &routes); err != nil {
// key 不存在时用本地默认值
routes = []string{"/v1/auth/user/login", "/v1/auth/user/register"}
}
// watch 白名单变化(多网关实时同步)
cancel, _ := discovery.WatchKV("gateway/public_routes", func(key, value string) {
var newRoutes []string
json.Unmarshal([]byte(value), &newRoutes)
// 更新内存中的白名单
updatePublicRoutes(newRoutes)
})
defer cancel()
Index ¶
- Constants
- func Dial(serviceName string, opts ...grpc.DialOption) (*grpc.ClientConn, error)
- func InitEtcdResolver(discovery *Discovery)
- type Discovery
- func (d *Discovery) Close() error
- func (d *Discovery) Delete(key string) error
- func (d *Discovery) Get(key string, out any) error
- func (d *Discovery) GetPrefix(prefix string) (map[string]string, error)
- func (d *Discovery) GetServices(serviceName string) []*ServiceInfo
- func (d *Discovery) GetString(key string) (string, error)
- func (d *Discovery) Put(key string, value any, opts ...clientv3.OpOption) error
- func (d *Discovery) PutString(key string, value string, opts ...clientv3.OpOption) error
- func (d *Discovery) Subscribe(serviceName string, fn func()) func()
- func (d *Discovery) Watch(serviceName string) error
- func (d *Discovery) WatchKV(key string, onChange func(key, value string)) (cancel func(), err error)
- func (d *Discovery) WatchPrefix(prefix string, onChange func(key, value string)) (cancel func(), err error)
- type EtcdResolverBuilder
- type Options
- type Registry
- type ServiceInfo
Constants ¶
View Source
const KVPrefix = "/config/"
KVPrefix 配置中心默认前缀
View Source
const Scheme = "etcd"
Variables ¶
This section is empty.
Functions ¶
func Dial ¶
func Dial(serviceName string, opts ...grpc.DialOption) (*grpc.ClientConn, error)
Dial 创建基于 etcd 服务发现的 gRPC 客户端连接
func InitEtcdResolver ¶
func InitEtcdResolver(discovery *Discovery)
Types ¶
type Discovery ¶
type Discovery struct {
// contains filtered or unexported fields
}
func NewDiscovery ¶
func (*Discovery) GetServices ¶
func (d *Discovery) GetServices(serviceName string) []*ServiceInfo
type EtcdResolverBuilder ¶
type EtcdResolverBuilder struct {
// contains filtered or unexported fields
}
func (*EtcdResolverBuilder) Build ¶
func (b *EtcdResolverBuilder) Build( target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions, ) (resolver.Resolver, error)
func (*EtcdResolverBuilder) Scheme ¶
func (b *EtcdResolverBuilder) Scheme() string
type Options ¶
type Options struct {
// etcd 客户端配置
Endpoints []string
Username string
Password string
DialTimeout time.Duration
// 服务注册配置
ServiceName string
ServiceAddr string
ServiceID string
TTL int64 // 租约时间(秒)
Version string
// 元数据
Metadata map[string]string
}
func DefaultOptions ¶
func DefaultOptions() *Options
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
func NewRegistry ¶
Click to show internal directories.
Click to hide internal directories.