sd

package
v0.3.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 26, 2023 License: Apache-2.0 Imports: 12 Imported by: 2

README

1 - 注册与发现

服务注册发现均由etcd实现,需通过证书访问。

https://node1.example.com:2379
https://node2.example.com:2379
https://node3.example.com:2379

1.1 - 注册路径

/${root_path}/${namespace}/${service_name}/${endpoint_name}/${service_addr}
参数 说明 示例
root_path 注册的根地址 默认为:services
namespace 命名空间 默认为:default
endpoint_name 微服务提供地址的父级 统一固定为:endpoints
endpoint_addr 具体一个微服务的地址 比如:lb.example.com:10080

示例:

/services/default/opensearch.v1.monitors.api.example.com/endpoints/c1.k8s.example.com:60060
/services/default/opensearch.v1.monitors.api.example.com/endpoints/c2.k8s.example.com:60060
/services/default/opensearch.v1.monitors.api.example.com/endpoints/c3.k8s.example.com:60060

2 - 使用示例

serviceName := "opensearch.v1.monitors"
publicAddress := "lb.example.com:10080"

sd.Home("service", "namespace")

logger := logrus.WithFields(logrus.Fields{"service_name": serviceName})

connector, err := sd.NewConnector(logger, sd.ETCDV3, "http://127.0.0.1:2379")
if err != nil {
}

// set tls
/*
tls := &sd.TLSInfo{
    CAFile:   lc.Discoverer.TLS.CAFile,
    CertFile: lc.Discoverer.TLS.CertFile,
    KeyFile:  lc.Discoverer.TLS.KeyFile,
}
connector.WithTLSInfo(tls)
*/

reg, err := sd.Register(connector, serviceName, publicAddress, "register value", 30)
if err != nil {
}

defer func() {
    if err := reg.Deregister(); err != nil {
        return
    }
}()

Documentation

Overview

Package sd 提供服务注册与发现

Index

Constants

View Source
const (
	// ETCDV3 xx
	ETCDV3 = iota
)

Variables

View Source
var (
	// Prefix xx
	Prefix = "service"
	// Namespace xx
	Namespace = "default"
	// Scheme xx
	Scheme = "grpc-kit"
)

Functions

func Home

func Home(prefix, namespace string)

Home 用于设置注册服务的前缀

Types

type Connector

type Connector struct {
	Driver int
	Hosts  string
	TLS    *TLSInfo
	// contains filtered or unexported fields
}

Connector 连接器

func NewConnector

func NewConnector(logger *logrus.Entry, driver int, hosts string) (*Connector, error)

NewConnector 用于注册的属性设置

func (*Connector) WithTLSInfo

func (c *Connector) WithTLSInfo(tls *TLSInfo)

WithTLSInfo 设置认证

type Registry

type Registry interface {
	// Register 注册服务信息至etcd等
	Register(ctx context.Context, name, addr, val string, ttl int64) error
	// Deregister 删除服务信息至etcd等
	Deregister() error
	// Build 实现 resolver.Builder
	Build(resolver.Target, resolver.ClientConn, resolver.BuildOptions) (resolver.Resolver, error)
	// Scheme 实现 resolver.Builder
	Scheme() string
}

Registry 服务注册发现,TODO:(之后会进行改造,主要支持kubernetes)

func Register

func Register(conn *Connector, name, addr, val string, ttl int64) (Registry, error)

Register 注册一个服务

type TLSInfo

type TLSInfo struct {
	CAFile   string
	CertFile string
	KeyFile  string
}

TLSInfo 证书结构

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL