ServiceDiscovery
ServiceDiscovery
ServiceDiscovery 接口用于列出服务和实例列表
ac := aggregate.NewController(aggregate.Options{
MeshHolder: e,
})
e.ServiceDiscovery = acaggregate Controller
pilot/pkg/serviceregistry/aggregate/controller.go
type Controller struct {
registries []serviceregistry.Instance
storeLock sync.RWMutex
meshHolder mesh.Holder
running bool
}其主要包含了service registry的实例。 单个service registry结合了服务发现和用于管理异步事件的控制器的功能。
type Instance interface {
model.Controller
model.ServiceDiscovery
// Provider backing this service registry (i.e. Kubernetes etc.)
Provider() ProviderID
// Cluster for which the service registry applies. Only needed for multicluster systems.
Cluster() string
}实现
kube controller
pilot/pkg/serviceregistry/kube/controller/controller.go Controller
对于kube来说直接读取servicesMap
serviceentrystore
pilot/pkg/serviceregistry/serviceentry/servicediscovery.go ServiceEntryStore
可以看到对于ServiceEntryStore从各个store里面获取ServiceEntries
Last updated
Was this helpful?