diff --git a/cluster/cluster_impl/base_cluster_invoker.go b/cluster/cluster_impl/base_cluster_invoker.go
index d42a099bbf71608753e463084c6a403ae9627e01..5bcadee281d6f9cc13fbd67dd4d3e01444de86d0 100644
--- a/cluster/cluster_impl/base_cluster_invoker.go
+++ b/cluster/cluster_impl/base_cluster_invoker.go
@@ -29,7 +29,6 @@ import (
 	"github.com/apache/dubbo-go/common/extension"
 	"github.com/apache/dubbo-go/common/utils"
 	"github.com/apache/dubbo-go/protocol"
-	"github.com/apache/dubbo-go/version"
 )
 
 type baseClusterInvoker struct {
@@ -66,8 +65,8 @@ func (invoker *baseClusterInvoker) checkInvokers(invokers []protocol.Invoker, in
 	if len(invokers) == 0 {
 		ip, _ := utils.GetLocalIP()
 		return perrors.Errorf("Failed to invoke the method %v. No provider available for the service %v from "+
-			"registry %v on the consumer %v using the dubbo version %v .Please check if the providers have been started and registered.",
-			invocation.MethodName(), invoker.directory.GetUrl().SubURL.Key(), invoker.directory.GetUrl().String(), ip, version.Version)
+			"registry %v on the consumer %v using the dubbo constant %v .Please check if the providers have been started and registered.",
+			invocation.MethodName(), invoker.directory.GetUrl().SubURL.Key(), invoker.directory.GetUrl().String(), ip, constant.Version)
 	}
 	return nil
 
@@ -77,8 +76,8 @@ func (invoker *baseClusterInvoker) checkInvokers(invokers []protocol.Invoker, in
 func (invoker *baseClusterInvoker) checkWhetherDestroyed() error {
 	if invoker.destroyed.Load() {
 		ip, _ := utils.GetLocalIP()
-		return perrors.Errorf("Rpc cluster invoker for %v on consumer %v use dubbo version %v is now destroyed! can not invoke any more. ",
-			invoker.directory.GetUrl().Service(), ip, version.Version)
+		return perrors.Errorf("Rpc cluster invoker for %v on consumer %v use dubbo constant %v is now destroyed! can not invoke any more. ",
+			invoker.directory.GetUrl().Service(), ip, constant.Version)
 	}
 	return nil
 }
diff --git a/cluster/cluster_impl/failover_cluster_invoker.go b/cluster/cluster_impl/failover_cluster_invoker.go
index 69664269e2ccf362e6b7a12488fe006802d460e2..2ab5fdc16e0d1cc9de4abd75f81f016fce3a6e9d 100644
--- a/cluster/cluster_impl/failover_cluster_invoker.go
+++ b/cluster/cluster_impl/failover_cluster_invoker.go
@@ -26,7 +26,6 @@ import (
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/common/utils"
 	"github.com/apache/dubbo-go/protocol"
-	"github.com/apache/dubbo-go/version"
 )
 
 type failoverClusterInvoker struct {
@@ -90,7 +89,7 @@ func (invoker *failoverClusterInvoker) Invoke(invocation protocol.Invocation) pr
 	}
 	ip, _ := utils.GetLocalIP()
 	return &protocol.RPCResult{Err: perrors.Errorf("Failed to invoke the method %v in the service %v. Tried %v times of "+
-		"the providers %v (%v/%v)from the registry %v on the consumer %v using the dubbo version %v. Last error is %v.",
-		methodName, invoker.GetUrl().Service(), retries, providers, len(providers), len(invokers), invoker.directory.GetUrl(), ip, version.Version, result.Error().Error(),
+		"the providers %v (%v/%v)from the registry %v on the consumer %v using the dubbo constant %v. Last error is %v.",
+		methodName, invoker.GetUrl().Service(), retries, providers, len(providers), len(invokers), invoker.directory.GetUrl(), ip, constant.Version, result.Error().Error(),
 	)}
 }
diff --git a/common/constant/version.go b/common/constant/version.go
new file mode 100644
index 0000000000000000000000000000000000000000..05bc18e0638c4ac7119b0d3af1967a5464c94beb
--- /dev/null
+++ b/common/constant/version.go
@@ -0,0 +1,24 @@
+/*
+ * 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 version
+
+ const (
+	Version = "2.6.0"
+	Name    = "dubbogo"
+	DATE    = "2019/05/06"
+)
diff --git a/config/config_loader.go b/config/config_loader.go
index 720f65f5de6b24b445b7ce07dd2daaba0a856681..cabf3d1ed8606093f3235befac1b02f9a0c3a482 100644
--- a/config/config_loader.go
+++ b/config/config_loader.go
@@ -28,7 +28,6 @@ import (
 	"github.com/apache/dubbo-go/common"
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/common/logger"
-	"github.com/apache/dubbo-go/version"
 )
 
 var (
@@ -94,7 +93,7 @@ func Load() {
 						checkok = false
 						count++
 						if count > maxWait {
-							panic(fmt.Sprintf("Failed to check the status of the service %v . No provider available for the service to the consumer use dubbo version %v", refconfig.InterfaceName, version.Version))
+							panic(fmt.Sprintf("Failed to check the status of the service %v . No provider available for the service to the consumer use dubbo constant %v", refconfig.InterfaceName, constant.Version))
 						}
 						time.Sleep(time.Second * 1)
 						break
diff --git a/registry/etcdv3/registry.go b/registry/etcdv3/registry.go
index c716653cf9220256f28468f8e322a499eea61299..5802142989e5d8297f027ddecff3d7780070729f 100644
--- a/registry/etcdv3/registry.go
+++ b/registry/etcdv3/registry.go
@@ -23,7 +23,6 @@ import (
 	"github.com/apache/dubbo-go/common/utils"
 	"github.com/apache/dubbo-go/registry"
 	"github.com/apache/dubbo-go/remoting/etcdv3"
-	"github.com/apache/dubbo-go/version"
 )
 
 var (
@@ -229,7 +228,7 @@ func (r *etcdV3Registry) registerConsumer(svc common.URL) error {
 	params.Add("protocol", svc.Protocol)
 
 	params.Add("category", (common.RoleType(common.CONSUMER)).String())
-	params.Add("dubbo", "dubbogo-consumer-"+version.Version)
+	params.Add("dubbo", "dubbogo-consumer-"+constant.Version)
 
 	encodedURL := url.QueryEscape(fmt.Sprintf("consumer://%s%s?%s", localIP, svc.Path, params.Encode()))
 	dubboPath := fmt.Sprintf("/dubbo/%s/%s", svc.Service(), (common.RoleType(common.CONSUMER)).String())
@@ -266,7 +265,7 @@ func (r *etcdV3Registry) registerProvider(svc common.URL) error {
 	params.Add("ip", localIP)
 	params.Add("anyhost", "true")
 	params.Add("category", (common.RoleType(common.PROVIDER)).String())
-	params.Add("dubbo", "dubbo-provider-golang-"+version.Version)
+	params.Add("dubbo", "dubbo-provider-golang-"+constant.Version)
 	params.Add("side", (common.RoleType(common.PROVIDER)).Role())
 
 	if len(svc.Methods) == 0 {
diff --git a/registry/zookeeper/registry.go b/registry/zookeeper/registry.go
index 003ee2940d43005b06457d9dbbaa2e2065d03693..e2fca972306aa380e3f584b093e1315e1468a45e 100644
--- a/registry/zookeeper/registry.go
+++ b/registry/zookeeper/registry.go
@@ -41,7 +41,6 @@ import (
 	"github.com/apache/dubbo-go/common/utils"
 	"github.com/apache/dubbo-go/registry"
 	"github.com/apache/dubbo-go/remoting/zookeeper"
-	"github.com/apache/dubbo-go/version"
 )
 
 const (
@@ -304,7 +303,7 @@ func (r *zkRegistry) register(c common.URL) error {
 		// DubboRole               = [...]string{"consumer", "", "", "provider"}
 		// params.Add("category", (RoleType(PROVIDER)).Role())
 		params.Add("category", (common.RoleType(common.PROVIDER)).String())
-		params.Add("dubbo", "dubbo-provider-golang-"+version.Version)
+		params.Add("dubbo", "dubbo-provider-golang-"+constant.Version)
 
 		params.Add("side", (common.RoleType(common.PROVIDER)).Role())
 
@@ -347,7 +346,7 @@ func (r *zkRegistry) register(c common.URL) error {
 		params.Add("protocol", c.Protocol)
 
 		params.Add("category", (common.RoleType(common.CONSUMER)).String())
-		params.Add("dubbo", "dubbogo-consumer-"+version.Version)
+		params.Add("dubbo", "dubbogo-consumer-"+constant.Version)
 
 		rawURL = fmt.Sprintf("consumer://%s%s?%s", localIP, c.Path, params.Encode())
 		encodedURL = url.QueryEscape(rawURL)