You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2022/06/12 02:46:12 UTC

[dubbo-go] branch 3.0 updated: chore: remove apollo config center (#1932)

This is an automated email from the ASF dual-hosted git repository.

alexstocks pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new e4690d1ea chore: remove apollo config center (#1932)
e4690d1ea is described below

commit e4690d1ea7bb5ab50c94bcb6fe9ad8d69de8296e
Author: MasterKenway <40...@users.noreply.github.com>
AuthorDate: Sun Jun 12 10:46:06 2022 +0800

    chore: remove apollo config center (#1932)
---
 README.md                                          |   2 +-
 README_CN.md                                       |   2 +-
 config/config_center_config_test.go                |  90 ---------
 config/testdata/config/center/apollo.yaml          |   8 -
 .../consumer_config_with_configcenter_apollo.yml   |  24 ---
 config_center/apollo/doc.go                        |  19 --
 config_center/apollo/factory.go                    |  45 -----
 config_center/apollo/impl.go                       | 171 ----------------
 config_center/apollo/impl_test.go                  | 216 ---------------------
 config_center/apollo/listener.go                   |  77 --------
 config_center/apollo/mockDubbogo.yaml.json         |   1 -
 imports/imports.go                                 |   1 -
 12 files changed, 2 insertions(+), 654 deletions(-)

diff --git a/README.md b/README.md
index d97918d09..bb92459f1 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ Dubbo-go has supported many RPC protocol, like Triple, Dubbo JSONRPC, gRPC, HTTP
 ![](https://dubbogo.github.io/img/devops.png)
 
 - **Registry**: Nacos, Zookeeper, ETCD, Polaris-mesh, Consul.
-- **ConfigCenter**: Nacos, Apollo, Zookeeper
+- **ConfigCenter**: Nacos, Zookeeper
 - **Cluster Strategy**: Failover, [Failfast](https://github.com/apache/dubbo-go/pull/140), [Failsafe/Failback](https://github.com/apache/dubbo-go/pull/136), [Available](https://github.com/apache/dubbo-go/pull/155), [Broadcast](https://github.com/apache/dubbo-go/pull/158), [Forking](https://github.com/apache/dubbo-go/pull/161)
 - **Load Balance**: [AdaptiveService](https://github.com/apache/dubbo-go/pull/1649), Random, [RoundRobin](https://github.com/apache/dubbo-go/pull/66), [LeastActive](https://github.com/apache/dubbo-go/pull/65), [ConsistentHash](https://github.com/apache/dubbo-go/pull/261)
 - [**Filter**](./filter): Echo, Hystrix, Token, AccessLog, TpsLimiter, ExecuteLimit, Generic, Auth/Sign, Metrics, Tracing, Active, Seata, Sentinel
diff --git a/README_CN.md b/README_CN.md
index a87921bf1..217e5e4da 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -32,7 +32,7 @@ Dubbo-go 生态覆盖多种网络协议:Triple、Dubbo、JSONRPC、gRPC、HTTP
 
 - **配置中心**
 
-  开发者可以使用Nacos、Apollo(携程开源)、Zookeeper 进行框架/用户的配置的发布和拉取。
+  开发者可以使用Nacos、Zookeeper 进行框架/用户的配置的发布和拉取。
 
 - **集群策略**: Failover, [Failfast](https://github.com/apache/dubbo-go/pull/140), [Failsafe/Failback](https://github.com/apache/dubbo-go/pull/136), [Available](https://github.com/apache/dubbo-go/pull/155), [Broadcast](https://github.com/apache/dubbo-go/pull/158), [Forking](https://github.com/apache/dubbo-go/pull/161) 等
 
diff --git a/config/config_center_config_test.go b/config/config_center_config_test.go
deleted file mode 100644
index b32c4c5da..000000000
--- a/config/config_center_config_test.go
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package config
-
-import (
-	"testing"
-)
-
-import (
-	"github.com/stretchr/testify/assert"
-)
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/common/constant"
-	_ "dubbo.apache.org/dubbo-go/v3/config_center/apollo"
-)
-
-func TestApolloConfigCenterConfig(t *testing.T) {
-
-	err := Load(WithPath("./testdata/config/center/apollo.yaml"))
-	assert.Nil(t, err)
-
-	registries := rootConfig.Registries
-	assert.NotNil(t, registries)
-}
-func TestConfigCenterConfig(t *testing.T) {
-	var (
-		config *CenterConfig
-		err    error
-	)
-
-	t.Run("ConfigCenterConfigBuilder", func(t *testing.T) {
-		config = NewConfigCenterConfigBuilder().
-			SetProtocol("protocol").
-			SetUserName("userName").
-			SetAddress("address").
-			SetPassword("password").
-			SetNamespace("namespace").
-			SetGroup("group").
-			SetDataID("dataId").
-			Build()
-
-		err = config.check()
-		assert.Nil(t, err)
-
-		assert.Equal(t, config.Protocol, "protocol")
-		assert.Equal(t, config.Username, "userName")
-		assert.Equal(t, config.Address, "address")
-		assert.Equal(t, config.Password, "password")
-		assert.Equal(t, config.Namespace, "namespace")
-		assert.Equal(t, config.Group, "group")
-		assert.Equal(t, config.DataId, "dataId")
-		assert.Equal(t, config.Prefix(), constant.ConfigCenterPrefix)
-		//assert.Equal(t, config.NameId(),
-		//	strings.Join([]string{constant.ConfigCenterPrefix, "protocol", "address"}, "-"))
-	})
-
-	t.Run("GetUrlMap", func(t *testing.T) {
-		url := config.GetUrlMap()
-		assert.Equal(t, url.Get(constant.ConfigNamespaceKey), config.Namespace)
-		assert.Equal(t, url.Get(constant.ConfigClusterKey), config.Cluster)
-	})
-
-	t.Run("translateConfigAddress", func(t *testing.T) {
-		address := config.translateConfigAddress()
-		assert.Equal(t, address, "address")
-	})
-
-	t.Run("toUrl", func(t *testing.T) {
-		url, err := config.toURL()
-		assert.Nil(t, err)
-		namespace := url.GetParam(constant.ConfigNamespaceKey, "namespace")
-		assert.Equal(t, namespace, "namespace")
-	})
-}
diff --git a/config/testdata/config/center/apollo.yaml b/config/testdata/config/center/apollo.yaml
deleted file mode 100644
index 0b10e9e79..000000000
--- a/config/testdata/config/center/apollo.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-dubbo:
-  config-center:
-    address: apollo://106.54.227.205:8080
-    cluster: dev
-    namespace: dubbogo.yaml
-    app-id: dubbo-go
-    params:
-      secret: 3a64cf5cd9ac4fcd94eb045de433689c
\ No newline at end of file
diff --git a/config/testdata/consumer_config_with_configcenter_apollo.yml b/config/testdata/consumer_config_with_configcenter_apollo.yml
deleted file mode 100644
index 71a8b8c9d..000000000
--- a/config/testdata/consumer_config_with_configcenter_apollo.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-# use apollo config center for fetch config file
-# default config file namespace is dubbo.properties
-# consumer config file Ref:consumer_config.properties
-# provider config file Ref:provider_config.properties
-config_center:
-  protocol: apollo
-  address: 106.12.25.204:8080
-  group: testApplication_yang
-  cluster: dev
-  # 'namespace' can be used for router rule , default value is dubbo.properties
-  # but if you want to change router rule config file ,just open this item
-#  namespace: governance.properties
-  # 'config_file' is not necessary ,default : dubbo.properties
-  # but if you want to change config file ,just open this item
-#  config_file: mockDubbog.properties
-
-# application config required
-application:
-  organization: "ikurento.com"
-  name: "BDTService"
-  module: "dubbogo user-info server"
-  version: "0.0.1"
-  owner: "ZX"
-  environment: "dev"
\ No newline at end of file
diff --git a/config_center/apollo/doc.go b/config_center/apollo/doc.go
deleted file mode 100644
index a94ed5f44..000000000
--- a/config_center/apollo/doc.go
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Package apollo implements config center around Apollo.
-package apollo
diff --git a/config_center/apollo/factory.go b/config_center/apollo/factory.go
deleted file mode 100644
index 536c22feb..000000000
--- a/config_center/apollo/factory.go
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package apollo
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/common"
-	"dubbo.apache.org/dubbo-go/v3/common/extension"
-	"dubbo.apache.org/dubbo-go/v3/config_center"
-	"dubbo.apache.org/dubbo-go/v3/config_center/parser"
-)
-
-func init() {
-	extension.SetConfigCenterFactory("apollo", createDynamicConfigurationFactory)
-}
-
-func createDynamicConfigurationFactory() config_center.DynamicConfigurationFactory {
-	return &apolloConfigurationFactory{}
-}
-
-type apolloConfigurationFactory struct{}
-
-// GetDynamicConfiguration gets the dynamic configuration
-func (f *apolloConfigurationFactory) GetDynamicConfiguration(url *common.URL) (config_center.DynamicConfiguration, error) {
-	dynamicConfiguration, err := newApolloConfiguration(url)
-	if err != nil {
-		return nil, err
-	}
-	dynamicConfiguration.SetParser(&parser.DefaultConfigurationParser{})
-	return dynamicConfiguration, err
-}
diff --git a/config_center/apollo/impl.go b/config_center/apollo/impl.go
deleted file mode 100644
index f6f64e47e..000000000
--- a/config_center/apollo/impl.go
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package apollo
-
-import (
-	"fmt"
-	"regexp"
-	"strings"
-	"sync"
-)
-
-import (
-	gxset "github.com/dubbogo/gost/container/set"
-
-	perrors "github.com/pkg/errors"
-
-	"github.com/zouyx/agollo/v3"
-	"github.com/zouyx/agollo/v3/env/config"
-)
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/common"
-	"dubbo.apache.org/dubbo-go/v3/common/constant"
-	"dubbo.apache.org/dubbo-go/v3/common/logger"
-	cc "dubbo.apache.org/dubbo-go/v3/config_center"
-	"dubbo.apache.org/dubbo-go/v3/config_center/parser"
-)
-
-const (
-	apolloProtocolPrefix = "http://"
-)
-
-type apolloConfiguration struct {
-	cc.BaseDynamicConfiguration
-	url *common.URL
-
-	listeners sync.Map
-	appConf   *config.AppConfig
-	parser    parser.ConfigurationParser
-}
-
-func newApolloConfiguration(url *common.URL) (*apolloConfiguration, error) {
-	c := &apolloConfiguration{
-		url: url,
-	}
-	c.appConf = &config.AppConfig{
-		AppID:            url.GetParam(constant.ConfigAppIDKey, ""),
-		Cluster:          url.GetParam(constant.ConfigClusterKey, ""),
-		NamespaceName:    url.GetParam(constant.ConfigNamespaceKey, cc.DefaultGroup),
-		IP:               c.getAddressWithProtocolPrefix(url),
-		Secret:           url.GetParam(constant.ConfigSecretKey, ""),
-		IsBackupConfig:   url.GetParamBool(constant.ConfigBackupConfigKey, true),
-		BackupConfigPath: url.GetParam(constant.ConfigBackupConfigPathKey, ""),
-	}
-	logger.Infof("[Apollo ConfigCenter] New Apollo ConfigCenter with Configuration: %+v, url = %+v", c.appConf, c.url)
-	agollo.InitCustomConfig(func() (*config.AppConfig, error) {
-		return c.appConf, nil
-	})
-	return c, agollo.Start()
-}
-
-func (c *apolloConfiguration) AddListener(key string, listener cc.ConfigurationListener, opts ...cc.Option) {
-	k := &cc.Options{}
-	for _, opt := range opts {
-		opt(k)
-	}
-
-	key = k.Group + key
-	l, _ := c.listeners.LoadOrStore(key, newApolloListener())
-	l.(*apolloListener).AddListener(listener)
-}
-
-func (c *apolloConfiguration) RemoveListener(key string, listener cc.ConfigurationListener, opts ...cc.Option) {
-	k := &cc.Options{}
-	for _, opt := range opts {
-		opt(k)
-	}
-
-	key = k.Group + key
-	l, ok := c.listeners.Load(key)
-	if ok {
-		l.(*apolloListener).RemoveListener(listener)
-	}
-}
-
-func (c *apolloConfiguration) GetInternalProperty(key string, opts ...cc.Option) (string, error) {
-	newConfig := agollo.GetConfig(c.appConf.NamespaceName)
-	if newConfig == nil {
-		return "", perrors.New(fmt.Sprintf("nothing in namespace:%s ", key))
-	}
-	return newConfig.GetStringValue(key, ""), nil
-}
-
-func (c *apolloConfiguration) GetRule(key string, opts ...cc.Option) (string, error) {
-	return c.GetInternalProperty(key, opts...)
-}
-
-// PublishConfig will publish the config with the (key, group, value) pair
-func (c *apolloConfiguration) PublishConfig(string, string, string) error {
-	return perrors.New("unsupport operation")
-}
-
-// GetConfigKeysByGroup will return all keys with the group
-func (c *apolloConfiguration) GetConfigKeysByGroup(group string) (*gxset.HashSet, error) {
-	return nil, perrors.New("unsupport operation")
-}
-
-func (c *apolloConfiguration) GetProperties(key string, opts ...cc.Option) (string, error) {
-	/**
-	 * when group is not null, we are getting startup configs(config file) from ShutdownConfig Center, for example:
-	 * key=dubbo.propertie
-	 */
-	if key == "" {
-		key = c.appConf.NamespaceName
-	}
-	tmpConfig := agollo.GetConfig(key)
-	if tmpConfig == nil {
-		return "", perrors.New(fmt.Sprintf("nothing in namespace:%s ", key))
-	}
-
-	content := tmpConfig.GetContent()
-	b := []byte(content)
-	if len(b) == 0 {
-		return "", perrors.New(fmt.Sprintf("nothing in namespace:%s ", key))
-	}
-
-	content = string(b[8:]) //remove defalut content= prefix
-	return content, nil
-}
-
-func (c *apolloConfiguration) getAddressWithProtocolPrefix(url *common.URL) string {
-	address := url.Location
-	converted := address
-	if len(address) != 0 {
-		addr := regexp.MustCompile(`\s+`).ReplaceAllString(address, "")
-		parts := strings.Split(addr, ",")
-		addrs := make([]string, 0)
-		for _, part := range parts {
-			addr := part
-			if !strings.HasPrefix(part, apolloProtocolPrefix) {
-				addr = apolloProtocolPrefix + part
-			}
-			addrs = append(addrs, addr)
-		}
-		converted = strings.Join(addrs, ",")
-	}
-	return converted
-}
-
-func (c *apolloConfiguration) Parser() parser.ConfigurationParser {
-	return c.parser
-}
-
-func (c *apolloConfiguration) SetParser(p parser.ConfigurationParser) {
-	c.parser = p
-}
diff --git a/config_center/apollo/impl_test.go b/config_center/apollo/impl_test.go
deleted file mode 100644
index 70b03af11..000000000
--- a/config_center/apollo/impl_test.go
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package apollo
-
-import (
-	"encoding/json"
-	"fmt"
-	"net/http"
-	"net/http/httptest"
-	"strings"
-	"sync"
-	"testing"
-)
-
-import (
-	"github.com/knadh/koanf"
-	"github.com/knadh/koanf/parsers/yaml"
-	"github.com/knadh/koanf/providers/rawbytes"
-
-	"github.com/stretchr/testify/assert"
-)
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/common"
-	"dubbo.apache.org/dubbo-go/v3/config"
-	"dubbo.apache.org/dubbo-go/v3/config_center"
-	"dubbo.apache.org/dubbo-go/v3/config_center/parser"
-	"dubbo.apache.org/dubbo-go/v3/remoting"
-)
-
-const (
-	mockAppId     = "testApplication_yang"
-	mockCluster   = "dev"
-	mockNamespace = "mockDubbogo.yaml"
-	mockNotifyRes = `[{
-	"namespaceName": "mockDubbogo.yaml",
-	"notificationId": 53050,
-	"messages": {
-		"details": {
-			"testApplication_yang+default+mockDubbogo": 53050
-		}
-	}
-}]`
-	mockServiceConfigRes = `[{
-	"appName": "APOLLO-CONFIGSERVICE",
-	"instanceId": "instance-300408ep:apollo-configservice:8080",
-	"homepageUrl": "http://localhost:8080"
-}]`
-)
-
-var mockConfigRes = `{
-	"appId": "testApplication_yang",
-	"cluster": "default",
-	"namespaceName": "mockDubbogo.yaml",
-	"configurations":{
-		"content":"dubbo:\n  application:\n     name: \"demo-server\"\n     version: \"2.0\"\n"
-    },
-	"releaseKey": "20191104105242-0f13805d89f834a4"
-}`
-
-func initApollo() *httptest.Server {
-	handlerMap := make(map[string]func(http.ResponseWriter, *http.Request), 1)
-	handlerMap[mockNamespace] = configResponse
-
-	return runMockConfigServer(handlerMap, notifyResponse)
-}
-
-func configResponse(rw http.ResponseWriter, _ *http.Request) {
-	result := mockConfigRes
-	fmt.Fprintf(rw, "%s", result)
-}
-
-func notifyResponse(rw http.ResponseWriter, req *http.Request) {
-	result := mockNotifyRes
-	fmt.Fprintf(rw, "%s", result)
-}
-
-func serviceConfigResponse(rw http.ResponseWriter, _ *http.Request) {
-	result := mockServiceConfigRes
-	fmt.Fprintf(rw, "%s", result)
-}
-
-// run mock config server
-func runMockConfigServer(handlerMap map[string]func(http.ResponseWriter, *http.Request),
-	notifyHandler func(http.ResponseWriter, *http.Request)) *httptest.Server {
-	uriHandlerMap := make(map[string]func(http.ResponseWriter, *http.Request))
-	for namespace, handler := range handlerMap {
-		uri := fmt.Sprintf("/configs/%s/%s/%s", mockAppId, mockCluster, namespace)
-		uriHandlerMap[uri] = handler
-	}
-	uriHandlerMap["/notifications/v2"] = notifyHandler
-	uriHandlerMap["/services/config"] = serviceConfigResponse
-
-	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		uri := r.RequestURI
-		for path, handler := range uriHandlerMap {
-			if strings.HasPrefix(uri, path) {
-				handler(w, r)
-				break
-			}
-		}
-	}))
-
-	return ts
-}
-
-func TestGetConfig(t *testing.T) {
-	configuration := initMockApollo(t)
-	configs, err := configuration.GetProperties(mockNamespace, config_center.WithGroup("dubbo"))
-	assert.NoError(t, err)
-	koan := koanf.New(".")
-	err = koan.Load(rawbytes.Provider([]byte(configs)), yaml.Parser())
-	assert.NoError(t, err)
-	rc := &config.RootConfig{}
-	err = koan.UnmarshalWithConf(rc.Prefix(), rc, koanf.UnmarshalConf{Tag: "yaml"})
-	assert.NoError(t, err)
-
-	assert.Equal(t, "demo-server", rc.Application.Name)
-}
-
-func TestGetConfigItem(t *testing.T) {
-	configuration := initMockApollo(t)
-	configs, err := configuration.GetInternalProperty("content")
-	assert.NoError(t, err)
-	configuration.SetParser(&parser.DefaultConfigurationParser{})
-	assert.NoError(t, err)
-	type MockRes struct {
-		Configurations struct {
-			Content string
-		}
-	}
-	mockRes := &MockRes{}
-	err = json.Unmarshal([]byte(mockConfigRes), mockRes)
-	assert.NoError(t, err)
-	assert.Equal(t, mockRes.Configurations.Content, configs)
-}
-
-func initMockApollo(t *testing.T) *apolloConfiguration {
-	c := &config.RootConfig{ConfigCenter: &config.CenterConfig{
-		Protocol:  "apollo",
-		Address:   "106.12.25.204:8080",
-		AppID:     "testApplication_yang",
-		Cluster:   "dev",
-		Namespace: "mockDubbogo.yaml",
-	}}
-	apollo := initApollo()
-	apolloUrl := strings.ReplaceAll(apollo.URL, "http", "apollo")
-	url, err := common.NewURL(apolloUrl, common.WithParams(c.ConfigCenter.GetUrlMap()))
-	assert.NoError(t, err)
-	configuration, err := newApolloConfiguration(url)
-	assert.NoError(t, err)
-	return configuration
-}
-
-func TestListener(t *testing.T) {
-	listener := &apolloDataListener{}
-	listener.wg.Add(2)
-	apollo := initMockApollo(t)
-	mockConfigRes = `{
-	"appId": "testApplication_yang",
-	"cluster": "default",
-	"namespaceName": "mockDubbogo.yaml",
-	"configurations": {
-		"registries.hangzhouzk.username": "11111"
-	},
-	"releaseKey": "20191104105242-0f13805d89f834a4"
-}`
-	// test add
-	apollo.AddListener(mockNamespace, listener)
-	listener.wg.Wait()
-	assert.Equal(t, "mockDubbogo.yaml", listener.event)
-	assert.Greater(t, listener.count, 0)
-
-	// test remove
-	apollo.RemoveListener(mockNamespace, listener)
-	listenerCount := 0
-	apollo.listeners.Range(func(_, value interface{}) bool {
-		apolloListener := value.(*apolloListener)
-		for e := range apolloListener.listeners {
-			t.Logf("listener:%v", e)
-			listenerCount++
-		}
-		return true
-	})
-	assert.Equal(t, listenerCount, 0)
-}
-
-type apolloDataListener struct {
-	wg    sync.WaitGroup
-	count int
-	event string
-}
-
-func (l *apolloDataListener) Process(configType *config_center.ConfigChangeEvent) {
-	if configType.ConfigType != remoting.EventTypeUpdate {
-		return
-	}
-	l.wg.Done()
-	l.count++
-	l.event = configType.Key
-}
diff --git a/config_center/apollo/listener.go b/config_center/apollo/listener.go
deleted file mode 100644
index 9080b7387..000000000
--- a/config_center/apollo/listener.go
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package apollo
-
-import (
-	"github.com/zouyx/agollo/v3"
-	"github.com/zouyx/agollo/v3/storage"
-
-	"gopkg.in/yaml.v2"
-)
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/common/logger"
-	"dubbo.apache.org/dubbo-go/v3/config_center"
-	"dubbo.apache.org/dubbo-go/v3/remoting"
-)
-
-type apolloListener struct {
-	listeners map[config_center.ConfigurationListener]struct{}
-}
-
-// nolint
-func newApolloListener() *apolloListener {
-	return &apolloListener{
-		listeners: make(map[config_center.ConfigurationListener]struct{}),
-	}
-}
-
-// OnChange process each listener
-func (a *apolloListener) OnChange(changeEvent *storage.ChangeEvent) {
-}
-
-// OnNewestChange process each listener by all changes
-func (a *apolloListener) OnNewestChange(changeEvent *storage.FullChangeEvent) {
-	b, err := yaml.Marshal(changeEvent.Changes)
-	if err != nil {
-		logger.Errorf("apollo onNewestChange err %+v",
-			err)
-		return
-	}
-	content := string(b)
-	for listener := range a.listeners {
-		listener.Process(&config_center.ConfigChangeEvent{
-			ConfigType: remoting.EventTypeUpdate,
-			Key:        changeEvent.Namespace,
-			Value:      content,
-		})
-	}
-}
-
-// AddListener adds a listener for apollo
-func (a *apolloListener) AddListener(l config_center.ConfigurationListener) {
-	if _, ok := a.listeners[l]; !ok {
-		a.listeners[l] = struct{}{}
-		agollo.AddChangeListener(a)
-	}
-}
-
-// RemoveListener removes listeners of apollo
-func (a *apolloListener) RemoveListener(l config_center.ConfigurationListener) {
-	delete(a.listeners, l)
-}
diff --git a/config_center/apollo/mockDubbogo.yaml.json b/config_center/apollo/mockDubbogo.yaml.json
deleted file mode 100644
index 4131beded..000000000
--- a/config_center/apollo/mockDubbogo.yaml.json
+++ /dev/null
@@ -1 +0,0 @@
-{"appId":"testApplication_yang","cluster":"default","namespaceName":"mockDubbogo.yaml","releaseKey":"20191104105242-0f13805d89f834a4","configurations":{"registries.hangzhouzk.username":"11111"}}
diff --git a/imports/imports.go b/imports/imports.go
index fdb845878..9e26015fa 100644
--- a/imports/imports.go
+++ b/imports/imports.go
@@ -34,7 +34,6 @@ import (
 	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance/roundrobin"
 	_ "dubbo.apache.org/dubbo-go/v3/cluster/router/meshrouter"
 	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
-	_ "dubbo.apache.org/dubbo-go/v3/config_center/apollo"
 	_ "dubbo.apache.org/dubbo-go/v3/config_center/nacos"
 	_ "dubbo.apache.org/dubbo-go/v3/config_center/zookeeper"
 	_ "dubbo.apache.org/dubbo-go/v3/filter/accesslog"