Documentation
¶
Index ¶
Constants ¶
View Source
const ( // DefaultNamespace 是 etcd 轻量实现下的默认命名空间。 DefaultNamespace = "default" // DefaultCacheTTL 是本地 endpoint 缓存的默认有效期。 DefaultCacheTTL = 5 * time.Second )
Variables ¶
This section is empty.
Functions ¶
func NewConnectionManager ¶
func NewConnectionManager(client *clientv3.Client, conf *Conf, options microInvocation.ConnectionManagerOptions) (*microInvocation.ConnectionManager, error)
NewConnectionManager 创建基于 etcd Locator 的连接管理器。
该辅助函数的目标是减少调用方样板代码,让业务侧更容易直接接入: - etcd 轻量服务定位 - go-micro/invocation 的统一连接管理
Types ¶
type Conf ¶
type Conf struct {
// Namespace 是默认命名空间。
// 当 ServiceRef 未显式提供 namespace 时,可回退到该值。
Namespace string `json:"namespace"`
// DefaultPort 是默认 gRPC 端口。
DefaultPort uint16 `json:"default_port"`
// ClusterDomain 是 service DNS 所使用的集群域。
ClusterDomain string `json:"cluster_domain"`
// ResolverScheme 是最终生成 gRPC target 时使用的 resolver scheme。
ResolverScheme string `json:"resolver_scheme"`
// PreferServiceDNS 表示优先直接返回 service 级 DNS 目标。
//
// 适用场景:
// - 已通过 CoreDNS 或其他机制提供稳定服务名;
// - 期望让 etcd 轻量实现更接近 K8s + Istio 的调用体验。
//
// 若为 false,则 Locator 会从 etcd 中读取实例列表,并在本地做轻量 endpoint 选择。
PreferServiceDNS bool `json:"prefer_service_dns"`
// CacheTTL 表示 endpoint 列表缓存有效期。
CacheTTL time.Duration `json:"cache_ttl"`
}
Conf 定义 etcd invocation 轻量实现的配置。
该配置不再表达旧 registry 模型中的节点注册语义, 而是围绕“如何把 ServiceRef 解析成 Target”组织。
type Locator ¶
type Locator struct {
// contains filtered or unexported fields
}
Locator 是基于 etcd 的 invocation 定位器。
它支持两种模式: 1. PreferServiceDNS=true:直接返回 service 级 DNS 目标; 2. PreferServiceDNS=false:读取 etcd 中已注册的实例列表,在本地做轻量 endpoint 选择。
这样既能兼容“类 service mesh”的统一调用语义, 也能在没有稳定 DNS 的场景下直接工作。
func NewLocator ¶
NewLocator 创建 etcd invocation 定位器。
func (*Locator) Resolve ¶
func (l *Locator) Resolve(ctx context.Context, ref microInvocation.ServiceRef) (microInvocation.Target, error)
Resolve 根据 ServiceRef 解析最终 Target。
Click to show internal directories.
Click to hide internal directories.