diff --git a/config/config_loader_test.go b/config/config_loader_test.go index 169f3e744885b3909e68b61a190491ff79187da8..6e9689c76322686fff0fab585dc08436a07cd55c 100644 --- a/config/config_loader_test.go +++ b/config/config_loader_test.go @@ -86,8 +86,8 @@ func TestLoad(t *testing.T) { func TestWithNoRegLoad(t *testing.T) { doInit() doinit() - providerConfig.Services["MockService"].Registries = []string{} - consumerConfig.References["MockService"].Registries = []string{} + providerConfig.Services["MockService"].Registry = "" + consumerConfig.References["MockService"].Registry = "" ms := &MockService{} SetConsumerService(ms) SetProviderService(ms) diff --git a/config/reference_config.go b/config/reference_config.go index d56226a311a821e6efbef892dca0e0bd872353b7..2c38d8aa4aa31576c94724d4537aa752df2fb96c 100644 --- a/config/reference_config.go +++ b/config/reference_config.go @@ -43,7 +43,7 @@ type ReferenceConfig struct { Url string `yaml:"url" json:"url,omitempty" property:"url"` Filter string `yaml:"filter" json:"filter,omitempty" property:"filter"` Protocol string `yaml:"protocol" json:"protocol,omitempty" property:"protocol"` - Registries []string `yaml:"registries" json:"registries,omitempty" property:"registries"` + Registry string `yaml:"registry" json:"registry,omitempty" property:"registry"` Cluster string `yaml:"cluster" json:"cluster,omitempty" property:"cluster"` Loadbalance string `yaml:"loadbalance" json:"loadbalance,omitempty" property:"loadbalance"` Retries int64 `yaml:"retries" json:"retries,omitempty" property:"retries"` @@ -100,7 +100,7 @@ func (refconfig *ReferenceConfig) Refer() { } } else { //2. assemble SubURL from register center's configuration妯″紡 - refconfig.urls = loadRegistries(refconfig.Registries, consumerConfig.Registries, common.CONSUMER) + refconfig.urls = loadRegistries(refconfig.Registry, consumerConfig.Registries, common.CONSUMER) //set url to regUrls for _, regUrl := range refconfig.urls { diff --git a/config/reference_config_test.go b/config/reference_config_test.go index 766cfda6cf1044d5249ad7e742cab63e6343bf4f..c41e2a16de1cdc347d204cfae9d36b0b54f12808 100644 --- a/config/reference_config_test.go +++ b/config/reference_config_test.go @@ -80,7 +80,7 @@ func doInit() { }, References: map[string]*ReferenceConfig{ "MockService": { - Registries: []string{"shanghai_reg1", "shanghai_reg2", "hangzhou_reg1", "hangzhou_reg2"}, + Registry: "shanghai_reg1,shanghai_reg2,hangzhou_reg1,hangzhou_reg2", InterfaceName: "MockService", Protocol: "mock", Cluster: "failover", diff --git a/config/registry_config.go b/config/registry_config.go index a36e8c15992b1fc57ddf12857bae89fbcd990ce1..816d93cf9412883bb2042ede7286b4e9a434e641 100644 --- a/config/registry_config.go +++ b/config/registry_config.go @@ -21,6 +21,7 @@ import ( "context" "net/url" "strconv" + "strings" ) import ( @@ -44,17 +45,20 @@ func (*RegistryConfig) Prefix() string { return constant.RegistryConfigPrefix } -func loadRegistries(targetRegistries []string, registries map[string]*RegistryConfig, roleType common.RoleType) []*common.URL { +func loadRegistries(targetRegistries string, registries map[string]*RegistryConfig, roleType common.RoleType) []*common.URL { var urls []*common.URL + trSlice := strings.Split(targetRegistries, ",") + for k, registryConf := range registries { target := false // if user not config targetRegistries,default load all - if len(targetRegistries) == 0 { + // Notice:If s does not contain sep and sep is not empty, SplitAfter returns a slice of length 1 whose only element is s. + if len(trSlice) == 0 || (len(trSlice) == 1 && trSlice[0] == "") { target = true } else { // else if user config targetRegistries - for _, tr := range targetRegistries { + for _, tr := range trSlice { if tr == k { target = true break diff --git a/config/service_config.go b/config/service_config.go index e5c077975bea1ed80828242fe89fbacea8760f95..79a29aa33058dfc47fca282a71ba28292a2b1ff3 100644 --- a/config/service_config.go +++ b/config/service_config.go @@ -46,7 +46,7 @@ type ServiceConfig struct { Filter string `yaml:"filter" json:"filter,omitempty" property:"filter"` Protocol string `required:"true" yaml:"protocol" json:"protocol,omitempty" property:"protocol"` //multi protocol support, split by ',' InterfaceName string `required:"true" yaml:"interface" json:"interface,omitempty" property:"interface"` - Registries []string `yaml:"registries" json:"registries,omitempty" property:"registries"` + Registry string `yaml:"registry" json:"registry,omitempty" property:"registry"` Cluster string `default:"failover" yaml:"cluster" json:"cluster,omitempty" property:"cluster"` Loadbalance string `default:"random" yaml:"loadbalance" json:"loadbalance,omitempty" property:"loadbalance"` Group string `yaml:"group" json:"group,omitempty" property:"group"` @@ -88,7 +88,7 @@ func (srvconfig *ServiceConfig) Export() error { return nil } - regUrls := loadRegistries(srvconfig.Registries, providerConfig.Registries, common.PROVIDER) + regUrls := loadRegistries(srvconfig.Registry, providerConfig.Registries, common.PROVIDER) urlMap := srvconfig.getUrlMap() for _, proto := range loadProtocol(srvconfig.Protocol, providerConfig.Protocols) { diff --git a/config/service_config_test.go b/config/service_config_test.go index df1c4be90141d6a8448220b8b5547735bb78701a..4e0b7f95d6b156eeda021e3c02e5457e8b52b244 100644 --- a/config/service_config_test.go +++ b/config/service_config_test.go @@ -76,7 +76,7 @@ func doinit() { "MockService": { InterfaceName: "MockService", Protocol: "mock", - Registries: []string{"shanghai_reg1", "shanghai_reg2", "hangzhou_reg1", "hangzhou_reg2"}, + Registry: "shanghai_reg1,shanghai_reg2,hangzhou_reg1,hangzhou_reg2", Cluster: "failover", Loadbalance: "random", Retries: 3,