나코스-coredns-plugin의 Domain에 대해서 얘기를 해볼게요.

2514 단어 golang
순서
본고는 주로 나코스-coredns-plugin의 Domain을 연구한다
Domain
nacos-coredns-plugin/nacos/nacos_domain.go
type Domain struct {
    Name string `json:"dom"`
    Clusters string
    CacheMillis int64
    LastRefMillis int64
    Instances []Instance `json:"hosts"`
    Env string
    TTL int

}

func (domain Domain) getInstances() ([]Instance) {
    return domain.Instances
}

func (domain Domain) String() string {
    b, _ := json.Marshal(domain)
    return string(b)
}

func (domain Domain) SrvInstances() []Instance {
    var result = make([]Instance, 0)
    hosts := domain.getInstances()
    for _, host := range hosts {
        if host.Valid && host.Weight > 0 {
            for i := 0; i < int(math.Ceil(host.Weight)); i++ {
                result = append(result, host)
            }
        }
    }

    if len(result) <= 0{
        panic("no host to srv: " + domain.Name)
    }

    return result
}

Domain은Name,Clusters,CacheMillis,LastRefMillis,Instances,Env,TTL 속성을 정의했다.getInstances, String, SrvInstances 방법을 제공합니다.그 중에서 SrvInstances 방법은 instance의 권한에 따라 대응하는 개수의 instance를 되돌려줍니다
인스턴스
nacos-coredns-plugin/nacos/nacos_domain_test.go
func TestDomain_SrvInstances(t *testing.T) {
    domain := Domain{}
    domain.CacheMillis = 10000
    domain.Clusters = "DEFAULT"

    //test weight
    domain.Instances = []Instance{Instance{IP: "2.2.2.2", Port: 80, Weight: 2, AppUseType: "publish", Valid: true, Site: "et2"}}
    instances := domain.SrvInstances()
    if len(instances) == 2 {
        t.Log("Domain.srvInstances weight passed.")
    }

    //test valid
    defer func() {
        if err := recover(); err != nil {
            if strings.HasPrefix(err.(string), "no host to srv: ") {
                t.Log("Domain.srvInstances valid passed.")
            }
        }
    }()
    domain.Instances = []Instance{Instance{IP: "2.2.2.2", Port: 80, Weight: 2, AppUseType: "publish", Valid: false, Site: "et2"}}
    domain.SrvInstances()

}

여기에서 instances를 weight 2의 instance로 설정하고 SrvInstances 방법을 통해 2개의 instance를 되돌려줍니다
소결
nacos-coredns-plugin의Domain은Name,Clusters,CacheMillis,LastRefMillis,Instances,Env,TTL 속성을 정의했다.getInstances, String, SrvInstances 방법을 제공합니다.
doc
  • nacos-coredns-plugin
  • 좋은 웹페이지 즐겨찾기