日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Prometheus源码学习(4) 通过2.24对实例化Discoverer代码的改进学习依赖倒置

發(fā)布時(shí)間:2024/3/24 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Prometheus源码学习(4) 通过2.24对实例化Discoverer代码的改进学习依赖倒置 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前面讀的是 2.19.2 版本的代碼,最新更新了 2.24.1,發(fā)現(xiàn)在實(shí)例化 Discoverer 時(shí)改進(jìn)了設(shè)計(jì)。這個(gè)改變是在 2.21 做出的。

2.19.2 中的實(shí)現(xiàn)方式

  • 在 discovery.Manager 結(jié)構(gòu)體中包含了一個(gè) *provider 的 slice
  • type Manager struct {...// providers keeps track of SD providers.providers []*provider... }
  • provider 接口提包含了一個(gè) Discoverer 接口類型的字段
  • // provider holds a Discoverer instance, its configuration and its subscribers. type provider struct {name stringd Discoverersubs []stringconfig interface{} }
  • 實(shí)例化 Discoverer 是在 *Manager 的 registerProviders() 方法中實(shí)現(xiàn)的,每個(gè) job 有一套 Provider
  • 方法簽名為

    func (m *Manager) registerProviders(cfg sd_config.ServiceDiscoveryConfig, setName string) int

    參數(shù) cfg 是解析配置文件參數(shù)得到的各種 SD 類型

    // ServiceDiscoveryConfig configures lists of different service discovery mechanisms. type ServiceDiscoveryConfig struct {// List of labeled target groups for this job.StaticConfigs []*targetgroup.Group `yaml:"static_configs,omitempty"`// List of DNS service discovery configurations.DNSSDConfigs []*dns.SDConfig `yaml:"dns_sd_configs,omitempty"`// List of file service discovery configurations.FileSDConfigs []*file.SDConfig `yaml:"file_sd_configs,omitempty"`// List of Consul service discovery configurations.ConsulSDConfigs []*consul.SDConfig `yaml:"consul_sd_configs,omitempty"`// List of DigitalOcean service discovery configurations.DigitalOceanSDConfigs []*digitalocean.SDConfig `yaml:"digitalocean_sd_configs,omitempty"`// List of Docker Swarm service discovery configurations.DockerSwarmSDConfigs []*dockerswarm.SDConfig `yaml:"dockerswarm_sd_configs,omitempty"`// List of Serverset service discovery configurations.ServersetSDConfigs []*zookeeper.ServersetSDConfig `yaml:"serverset_sd_configs,omitempty"`// NerveSDConfigs is a list of Nerve service discovery configurations.NerveSDConfigs []*zookeeper.NerveSDConfig `yaml:"nerve_sd_configs,omitempty"`// MarathonSDConfigs is a list of Marathon service discovery configurations.MarathonSDConfigs []*marathon.SDConfig `yaml:"marathon_sd_configs,omitempty"`// List of Kubernetes service discovery configurations.KubernetesSDConfigs []*kubernetes.SDConfig `yaml:"kubernetes_sd_configs,omitempty"`// List of GCE service discovery configurations.GCESDConfigs []*gce.SDConfig `yaml:"gce_sd_configs,omitempty"`// List of EC2 service discovery configurations.EC2SDConfigs []*ec2.SDConfig `yaml:"ec2_sd_configs,omitempty"`// List of OpenStack service discovery configurations.OpenstackSDConfigs []*openstack.SDConfig `yaml:"openstack_sd_configs,omitempty"`// List of Azure service discovery configurations.AzureSDConfigs []*azure.SDConfig `yaml:"azure_sd_configs,omitempty"`// List of Triton service discovery configurations.TritonSDConfigs []*triton.SDConfig `yaml:"triton_sd_configs,omitempty"` }

    方法內(nèi)部首先聲名一個(gè)添加 Discoverer 的閉包函數(shù) add(),閉包函數(shù)的參數(shù)有一個(gè)實(shí)例化 Discoverer 的方法

    add := func(cfg interface{}, newDiscoverer func() (Discoverer, error)) {t := reflect.TypeOf(cfg).String()// 已有的 provider 如果有多個(gè) job 配置了它就把 job_name 追加到 這個(gè)provider 的 subs 中。// 否則就新建 providerfor _, p := range m.providers {if reflect.DeepEqual(cfg, p.config) {p.subs = append(p.subs, setName)level.Info(m.logger).Log("msg", "append subscribers", "sub", p.subs)added = truereturn}}d, err := newDiscoverer()if err != nil {level.Error(m.logger).Log("msg", "Cannot create service discovery", "err", err, "type", t)failedCount++return}provider := provider{name: fmt.Sprintf("%s/%d", t, len(m.providers)),d: d,config: cfg,subs: []string{setName},}m.providers = append(m.providers, &provider)added = true}
  • 遍歷配置文件配置的每種服務(wù)發(fā)現(xiàn)的類型,調(diào)用這種類型的實(shí)例化方法(如 dns.NewDiscovery())來初始化這種SD。
  • for _, c := range cfg.DNSSDConfigs {add(c, func() (Discoverer, error) {return dns.NewDiscovery(*c, log.With(m.logger, "discovery", "dns")), nil})}for _, c := range cfg.FileSDConfigs {add(c, func() (Discoverer, error) {return file.NewDiscovery(c, log.With(m.logger, "discovery", "file")), nil})}for _, c := range cfg.ConsulSDConfigs {add(c, func() (Discoverer, error) {return consul.NewDiscovery(c, log.With(m.logger, "discovery", "consul"))})}...

    這種模式要在 manager.go 文件中導(dǎo)入每一種具體的服務(wù)發(fā)現(xiàn)器,也就是要在抽象層依賴各個(gè)實(shí)現(xiàn)。

    2.24.1 中的實(shí)現(xiàn)方式

  • Manager 包裝 provider 包裝 Discoverer 沒有變化
  • *Manager.registerProviders() 方法的參數(shù)變?yōu)榱?Config 切片,Config 是接口類型,其中要求實(shí)現(xiàn)類要有 NewDiscoverer(DiscovererOptions) (Discoverer, error) 方法。
  • // Configs is a slice of Config values that uses custom YAML marshaling and unmarshaling // to represent itself as a mapping of the Config values grouped by their types. type Configs []Config// A Config provides the configuration and constructor for a Discoverer. type Config interface {// Name returns the name of the discovery mechanism.Name() string// NewDiscoverer returns a Discoverer for the Config// with the given DiscovererOptions.NewDiscoverer(DiscovererOptions) (Discoverer, error) }

    *Manager.registerProviders() 里面的 add 閉包函數(shù)的初始化 Discoverer 方法是調(diào)用接口要求的 NewDiscoverer() 方法

    d, err := cfg.NewDiscoverer(DiscovererOptions{Logger: log.With(m.logger, "discovery", typ),})

    遍歷也簡(jiǎn)化了

    for _, cfg := range cfgs {add(cfg)}
  • 在 main() 里依賴了 /discovery/install,這個(gè)新增的 install 包中導(dǎo)入具體的 SD 作為依賴
  • package installimport (_ "github.com/prometheus/prometheus/discovery/azure" // register azure_ "github.com/prometheus/prometheus/discovery/consul" // register consul_ "github.com/prometheus/prometheus/discovery/digitalocean" // register digitalocean_ "github.com/prometheus/prometheus/discovery/dns" // register dns_ "github.com/prometheus/prometheus/discovery/dockerswarm" // register dockerswarm_ "github.com/prometheus/prometheus/discovery/ec2" // register ec2_ "github.com/prometheus/prometheus/discovery/eureka" // register eureka_ "github.com/prometheus/prometheus/discovery/file" // register file_ "github.com/prometheus/prometheus/discovery/gce" // register gce_ "github.com/prometheus/prometheus/discovery/hetzner" // register hetzner_ "github.com/prometheus/prometheus/discovery/kubernetes" // register kubernetes_ "github.com/prometheus/prometheus/discovery/marathon" // register marathon_ "github.com/prometheus/prometheus/discovery/openstack" // register openstack_ "github.com/prometheus/prometheus/discovery/triton" // register triton_ "github.com/prometheus/prometheus/discovery/zookeeper" // register zookeeper )
  • 每一個(gè)具體的 SD 依賴 /discovery/dicovery,實(shí)現(xiàn)接口的 NewDiscoverer(opts discovery.DiscovererOptions) (discovery.Discoverer, error) 方法
  • // NewDiscoverer returns a Discoverer for the Config. func (c *SDConfig) NewDiscoverer(opts discovery.DiscovererOptions) (discovery.Discoverer, error) {return NewDiscovery(c, opts.Logger), nil }

    返回的是調(diào)用本 SD 自己的 NewDiscovery() 函數(shù)得到的具體的SD實(shí)例

    // NewDiscovery returns a new file discovery for the given paths. func NewDiscovery(conf *SDConfig, logger log.Logger) *Discovery {if logger == nil {logger = log.NewNopLogger()}disc := &Discovery{paths: conf.Files,interval: time.Duration(conf.RefreshInterval),timestamps: make(map[string]float64),logger: logger,}fileSDTimeStamp.addDiscoverer(disc)return disc }

    模式學(xué)習(xí)

    這樣就實(shí)現(xiàn)了由抽象依賴實(shí)現(xiàn)翻轉(zhuǎn)為實(shí)現(xiàn)依賴抽象。

    install 是一個(gè)中介包,main 依賴它,它的內(nèi)部導(dǎo)入各個(gè)具體的 SD 實(shí)現(xiàn)包,這樣集中了多個(gè)具體實(shí)現(xiàn)的導(dǎo)入位置便于修改,也使 main 的導(dǎo)入部分變得簡(jiǎn)潔。

    之前的依賴順序

    #mermaid-svg-xcc1xWU9QtLwBNcH .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .label text{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .node rect,#mermaid-svg-xcc1xWU9QtLwBNcH .node circle,#mermaid-svg-xcc1xWU9QtLwBNcH .node ellipse,#mermaid-svg-xcc1xWU9QtLwBNcH .node polygon,#mermaid-svg-xcc1xWU9QtLwBNcH .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-xcc1xWU9QtLwBNcH .node .label{text-align:center;fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .node.clickable{cursor:pointer}#mermaid-svg-xcc1xWU9QtLwBNcH .arrowheadPath{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-xcc1xWU9QtLwBNcH .flowchart-link{stroke:#333;fill:none}#mermaid-svg-xcc1xWU9QtLwBNcH .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-xcc1xWU9QtLwBNcH .edgeLabel rect{opacity:0.9}#mermaid-svg-xcc1xWU9QtLwBNcH .edgeLabel span{color:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-xcc1xWU9QtLwBNcH .cluster text{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-xcc1xWU9QtLwBNcH .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-xcc1xWU9QtLwBNcH text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-xcc1xWU9QtLwBNcH .actor-line{stroke:grey}#mermaid-svg-xcc1xWU9QtLwBNcH .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-xcc1xWU9QtLwBNcH #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .sequenceNumber{fill:#fff}#mermaid-svg-xcc1xWU9QtLwBNcH #sequencenumber{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH #crosshead path{fill:#333;stroke:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .messageText{fill:#333;stroke:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-xcc1xWU9QtLwBNcH .labelText,#mermaid-svg-xcc1xWU9QtLwBNcH .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-xcc1xWU9QtLwBNcH .loopText,#mermaid-svg-xcc1xWU9QtLwBNcH .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-xcc1xWU9QtLwBNcH .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-xcc1xWU9QtLwBNcH .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-xcc1xWU9QtLwBNcH .noteText,#mermaid-svg-xcc1xWU9QtLwBNcH .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-xcc1xWU9QtLwBNcH .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-xcc1xWU9QtLwBNcH .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-xcc1xWU9QtLwBNcH .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-xcc1xWU9QtLwBNcH .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH .section{stroke:none;opacity:0.2}#mermaid-svg-xcc1xWU9QtLwBNcH .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-xcc1xWU9QtLwBNcH .section2{fill:#fff400}#mermaid-svg-xcc1xWU9QtLwBNcH .section1,#mermaid-svg-xcc1xWU9QtLwBNcH .section3{fill:#fff;opacity:0.2}#mermaid-svg-xcc1xWU9QtLwBNcH .sectionTitle0{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .sectionTitle1{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .sectionTitle2{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .sectionTitle3{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-xcc1xWU9QtLwBNcH .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH .grid path{stroke-width:0}#mermaid-svg-xcc1xWU9QtLwBNcH .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-xcc1xWU9QtLwBNcH .task{stroke-width:2}#mermaid-svg-xcc1xWU9QtLwBNcH .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH .taskText:not([font-size]){font-size:11px}#mermaid-svg-xcc1xWU9QtLwBNcH .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-xcc1xWU9QtLwBNcH .task.clickable{cursor:pointer}#mermaid-svg-xcc1xWU9QtLwBNcH .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-xcc1xWU9QtLwBNcH .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-xcc1xWU9QtLwBNcH .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-xcc1xWU9QtLwBNcH .taskText0,#mermaid-svg-xcc1xWU9QtLwBNcH .taskText1,#mermaid-svg-xcc1xWU9QtLwBNcH .taskText2,#mermaid-svg-xcc1xWU9QtLwBNcH .taskText3{fill:#fff}#mermaid-svg-xcc1xWU9QtLwBNcH .task0,#mermaid-svg-xcc1xWU9QtLwBNcH .task1,#mermaid-svg-xcc1xWU9QtLwBNcH .task2,#mermaid-svg-xcc1xWU9QtLwBNcH .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-xcc1xWU9QtLwBNcH .taskTextOutside0,#mermaid-svg-xcc1xWU9QtLwBNcH .taskTextOutside2{fill:#000}#mermaid-svg-xcc1xWU9QtLwBNcH .taskTextOutside1,#mermaid-svg-xcc1xWU9QtLwBNcH .taskTextOutside3{fill:#000}#mermaid-svg-xcc1xWU9QtLwBNcH .active0,#mermaid-svg-xcc1xWU9QtLwBNcH .active1,#mermaid-svg-xcc1xWU9QtLwBNcH .active2,#mermaid-svg-xcc1xWU9QtLwBNcH .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-xcc1xWU9QtLwBNcH .activeText0,#mermaid-svg-xcc1xWU9QtLwBNcH .activeText1,#mermaid-svg-xcc1xWU9QtLwBNcH .activeText2,#mermaid-svg-xcc1xWU9QtLwBNcH .activeText3{fill:#000 !important}#mermaid-svg-xcc1xWU9QtLwBNcH .done0,#mermaid-svg-xcc1xWU9QtLwBNcH .done1,#mermaid-svg-xcc1xWU9QtLwBNcH .done2,#mermaid-svg-xcc1xWU9QtLwBNcH .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-xcc1xWU9QtLwBNcH .doneText0,#mermaid-svg-xcc1xWU9QtLwBNcH .doneText1,#mermaid-svg-xcc1xWU9QtLwBNcH .doneText2,#mermaid-svg-xcc1xWU9QtLwBNcH .doneText3{fill:#000 !important}#mermaid-svg-xcc1xWU9QtLwBNcH .crit0,#mermaid-svg-xcc1xWU9QtLwBNcH .crit1,#mermaid-svg-xcc1xWU9QtLwBNcH .crit2,#mermaid-svg-xcc1xWU9QtLwBNcH .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-xcc1xWU9QtLwBNcH .activeCrit0,#mermaid-svg-xcc1xWU9QtLwBNcH .activeCrit1,#mermaid-svg-xcc1xWU9QtLwBNcH .activeCrit2,#mermaid-svg-xcc1xWU9QtLwBNcH .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-xcc1xWU9QtLwBNcH .doneCrit0,#mermaid-svg-xcc1xWU9QtLwBNcH .doneCrit1,#mermaid-svg-xcc1xWU9QtLwBNcH .doneCrit2,#mermaid-svg-xcc1xWU9QtLwBNcH .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-xcc1xWU9QtLwBNcH .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-xcc1xWU9QtLwBNcH .milestoneText{font-style:italic}#mermaid-svg-xcc1xWU9QtLwBNcH .doneCritText0,#mermaid-svg-xcc1xWU9QtLwBNcH .doneCritText1,#mermaid-svg-xcc1xWU9QtLwBNcH .doneCritText2,#mermaid-svg-xcc1xWU9QtLwBNcH .doneCritText3{fill:#000 !important}#mermaid-svg-xcc1xWU9QtLwBNcH .activeCritText0,#mermaid-svg-xcc1xWU9QtLwBNcH .activeCritText1,#mermaid-svg-xcc1xWU9QtLwBNcH .activeCritText2,#mermaid-svg-xcc1xWU9QtLwBNcH .activeCritText3{fill:#000 !important}#mermaid-svg-xcc1xWU9QtLwBNcH .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-xcc1xWU9QtLwBNcH g.classGroup text .title{font-weight:bolder}#mermaid-svg-xcc1xWU9QtLwBNcH g.clickable{cursor:pointer}#mermaid-svg-xcc1xWU9QtLwBNcH g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-xcc1xWU9QtLwBNcH g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-xcc1xWU9QtLwBNcH .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-xcc1xWU9QtLwBNcH .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-xcc1xWU9QtLwBNcH .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-xcc1xWU9QtLwBNcH .dashed-line{stroke-dasharray:3}#mermaid-svg-xcc1xWU9QtLwBNcH #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcc1xWU9QtLwBNcH #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcc1xWU9QtLwBNcH #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-xcc1xWU9QtLwBNcH #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-xcc1xWU9QtLwBNcH #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcc1xWU9QtLwBNcH #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcc1xWU9QtLwBNcH #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcc1xWU9QtLwBNcH #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xcc1xWU9QtLwBNcH .commit-id,#mermaid-svg-xcc1xWU9QtLwBNcH .commit-msg,#mermaid-svg-xcc1xWU9QtLwBNcH .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-xcc1xWU9QtLwBNcH g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-xcc1xWU9QtLwBNcH g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-xcc1xWU9QtLwBNcH g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-xcc1xWU9QtLwBNcH .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-xcc1xWU9QtLwBNcH .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-xcc1xWU9QtLwBNcH .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-xcc1xWU9QtLwBNcH .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-xcc1xWU9QtLwBNcH .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-xcc1xWU9QtLwBNcH .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-xcc1xWU9QtLwBNcH .edgeLabel text{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xcc1xWU9QtLwBNcH .node circle.state-start{fill:black;stroke:black}#mermaid-svg-xcc1xWU9QtLwBNcH .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-xcc1xWU9QtLwBNcH #statediagram-barbEnd{fill:#9370db}#mermaid-svg-xcc1xWU9QtLwBNcH .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-xcc1xWU9QtLwBNcH .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-xcc1xWU9QtLwBNcH .statediagram-state .divider{stroke:#9370db}#mermaid-svg-xcc1xWU9QtLwBNcH .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-xcc1xWU9QtLwBNcH .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-xcc1xWU9QtLwBNcH .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-xcc1xWU9QtLwBNcH .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-xcc1xWU9QtLwBNcH .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-xcc1xWU9QtLwBNcH .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-xcc1xWU9QtLwBNcH .note-edge{stroke-dasharray:5}#mermaid-svg-xcc1xWU9QtLwBNcH .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-xcc1xWU9QtLwBNcH .error-icon{fill:#522}#mermaid-svg-xcc1xWU9QtLwBNcH .error-text{fill:#522;stroke:#522}#mermaid-svg-xcc1xWU9QtLwBNcH .edge-thickness-normal{stroke-width:2px}#mermaid-svg-xcc1xWU9QtLwBNcH .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-xcc1xWU9QtLwBNcH .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-xcc1xWU9QtLwBNcH .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-xcc1xWU9QtLwBNcH .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-xcc1xWU9QtLwBNcH .marker{fill:#333}#mermaid-svg-xcc1xWU9QtLwBNcH .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-xcc1xWU9QtLwBNcH {color: rgba(0, 0, 0, 0.75);font: ;}maindiscoveryconsulfileec2kubernetes

    如果添加一個(gè) SD,需要添加 discovery/config/config.go 和 discovery/manager.go 中的依賴,并且要添加 *Manager.registerProviders() 的代碼


    現(xiàn)在的依賴順序

    #mermaid-svg-bYPvnATnn8JbkKVI .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-bYPvnATnn8JbkKVI .label text{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI .node rect,#mermaid-svg-bYPvnATnn8JbkKVI .node circle,#mermaid-svg-bYPvnATnn8JbkKVI .node ellipse,#mermaid-svg-bYPvnATnn8JbkKVI .node polygon,#mermaid-svg-bYPvnATnn8JbkKVI .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-bYPvnATnn8JbkKVI .node .label{text-align:center;fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI .node.clickable{cursor:pointer}#mermaid-svg-bYPvnATnn8JbkKVI .arrowheadPath{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-bYPvnATnn8JbkKVI .flowchart-link{stroke:#333;fill:none}#mermaid-svg-bYPvnATnn8JbkKVI .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-bYPvnATnn8JbkKVI .edgeLabel rect{opacity:0.9}#mermaid-svg-bYPvnATnn8JbkKVI .edgeLabel span{color:#333}#mermaid-svg-bYPvnATnn8JbkKVI .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-bYPvnATnn8JbkKVI .cluster text{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-bYPvnATnn8JbkKVI .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-bYPvnATnn8JbkKVI text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-bYPvnATnn8JbkKVI .actor-line{stroke:grey}#mermaid-svg-bYPvnATnn8JbkKVI .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-bYPvnATnn8JbkKVI .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-bYPvnATnn8JbkKVI #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-bYPvnATnn8JbkKVI .sequenceNumber{fill:#fff}#mermaid-svg-bYPvnATnn8JbkKVI #sequencenumber{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI #crosshead path{fill:#333;stroke:#333}#mermaid-svg-bYPvnATnn8JbkKVI .messageText{fill:#333;stroke:#333}#mermaid-svg-bYPvnATnn8JbkKVI .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-bYPvnATnn8JbkKVI .labelText,#mermaid-svg-bYPvnATnn8JbkKVI .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-bYPvnATnn8JbkKVI .loopText,#mermaid-svg-bYPvnATnn8JbkKVI .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-bYPvnATnn8JbkKVI .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-bYPvnATnn8JbkKVI .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-bYPvnATnn8JbkKVI .noteText,#mermaid-svg-bYPvnATnn8JbkKVI .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-bYPvnATnn8JbkKVI .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-bYPvnATnn8JbkKVI .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-bYPvnATnn8JbkKVI .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-bYPvnATnn8JbkKVI .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI .section{stroke:none;opacity:0.2}#mermaid-svg-bYPvnATnn8JbkKVI .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-bYPvnATnn8JbkKVI .section2{fill:#fff400}#mermaid-svg-bYPvnATnn8JbkKVI .section1,#mermaid-svg-bYPvnATnn8JbkKVI .section3{fill:#fff;opacity:0.2}#mermaid-svg-bYPvnATnn8JbkKVI .sectionTitle0{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI .sectionTitle1{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI .sectionTitle2{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI .sectionTitle3{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-bYPvnATnn8JbkKVI .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI .grid path{stroke-width:0}#mermaid-svg-bYPvnATnn8JbkKVI .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-bYPvnATnn8JbkKVI .task{stroke-width:2}#mermaid-svg-bYPvnATnn8JbkKVI .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI .taskText:not([font-size]){font-size:11px}#mermaid-svg-bYPvnATnn8JbkKVI .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-bYPvnATnn8JbkKVI .task.clickable{cursor:pointer}#mermaid-svg-bYPvnATnn8JbkKVI .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-bYPvnATnn8JbkKVI .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-bYPvnATnn8JbkKVI .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-bYPvnATnn8JbkKVI .taskText0,#mermaid-svg-bYPvnATnn8JbkKVI .taskText1,#mermaid-svg-bYPvnATnn8JbkKVI .taskText2,#mermaid-svg-bYPvnATnn8JbkKVI .taskText3{fill:#fff}#mermaid-svg-bYPvnATnn8JbkKVI .task0,#mermaid-svg-bYPvnATnn8JbkKVI .task1,#mermaid-svg-bYPvnATnn8JbkKVI .task2,#mermaid-svg-bYPvnATnn8JbkKVI .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-bYPvnATnn8JbkKVI .taskTextOutside0,#mermaid-svg-bYPvnATnn8JbkKVI .taskTextOutside2{fill:#000}#mermaid-svg-bYPvnATnn8JbkKVI .taskTextOutside1,#mermaid-svg-bYPvnATnn8JbkKVI .taskTextOutside3{fill:#000}#mermaid-svg-bYPvnATnn8JbkKVI .active0,#mermaid-svg-bYPvnATnn8JbkKVI .active1,#mermaid-svg-bYPvnATnn8JbkKVI .active2,#mermaid-svg-bYPvnATnn8JbkKVI .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-bYPvnATnn8JbkKVI .activeText0,#mermaid-svg-bYPvnATnn8JbkKVI .activeText1,#mermaid-svg-bYPvnATnn8JbkKVI .activeText2,#mermaid-svg-bYPvnATnn8JbkKVI .activeText3{fill:#000 !important}#mermaid-svg-bYPvnATnn8JbkKVI .done0,#mermaid-svg-bYPvnATnn8JbkKVI .done1,#mermaid-svg-bYPvnATnn8JbkKVI .done2,#mermaid-svg-bYPvnATnn8JbkKVI .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-bYPvnATnn8JbkKVI .doneText0,#mermaid-svg-bYPvnATnn8JbkKVI .doneText1,#mermaid-svg-bYPvnATnn8JbkKVI .doneText2,#mermaid-svg-bYPvnATnn8JbkKVI .doneText3{fill:#000 !important}#mermaid-svg-bYPvnATnn8JbkKVI .crit0,#mermaid-svg-bYPvnATnn8JbkKVI .crit1,#mermaid-svg-bYPvnATnn8JbkKVI .crit2,#mermaid-svg-bYPvnATnn8JbkKVI .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-bYPvnATnn8JbkKVI .activeCrit0,#mermaid-svg-bYPvnATnn8JbkKVI .activeCrit1,#mermaid-svg-bYPvnATnn8JbkKVI .activeCrit2,#mermaid-svg-bYPvnATnn8JbkKVI .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-bYPvnATnn8JbkKVI .doneCrit0,#mermaid-svg-bYPvnATnn8JbkKVI .doneCrit1,#mermaid-svg-bYPvnATnn8JbkKVI .doneCrit2,#mermaid-svg-bYPvnATnn8JbkKVI .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-bYPvnATnn8JbkKVI .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-bYPvnATnn8JbkKVI .milestoneText{font-style:italic}#mermaid-svg-bYPvnATnn8JbkKVI .doneCritText0,#mermaid-svg-bYPvnATnn8JbkKVI .doneCritText1,#mermaid-svg-bYPvnATnn8JbkKVI .doneCritText2,#mermaid-svg-bYPvnATnn8JbkKVI .doneCritText3{fill:#000 !important}#mermaid-svg-bYPvnATnn8JbkKVI .activeCritText0,#mermaid-svg-bYPvnATnn8JbkKVI .activeCritText1,#mermaid-svg-bYPvnATnn8JbkKVI .activeCritText2,#mermaid-svg-bYPvnATnn8JbkKVI .activeCritText3{fill:#000 !important}#mermaid-svg-bYPvnATnn8JbkKVI .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-bYPvnATnn8JbkKVI g.classGroup text .title{font-weight:bolder}#mermaid-svg-bYPvnATnn8JbkKVI g.clickable{cursor:pointer}#mermaid-svg-bYPvnATnn8JbkKVI g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-bYPvnATnn8JbkKVI g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-bYPvnATnn8JbkKVI .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-bYPvnATnn8JbkKVI .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-bYPvnATnn8JbkKVI .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-bYPvnATnn8JbkKVI .dashed-line{stroke-dasharray:3}#mermaid-svg-bYPvnATnn8JbkKVI #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-bYPvnATnn8JbkKVI #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-bYPvnATnn8JbkKVI #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-bYPvnATnn8JbkKVI #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-bYPvnATnn8JbkKVI #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-bYPvnATnn8JbkKVI #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-bYPvnATnn8JbkKVI #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-bYPvnATnn8JbkKVI #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-bYPvnATnn8JbkKVI .commit-id,#mermaid-svg-bYPvnATnn8JbkKVI .commit-msg,#mermaid-svg-bYPvnATnn8JbkKVI .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-bYPvnATnn8JbkKVI g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-bYPvnATnn8JbkKVI g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-bYPvnATnn8JbkKVI g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-bYPvnATnn8JbkKVI .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-bYPvnATnn8JbkKVI .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-bYPvnATnn8JbkKVI .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-bYPvnATnn8JbkKVI .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-bYPvnATnn8JbkKVI .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-bYPvnATnn8JbkKVI .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-bYPvnATnn8JbkKVI .edgeLabel text{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-bYPvnATnn8JbkKVI .node circle.state-start{fill:black;stroke:black}#mermaid-svg-bYPvnATnn8JbkKVI .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-bYPvnATnn8JbkKVI #statediagram-barbEnd{fill:#9370db}#mermaid-svg-bYPvnATnn8JbkKVI .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-bYPvnATnn8JbkKVI .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-bYPvnATnn8JbkKVI .statediagram-state .divider{stroke:#9370db}#mermaid-svg-bYPvnATnn8JbkKVI .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-bYPvnATnn8JbkKVI .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-bYPvnATnn8JbkKVI .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-bYPvnATnn8JbkKVI .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-bYPvnATnn8JbkKVI .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-bYPvnATnn8JbkKVI .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-bYPvnATnn8JbkKVI .note-edge{stroke-dasharray:5}#mermaid-svg-bYPvnATnn8JbkKVI .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-bYPvnATnn8JbkKVI .error-icon{fill:#522}#mermaid-svg-bYPvnATnn8JbkKVI .error-text{fill:#522;stroke:#522}#mermaid-svg-bYPvnATnn8JbkKVI .edge-thickness-normal{stroke-width:2px}#mermaid-svg-bYPvnATnn8JbkKVI .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-bYPvnATnn8JbkKVI .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-bYPvnATnn8JbkKVI .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-bYPvnATnn8JbkKVI .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-bYPvnATnn8JbkKVI .marker{fill:#333}#mermaid-svg-bYPvnATnn8JbkKVI .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-bYPvnATnn8JbkKVI {color: rgba(0, 0, 0, 0.75);font: ;}maininstallconsulfileec2kubernetesdiscovery

    如果添加一個(gè) SD,僅需要添加 discovery/install/install.go,刪除了 discovery/config/ 目錄

    總結(jié)

    以上是生活随笔為你收集整理的Prometheus源码学习(4) 通过2.24对实例化Discoverer代码的改进学习依赖倒置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    av一级片在线观看 | 91精品啪在线观看国产线免费 | 狠狠做深爱婷婷综合一区 | 69绿帽绿奴3pvideos | 在线欧美最极品的av | 日本精品一区二区三区在线观看 | 夜夜躁日日躁狠狠躁 | 日韩免费一区二区三区 | 人人爽久久久噜噜噜电影 | 国产成人精品一区二区三区免费 | 亚洲dvd | 91精品国产乱码久久 | 亚洲影院国产 | 日本在线观看黄色 | 精品夜夜嗨av一区二区三区 | 久久在线精品 | 99视频在线观看一区三区 | 日韩理论片在线观看 | 久久久五月婷婷 | 国产不卡网站 | 亚洲日本在线一区 | 99久久日韩精品视频免费在线观看 | 正在播放久久 | 国产精品18毛片一区二区 | 国产中文在线视频 | 国产一级二级在线 | 有码一区二区三区 | 特级毛片在线 | 亚洲精品日韩av | 久久精品播放 | 免费精品在线观看 | 少妇搡bbbb搡bbb搡忠贞 | 色天天 | 黄色成人av网址 | 亚洲综合成人在线 | 国产精品久久久久久久久久白浆 | 999久久a精品合区久久久 | 午夜av在线电影 | 插综合网| 国产夫妻自拍av | 国产五月色婷婷六月丁香视频 | 日本不卡一区二区 | 韩日精品在线观看 | 一级黄色片在线 | 美女网站在线 | 色婷婷激情电影 | 欧美色就是色 | 久久久久综合网 | 久久精品电影网 | av资源在线看 | 国产91精品一区二区绿帽 | 国产精品ⅴa有声小说 | 99超碰在线播放 | 久久综合久久久久88 | 日韩有码在线播放 | 97视频在线观看播放 | 成人动漫一区二区三区 | 五月在线| 国产尤物一区二区三区 | 国产在线视频一区二区三区 | 免费看的黄色片 | 国产精品一区欧美 | 国产伦理久久精品久久久久_ | 欧美aaa一级 | 亚洲美女免费精品视频在线观看 | 天天射天天舔天天干 | 成年人看片网站 | 在线免费观看成人 | 99久久久国产精品免费99 | www.com黄色 | 国产精品久久久久永久免费观看 | 97色涩| 97超碰福利久久精品 | www.av在线.com| 国产不卡av在线 | 91在线视频精品 | 黄色日本片 | 99精品国产一区二区三区麻豆 | 亚洲国产三级在线 | 在线有码中文字幕 | 在线观看 国产 | 欧美亚洲一级片 | 国产原创中文在线 | 有码中文在线 | 美女免费视频网站 | 成人久久亚洲 | 国产视频精选在线 | 奇米影音四色 | 中文字幕欧美日韩va免费视频 | 亚洲电影一级黄 | 波多野结衣在线视频一区 | 99精品免费在线 | 国产特级毛片aaaaaa毛片 | 亚洲天堂精品视频 | 在线播放国产精品 | 日韩网站中文字幕 | 中文字幕日韩免费视频 | 日韩电影在线观看一区二区三区 | 成人国产一区二区 | 91激情小视频 | 在线一二区 | 成片免费观看视频 | 日日干精品 | 国产特级毛片aaaaaa | 欧美日韩观看 | 久久久久久中文字幕 | 国产91精品久久久久久 | 日韩激情av在线 | 很黄很污的视频网站 | 永久免费视频国产 | 91亚洲精品国偷拍 | 国产在线观看你懂得 | 看毛片的网址 | 成人影片在线免费观看 | 日韩一区二区在线免费观看 | 色成人亚洲网 | 国产一区免费在线观看 | 69av网| 欧美精品一区二区蜜臀亚洲 | 91久久在线观看 | 国产黄色免费看 | 狠狠干夜夜爱 | 精品一区 精品二区 | 五月婷婷六月丁香在线观看 | 欧美极品久久 | 手机av在线不卡 | 日韩精品久久久久 | 日韩精品黄| 亚洲首页 | 在线va视频| 在线国产激情视频 | 日日夜夜狠狠操 | 97精品国产一二三产区 | 高清在线一区二区 | 偷拍精偷拍精品欧洲亚洲网站 | 九九激情视频 | 日韩电影中文字幕 | 国产亚洲精品综合一区91 | av先锋影音少妇 | 中文字幕在线播放一区二区 | 手机看片午夜 | 国产精品99久久免费观看 | 免费观看的av网站 | 国产高清av | 天堂av免费 | 丁香六月在线观看 | 中文字幕在线观看三区 | 精品国产美女 | 人人干天天射 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 麻豆影视网站 | 国产一区在线免费观看视频 | 久久免费视频99 | 亚洲精品网页 | 一级黄色大片 | a在线观看国产 | www五月婷婷 | 国内精品久久影院 | 四虎影视成人永久免费观看亚洲欧美 | 午夜精品视频免费在线观看 | 精品国产一区二区三区久久久 | 在线日韩亚洲 | 狠狠亚洲 | 国产区欧美 | 精品久久久久久久久久久久 | 97小视频 | 99热99热| 日韩精品中文字幕av | 精品国产乱码久久久久久1区二区 | 国产精品亚洲视频 | 亚洲精品在线观看网站 | 国产中文自拍 | 亚洲乱码久久 | 国产在线第三页 | 色婷婷国产精品 | 精品国产午夜 | www.婷婷色| 成年人在线看片 | 激情五月婷婷综合网 | 久久久久久久久久久久影院 | 国内少妇自拍视频一区 | 日本xxxx裸体xxxx17 | 黄色一级大片免费看 | 久青草影院 | 国产91在线观看 | 久久国产精品一二三区 | 成人av在线电影 | 亚洲视频资源在线 | 欧美福利视频 | 成人毛片网 | 午夜av免费在线观看 | 亚洲成人av片在线观看 | 精品久久视频 | 欧美大荫蒂xxx | 91成人免费| 成人久久久久久久久久 | 97电院网手机版 | 日韩毛片在线播放 | 久久久久久久综合色一本 | 日韩视频a | 夜夜骑天天操 | 亚洲精品无 | 人人爽人人爽人人爽学生一级 | 亚洲精品www久久久 www国产精品com | 婷婷激情久久 | 日韩高清一二三区 | 在线视频 91| 亚洲最大免费成人网 | 不卡日韩av | 成人一级免费视频 | 国产精品久久久久久妇 | 中文字幕在线看视频国产 | 五月开心综合 | 三级黄免费看 | 国产精品一区二区在线看 | 黄www在线观看 | 国产尤物一区二区三区 | 久草免费在线视频观看 | 日韩免费看片 | 日韩黄色中文字幕 | www日韩欧美 | 日韩高清免费在线 | 国产精品免费在线视频 | 国产第一页精品 | 一区二区视频在线观看免费 | 日日干精品 | 9797在线看片亚洲精品 | 国产精品久久久久久久久久ktv | 成 人 黄 色 视频免费播放 | 福利视频精品 | 日韩久久精品一区二区 | 欧洲精品码一区二区三区免费看 | 久久99视频| 中文字幕精品三区 | 亚洲理论在线观看 | 中文字幕婷婷 | 亚洲丁香久久久 | 国产视频一区二区在线观看 | 免费不卡中文字幕视频 | 69国产盗摄一区二区三区五区 | 亚洲女人天堂成人av在线 | 欧美国产精品一区二区 | 97免费视频在线 | 精品一区二区在线免费观看 | 黄色网址国产 | 国产高清第一页 | 一级淫片a | 在线免费黄色av | 久久久国产视频 | 久久国产精品精品国产色婷婷 | 久久久久99精品成人片三人毛片 | 免费a一级 | 婷婷免费视频 | www.日本色| 涩涩网站在线观看 | 午夜av日韩 | 免费看v片 | 久久视频在线观看中文字幕 | 99久久精品国产一区二区三区 | 亚洲最大在线视频 | 久草在线官网 | 亚洲激精日韩激精欧美精品 | 欧美激情综合色 | 综合激情网... | 97超碰国产精品女人人人爽 | 精品欧美小视频在线观看 | 国产日韩中文字幕在线 | 美女网站视频久久 | 天天射,天天干 | 成人黄色国产 | 亚洲专区中文字幕 | 日韩二区三区 | 自拍超碰在线 | 亚洲影视资源 | 久久精品亚洲精品国产欧美 | 干综合网 | 亚洲精品国偷自产在线91正片 | 亚洲尺码电影av久久 | 91精品一区二区三区久久久久久 | 欧美精品亚洲二区 | 天天天天天天干 | 四虎免费在线观看视频 | 最新国产精品拍自在线播放 | 手机看片国产日韩 | 九色精品免费永久在线 | 久久夜夜操 | 国产一级黄色免费看 | 日本xxxx.com| 91亚洲精品久久久中文字幕 | 在线欧美日韩 | 精品国产一区二区三区久久久蜜月 | 成年美女黄网站色大片免费看 | 349k.cc看片app| 麻豆视频91 | 五月香视频在线观看 | av免费线看 | 激情五月伊人 | 日韩精品免费在线观看视频 | 日本aaa在线观看 | 精品国产观看 | 国产精品一区二区在线播放 | 国产成人精品一区二 | 国产精品久久久久久久久久免费 | 欧美久久电影 | 午夜aaaa | 91丨精品丨蝌蚪丨白丝jk | 国产h在线播放 | 日韩乱码在线 | 亚洲 欧美日韩 国产 中文 | 国产在线a免费观看 | 久久 地址 | 中文字幕亚洲综合久久五月天色无吗'' | 国产xx在线 | 一区二区电影网 | 91久色蝌蚪 | 午夜美女wwww | avove黑丝 | 人人爽人人做 | 欧美一性一交一乱 | 九九热在线观看 | 欧美在线视频精品 | 亚洲欧美国产日韩在线观看 | 日本精品中文字幕在线观看 | 国产精品一区免费在线观看 | 999抗病毒口服液 | 日本色小说视频 | 日本黄网站 | 成人久久久久 | 国产亚洲久一区二区 | 免费的国产精品 | 欧亚日韩精品一区二区在线 | 胖bbbb搡bbbb擦bbbb| 999久久久国产精品 高清av免费观看 | 欧美极品裸体 | 国产精品永久免费视频 | 中字幕视频在线永久在线观看免费 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 国产精品一区二区无线 | 97干com| 日韩精品一区二区免费 | 亚洲无人区小视频 | 久久精品99久久久久久2456 | 国产精品va | 日韩精品在线视频免费观看 | 国产粉嫩在线 | 91传媒在线 | 国产精品自在线拍国产 | 午夜婷婷在线观看 | 欧美天天综合 | 午夜久久美女 | 亚洲粉嫩av | 九九免费观看视频 | 正在播放亚洲精品 | 国产精品一区一区三区 | 一区二区三区四区在线免费观看 | 久久久久久免费网 | 国产小视频在线播放 | 久久人人爽人人人人片 | av品善网 | 国产破处精品 | 天天操网址 | 91av视频在线观看免费 | 日韩免费中文 | 成人午夜影视 | 日本精品一区二区三区在线播放视频 | 国产视频精品免费 | 久久久www成人免费毛片 | 天天做天天射 | 欧美精品黑人性xxxx | 欧美久久久久久久久中文字幕 | 国产成人精品电影久久久 | 国产美女精品视频免费观看 | 国产成人精品久久 | 五月天堂色 | 久久久久高清毛片一级 | 中文字幕大全 | 福利av影院 | 亚洲五月婷婷 | 波多野结衣亚洲一区二区 | 天天爽天天碰狠狠添 | 国产一区视频在线 | 欧美 日韩 国产 成人 在线 | 精品国产a| 亚洲最大在线视频 | 日韩二区在线 | 久久综合婷婷 | 麻豆视传媒官网免费观看 | 天天插天天操天天干 | 91夜夜夜| 99久久精品国产欧美主题曲 | 欧美日韩午夜爽爽 | 97av色| 日韩av二区 | 国产福利在线免费 | 久久综合久久综合这里只有精品 | 国产欧美精品在线观看 | 一区二区三区高清在线观看 | 日韩在线观看不卡 | 日韩精品在线免费播放 | 综合精品在线 | 亚洲国产最新 | 亚洲国产字幕 | 免费在线观看午夜视频 | 精品久久在线 | 亚洲天堂精品视频 | 婷婷深爱 | 天堂在线一区二区 | 亚洲综合在线发布 | 91成人天堂久久成人 | 97麻豆视频 | 在线观看日韩国产 | 天堂av一区二区 | 亚洲香蕉在线观看 | 青青草国产在线 | www免费| 97视频一区 | 综合色在线 | 免费看的黄色的网站 | 四虎国产永久在线精品 | 成人黄色片在线播放 | 丁香五月亚洲综合在线 | 在线免费国产视频 | 欧美一区二区三区四区夜夜大片 | 中文有码在线 | 超碰国产在线观看 | av不卡在线看 | 久久视频免费在线 | 日韩成人看片 | 99久久精品免费看 | 久久亚洲热| 91免费网站在线观看 | 蜜臀av在线一区二区三区 | 亚洲天堂自拍视频 | 亚洲激情在线播放 | 不卡中文字幕av | 97网站 | 国产精品1区2区在线观看 | 伊人亚洲综合网 | 亚洲人成人99网站 | 国产在线高清 | 日韩1级片 | 综合网天天色 | 久久久久久久久久久久影院 | 国产特级毛片 | 毛片永久免费 | 欧美热久久 | 亚洲精品在线观看免费 | 午夜视频一区二区三区 | 国产精品一区二区三区视频免费 | 精品国产一区二区三区久久久 | 亚洲国产中文字幕在线视频综合 | 欧美日韩中字 | 丁香在线 | 亚洲精品视频在线观看网站 | 亚洲欧美精品一区二区 | 久久一区二区三区超碰国产精品 | 亚洲国产成人在线观看 | 99久久精品国产观看 | 成片免费 | 五月天天在线 | 久久久久久久国产精品视频 | 色综合久久久久久中文网 | 九九免费精品视频在线观看 | 精品电影一区二区 | 99国产成+人+综合+亚洲 欧美 | 在线观看视频免费大全 | 成年人免费在线播放 | 韩国视频一区二区三区 | 91激情在线视频 | 欧美久久九九 | 午夜视频在线观看一区二区三区 | 亚洲va欧洲va国产va不卡 | 欧美日韩三区二区 | 成人观看视频 | 日韩av播放在线 | 91丨九色丨蝌蚪丨对白 | 精品视频99| 精品国产精品国产偷麻豆 | 国产视频 亚洲精品 | 丁香婷婷综合五月 | av片中文 | 国产中文字幕网 | 日韩免费一区二区 | 欧美在线视频第一页 | 一区中文字幕在线观看 | 欧美激情精品一区 | www.五月激情.com | 91传媒免费观看 | 久久国产网 | 国产精品成人久久久 | 草久久精品 | 国产成人在线免费观看 | 福利视频区 | a级片在线播放 | 久久久久久高清 | 国产精品毛片一区视频 | 天天干夜夜操视频 | 99久久夜色精品国产亚洲96 | 中文字幕日韩国产 | 特级西西人体444是什么意思 | 国产精品久久99综合免费观看尤物 | 国产69精品久久app免费版 | 网站免费黄色 | 久久精品久久精品 | 成人免费观看网站 | 欧美一级性生活片 | 99re中文字幕 | 全黄网站 | 亚洲丝袜一区二区 | 久久免费观看视频 | 超碰在线色 | 亚洲aⅴ久久精品 | 欧美日韩中文视频 | 欧美日韩国产精品一区二区三区 | 天天综合成人网 | 亚洲色图美腿丝袜 | 91精品国自产在线观看 | 久久久久免费观看 | 超碰在线人人 | 久久久久久久亚洲精品 | 九九热.com| 日韩经典一区二区三区 | 国产精品中文字幕在线观看 | 在线观看自拍 | 激情五月婷婷网 | 国产成人精品一区二区三区福利 | 国产一区二区在线免费 | 国产伦理久久精品久久久久_ | 91九色精品女同系列 | 久久色在线观看 | 久久av中文字幕片 | 亚洲精品456在线播放第一页 | 亚洲成人精品在线 | 国产精品久久久久久久久软件 | 韩国一区二区三区在线观看 | 国产一级一片免费播放放 | 成人国产精品一区二区 | 天天天天天天干 | 国产一区视频免费在线观看 | 亚洲视频久久 | 91在线www| 人人操日日干 | 国产乱对白刺激视频在线观看女王 | 免费在线观看av网站 | 亚洲成人精品av | 中文字幕区 | 一区二区伦理 | 激情五月婷婷网 | 国产精品99久久久久的智能播放 | 啪啪午夜免费 | 国产一级大片在线观看 | 久久久五月天 | 天无日天天操天天干 | 久久8精品 | 狠狠色丁香久久综合网 | 九九色在线观看 | 国产高清无线码2021 | 婷婷色在线播放 | 免费日韩电影 | 天天射天天操天天色 | 国产一区二区免费看 | 日本电影久久 | 国产精品99久久久久久小说 | 久久激五月天综合精品 | 91最新视频在线观看 | 亚洲精品美女久久久久网站 | 91精品办公室少妇高潮对白 | 午夜精品电影一区二区在线 | 国产麻豆视频免费观看 | 久久综合综合久久综合 | 精品综合久久久 | 少妇按摩av | 精品国精品自拍自在线 | 99久久99久久免费精品蜜臀 | 黄污网站在线观看 | 亚洲人毛片 | 1000部国产精品成人观看 | 91中文字幕在线观看 | 成人在线网站观看 | a v在线视频 | 欧美精品成人在线 | 亚洲午夜久久久久久久久久久 | 99久热在线精品视频 | 91精品久久久久久久99蜜桃 | 精品一区二区影视 | 欧洲精品码一区二区三区免费看 | 中文字幕免费 | 亚洲涩涩色 | 四川妇女搡bbbb搡bbbb搡 | 91在线视频网址 | 丁香五婷 | 精品电影一区 | 91在线播放视频 | 国产专区一 | 亚洲成色 | av电影中文字幕在线观看 | 中文字幕欲求不满 | 中文字幕久久久精品 | 国产91影视 | 国产精品岛国久久久久久久久红粉 | 91福利专区 | 伊人五月综合 | 中文字幕丝袜一区二区 | 日韩欧美视频免费观看 | 亚洲成av人片在线观看无 | 国产剧情一区在线 | 久久免费视频一区 | 日韩视频一区二区三区 | 亚洲精品一区二区精华 | 国产午夜精品一区二区三区嫩草 | 99精品视频在线观看视频 | 国产一区福利 | 久久深夜福利免费观看 | 欧美激情精品久久久久久免费 | 九九免费在线观看视频 | 国产精品日韩欧美一区二区 | 免费黄色一区 | 99精品久久只有精品 | 国产黄色片一级三级 | 欧美一级视频免费 | 永久黄网站色视频免费观看w | 狠狠躁夜夜躁人人爽视频 | 中文字幕精品一区久久久久 | 国产手机在线 | 亚洲aⅴ乱码精品成人区 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 久久久久欠精品国产毛片国产毛生 | 精品日韩视频 | 99精品偷拍视频一区二区三区 | 亚洲最大av网 | 99亚洲精品视频 | 欧美色黄 | 天天操天天操天天操天天操 | 在线视频观看成人 | 欧美色噜噜 | 亚洲欧洲精品一区 | 精品一区二区三区香蕉蜜桃 | 九九爱免费视频在线观看 | 日韩av成人 | 久久国产露脸精品国产 | 免费看的av片 | 婷婷在线网站 | 日韩一级电影在线 | www国产精品com | 中文字幕第一页在线视频 | 丁香综合av | 免费高清在线视频一区· | 91精品一区二区在线观看 | 日韩av影视| 99久久99热这里只有精品 | 欧美日韩另类视频 | 成人av一区二区三区 | aaa毛片视频| 奇米网8888| 久草免费福利在线观看 | 色偷偷88888欧美精品久久久 | 91成人免费| 人人澡人人爱 | 手机看片久久 | 伊人网综合在线观看 | 深夜国产福利 | 99中文字幕视频 | 国产精品乱码久久久久久1区2区 | 人人澡人人爱 | 久久久久欠精品国产毛片国产毛生 | 国产成人一区在线 | 欧美日本在线观看视频 | 久久天天操| 国产精品黄色影片导航在线观看 | 精品久久久久久亚洲综合网 | 成人资源站 | 日韩r级在线 | 久久视频这里只有精品 | 欧美粗又大| 高清视频一区二区三区 | 国产精品久久久久永久免费 | 天天干亚洲 | 天无日天天操天天干 | 精品一区二区免费 | 在线国产视频观看 | 久久精品视频中文字幕 | 久久久久亚洲最大xxxx | 中文字幕精品一区 | 久久人人爽人人爽人人片av免费 | 天天草天天干天天 | av在线电影播放 | 天天夜操 | 在线高清一区 | 欧美精品v国产精品v日韩精品 | 久久免费99精品久久久久久 | 亚洲欧美日韩一级 | 久久伦理 | 成人av手机在线 | 天天草网站 | 激情欧美一区二区三区 | 久久情爱 | 久久精品中文字幕一区二区三区 | 国产精品18久久久久久久 | 亚洲黄污 | 99热这里只有精品8 久久综合毛片 | 亚洲国产大片 | 嫩小bbbb摸bbb摸bbb| 欧美国产日韩在线观看 | 2018亚洲男人天堂 | 久久草在线视频国产 | 亚洲免费观看视频 | 96国产精品 | 午夜精品一区二区三区视频免费看 | 福利视频一二区 | 国产精品k频道 | 国产精品久久久久久久久久妇女 | 欧美激情视频免费看 | av丝袜在线 | 97精品伊人 | 国产午夜三级一区二区三桃花影视 | 色婷婷六月 | 最近最新mv字幕免费观看 | 久久线视频 | 久章草在线观看 | 日韩精品一区二区久久 | a v在线观看| 国产一级一片免费播放放 | 久久草在线视频国产 | 国产v在线观看 | 在线免费av网 | 中文字幕免费观看 | 亚洲成人av电影在线 | 亚洲专区 国产精品 | 天天干天天干天天干 | 一区二区三区在线观看免费视频 | 日韩精品一区二区在线观看 | 在线播放日韩av | 色婷婷视频在线 | 欧美成人xxxx | 国产最新视频在线 | 色视频网站在线 | 国产视频精选 | 国产一区二区成人 | 香蕉免费在线 | av一本久道久久波多野结衣 | 美女网站视频色 | 欧美日韩1区2区 | 国产精品毛片一区二区 | 日本字幕网 | 成年免费在线视频 | 国产日产av| 五月婷婷在线观看视频 | 日韩激情久久 | 天天色天天操综合网 | 亚洲在线精品 | 中文资源在线官网 | 一区二区三区免费看 | 色婷婷午夜 | 视频成人免费 | 免费视频久久久久久久 | 亚洲精品美女久久久 | 色婷婷视频在线观看 | 97精品国自产拍在线观看 | 天天夜夜操 | www.五月天激情 | 激情综合网色播五月 | 亚洲禁18久人片 | 97成人在线视频 | 亚洲精品欧美精品 | 天堂av免费在线 | 欧美激情精品久久久久久 | 婷婷激情五月 | 日日夜夜精品免费观看 | 精品国产区 | 在线免费高清一区二区三区 | 免费手机黄色网址 | 国产资源av| 最近最新最好看中文视频 | 亚洲人xxx| 午夜精品久久久久久久99热影院 | 韩国在线一区二区 | 91原创在线观看 | 国产青春久久久国产毛片 | 在线观看日韩中文字幕 | 天天操伊人 | 麻豆一精品传二传媒短视频 | 伊人资源站 | 五月婷婷久 | 国产一级特黄毛片在线毛片 | 91九色视频在线观看 | 久久男人视频 | 国产精品99在线观看 | 午夜精品久久久久99热app | 5月丁香婷婷综合 | 久久这里只有精品1 | 日本久久久亚洲精品 | 久久国产精品久久国产精品 | 婷婷看片| 久久久久亚洲精品成人网小说 | 国产色在线视频 | 亚洲国产小视频在线观看 | 99视频久| 国产午夜精品一区二区三区嫩草 | av在线等| 亚洲永久精品在线观看 | 激情网五月天 | 超碰最新网址 | 午夜精品视频一区 | 国产成人精品免费在线观看 | 国产精品国产三级国产aⅴ9色 | 久久久久亚洲天堂 | 永久免费av在线播放 | 免费在线看成人av | 91av视频网站 | 色a资源在线 | 少妇搡bbbb搡bbb搡69 | a视频在线播放 | 国产精品久久久久久久久免费 | 国产精品6| 中文字幕美女免费在线 | 日韩免费视频线观看 | 三级av免费看 | 久久新| 中日韩在线视频 | 欧美 日韩 国产 成人 在线 | 黄色a在线观看 | 91成人免费在线 | 正在播放亚洲精品 | 色婷婷在线播放 | 欧美疯狂性受xxxxx另类 | 午夜精品久久久久久久99 | 天天综合视频在线观看 | 奇米网在线观看 | 在线 国产 日韩 | 久久久久久蜜av免费网站 | 国产99久久久国产精品免费看 | 国产精品自产拍 | 日韩成人精品在线观看 | 国产精品视频永久免费播放 | 日韩资源在线观看 | 国产啊v在线观看 | 欧美9999| 久久精品国产一区二区电影 | 中文字幕在线免费看线人 | 美女黄色网在线播放 | 久久爱资源网 | 久久亚洲美女 | 日日操操操 | 狠狠亚洲 | www.人人草| 国产精国产精品 | 一级黄色av | 欧美一区二区三区四区夜夜大片 | 开心激情五月网 | 亚洲精品www| 国产精品成人在线观看 | 国产91国语对白在线 | 欧美99热 | 午夜久久精品 | 亚洲精品国产成人 | 亚洲欧美综合精品久久成人 | 国产成人一级 | 国产亚洲精品久久久久久网站 | 欧美日韩在线视频一区二区 | 国产做爰视频 | 日狠狠 | 天天操天天操天天操天天操天天操天天操 | 国产精品观看视频 | 日韩精品短视频 | www.久久久com| 极品久久久久久久 | 欧美精品一区二区免费 | 中文字幕免费国产精品 | 免费av的网站 | 国产高清黄色 | 99精品成人 | 久久综合综合久久综合 | 国产性xxxx| 一级久久精品 | 欧美日韩不卡一区二区三区 | 一级黄视频 | 97精品国自产拍在线观看 | 又黄又爽又无遮挡的视频 | 日韩日韩日韩日韩 | 人人干人人添 | 色偷偷97 | 麻豆 videos | 国产一级二级三级在线观看 | 99精彩视频在线观看免费 | 中文字幕在线观看不卡 | 国产精品入口麻豆www | 天天操天天射天天操 | 久久99国产视频 | 精品国产乱码久久久久久浪潮 | 国产亚洲精品久久久久久久久久 | 九九免费观看全部免费视频 | 99久久精品视频免费 | 97在线公开视频 | 麻豆国产视频下载 | 奇米影音四色 | 在线之家免费在线观看电影 | 99精品99| 欧美一级小视频 | 久色 网| 国产精品欧美日韩在线观看 | 91精品婷婷国产综合久久蝌蚪 | 一区二区三区四区不卡 | 亚州av网站 | 午夜狠狠干| 亚洲精品黄网站 | 国产 日韩 在线 亚洲 字幕 中文 | 高清在线一区二区 | 国产麻豆精品传媒av国产下载 | www五月天com | 日韩电影一区二区三区在线观看 | 久久激情视频 | 日韩精品亚洲专区在线观看 | 日韩婷婷 | 国产电影黄色av | 在线观看免费视频你懂的 | 日本精品视频在线观看 | 色婷婷久久一区二区 | 国产操在线 | 天天操天天艹 | 久久国精品 | 久热色超碰 | 久久这里有精品 | 奇米777777 | 久久免费视频3 | 亚洲成人av电影在线 | 五月丁婷婷| 久久99精品国产一区二区三区 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 亚洲精品国产拍在线 | 免费色视频网址 | 久久全国免费视频 | 久久综合9988久久爱 | 亚洲欧美精品一区 | 91黄色小视频 | 999久久久欧美日韩黑人 | 亚洲精品视频在线观看免费视频 | 中文字幕免费高清 | 国产精品一区二区在线免费观看 | 波多野结依在线观看 | 青春草视频在线播放 | av一区二区在线观看中文字幕 | 亚洲天堂自拍视频 | 国产精品久久久久久久免费观看 | 亚洲成av人片在线观看 | 国产精品xxxx18a99 | 五月天久久 | 在线观看视频国产 | 一区二区中文字幕在线播放 | 99精品欧美一区二区三区 | 国产91在线观看 | 波多野结衣电影久久 | 五月婷婷天堂 | 亚洲一级免费电影 | 欧美日韩一区二区三区免费视频 | 正在播放五月婷婷狠狠干 | 91女神的呻吟细腰翘臀美女 | 91大片网站 | 国产欧美高清 | 午夜性色| 久久九九影院 | 天天色.com | 成人精品一区二区三区电影免费 | 99国产视频| 久久久综合 | 久草精品视频在线播放 | 天天干天天拍天天操 | 精品一区二区三区四区在线 | 欧美一级专区免费大片 | 中文字幕在线观看完整版电影 | av五月婷婷 | 国产精品理论片在线播放 | 久热爱| 久草爱| 日韩精品无 | 亚洲精品乱码久久久久v最新版 | 亚洲 综合 专区 | 亚洲精品久久视频 | 视频在线99re | 亚洲综合在线五月 | 又黄又爽又色无遮挡免费 | 免费观看mv大片高清 | 国产精品福利无圣光在线一区 | 精品国产伦一区二区三区观看体验 | 韩国av免费看 | 国产无遮挡猛进猛出免费软件 | 欧美激情h| 午夜美女福利直播 | 久久午夜视频 | 精品久久久久久久久久久久久久久久 | 亚洲伦理精品 | 免费在线观看视频a | 91丨九色丨勾搭 | 在线观看国产一区二区 | 中文字幕一二三区 | 亚洲成av人影院 | 激情av资源网 | 婷婷在线综合 | 91av在线免费播放 |