You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by zh...@apache.org on 2021/09/04 15:57:42 UTC

[dubbo-go-samples] branch 1.5 updated (d39a206 -> b36976b)

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

zhaoyunxing pushed a change to branch 1.5
in repository https://gitbox.apache.org/repos/asf/dubbo-go-samples.git.


    omit d39a206  fix generic invocation bug (#210)
    omit c8bc160  Update dubbo-go version to 1.5.7-rc2 (#207)
    omit 23651ad  Ftr: test shopping for 1.5 (#186)
    omit 98e2094  fix: enhance 1.5 integrate test samples (#182)
    omit c57849c  Add 1.5 branch ci
    omit e05b52d  fix game integrate error & del useless file (#184)
    omit c281b0b  up:add nacos registry (#178)
    omit e7d2aad  mod imports (#168)
    omit 0ea6720  Feature/1.5 seata test (#166)
    omit e4de5f4  fix: 1.5 ci test (#165)
    omit 725d391  Ftr: Add integration test multi-server support (#158)
    omit baafd12  Improve/master 1.5 (#116)
    omit b150a29  change dubbo-go version (#115)
    omit 024ac44  Merge pull request #114 from zhaoyunxing92/1.5.7-rc
    omit 6497cc2  up:修改方法名称
    omit bddfc7d  Merge pull request #113 from zhaoyunxing92/1.5.7-rc
    omit 1841665  up:修改dubbo-go版本
    omit 7e99b8a  fix: fix seata sample, make it work properly (#108)
    omit d4819b0  clear 1.5 old codes
    omit 7f9cdba  Fix  multi registry (#1) (#100)
    omit 3a225ba  Merge pull request #99 from PhilYue/feature/version
    omit 0a5e6b9  add readme of game (#97)
    omit a3095a7  update: readme
    omit d8fc0b5  update: tests version provider
    omit 840de34  update: 1. clean code 2. add readme of multiple version sample
    omit 53531d0  add: dubbo-go version sample
    omit 8b45913  Merge pull request #14 from apache/master
    omit faf28eb  Merge pull request #98 from Mulavar/fix-spelling-mistake
    omit 92b845c  fix(readme_zh.md): fix spelling mistake
    omit 05c90ac  Merge pull request #13 from apache/master
    omit 05f9a9f  invoke grpc service
    omit 1a1fc07  Merge pull request #12 from apache/master
    omit 951f4d0  up:mod优化 (#94)
    omit afdf605  Merge pull request #11 from apache/master
    omit df4dea7  clean up integration test (#92)
    omit 5652f00  remove shop examples, since it's dup with chain and shopping-order (#90)
    omit df067ac  enhance tls examples (#91)
    omit b664144  Router example enhance (#89)
    omit 78d2391  Ftr:  add the module of shopping-order (#82)
    omit 9e229ad  Merge pull request #88 from beiwei30/router-examples
    omit bfdd177  disable condition router example's CI
    omit a32a59c  fix grammar.
    omit 071cd3c  enhance router examples
    omit 970d11c  Merge pull request #9 from apache/master
    omit 6ad773a  Merge pull request #87 from beiwei30/group-run-configs
    omit aa80cf4  ftr: group run config files into sub-directories
    omit f3205e5  Merge pull request #85 from beiwei30/multi-zone
    omit a5cce3d  disable generic integration test
    omit efb5eb4  multi-zone example
    omit 8cf5780  fix directory problem.
    omit a9611d5  Merge pull request #80 from apache/fix/Id
    omit 867e84a  Id -> ID
    omit 09fe57d  Merge pull request #79 from zfkun/game
    omit fd8dba7  add:game samples
    omit af52517  Merge pull request #8 from apache/master
    omit 091a70a  Merge pull request #68 from cjphaha/tls
    omit 96a7667  Merge pull request #78 from xiaoliu10/fix_zk_configcenter
    omit 26ee38d  Merge pull request #77 from zhaoyunxing92/generic
    omit 903836b  1. fix zk configcenter can not found zk node
    omit f710bd4  up:mv it to the 3rd import block
    omit 72d67bc  up:mv it to the 3rd import block
    omit 529412a  add:generic samples
    omit 6915bbb  mod Id to ID
    omit f09c490  del blank line go-server/pkg/user.go
    omit 02a9c8c  Merge pull request #70 from milerL/nacos
    omit 5565f5c  Merge pull request #75 from zhaoyunxing92/multi-registry
    omit 4a7e053  up:语法问题
    omit 4b1439a  up:更新导报问题
    omit f7604ca  add:multi registry
    omit 800b322  Merge pull request #73 from xiaoliu10/upgrade_seata_version
    omit 3e892e3  mod refmt go-client/pkg/user
    omit 6cc79ea  mod problems in pr
    omit 7d40940  Merge pull request #72 from beiwei30/hello-world
    omit 07edb96  Upgrade the Seata version to adapt the Getty WritePkg method to increase the return value
    omit d9304c9  Upgrade the Seata version to adapt the Getty WritePkg method to increase the return value
    omit 0ab36fc  fix: issue#71
    omit 76f2b1c  修改:修复registry/nacos示例无法正常使用的问题,调整client.yml和server.yml方便阅读
    omit 807bb2d  Merge pull request #7 from apache/master
    omit ac38818  adjust import sequence in nacos
    omit 7f64aed  add apache license & mod folder
    omit 84c0a7e  add tls sample
    omit 101f7e9  Merge pull request #52 from yakecanlee/feature/add-sample
    omit 1fca0de  fix helloworld sample
    omit bacaeed  fix error imports
    omit 49f45a6  fix helloworld java sample
    omit 8ec9fbe  adjust imports and readme
    omit 0f65d0b  group the imports
    omit aeab8f8  add readme_zh for samples
    omit 38ed266  add run configuration for samples
    omit 33eafbe  add readme and run configuration for rest sample
    omit 8863839  add readme for group
    omit 71cf228  add readme for generic and helloworld
    omit a804655  Merge pull request #62 from beiwei30/configcenter
    omit 12a139c  fix: regroup import for nacos configcenter
    omit 502c238  fix: regroup imports
    omit e5999a2  Merge pull request #66 from beiwei30/filter
    omit ae3feca  Merge pull request #64 from beiwei30/docker
    omit 219ffe3  Merge pull request #63 from beiwei30/direct
    omit d75c0be  enable IT for configcenter/zookeeper and filter/sentinel
    omit aacfd85  fix: make integration test work for custom filter, correct dir
    omit a01ac0a  fix: README for filter samples
    omit cf6167f  fix: revise README
    omit b620ba6  fix: group import, add run files
    omit 6113e69  fix: add run configs for docker
    omit f9e711f  fix: regroup import
    omit ec9f630  fix: regroup imports
    omit 109653f  Merge pull request #6 from apache/master
    omit 7df670e  configcenter readme, import and run files
    omit b970ee8  Merge pull request #57 from beiwei30/config-api
    omit a300659  Merge pull request #61 from zhaoyunxing92/master
    omit 42fa80e  up:调整import顺序
    omit e575e56  Merge pull request #59 from PhilYue/feature/direct/readme
    omit 9efee02  Merge pull request #5 from apache/master
    omit a25270e  修复语法错误
    omit b004549  add:metric readme
    omit 41d83f4  Add: fix the .run for direct
    omit 80d6086  Add: .run for direct
    omit 47c5008  Doc: improving README and README_zh
    omit 176cbe4  Mod: clear out the unneeded config
    omit f7bd0b1  Merge pull request #55 from beiwei30/async
    omit 9806c48  Merge pull request #58 from beiwei30/context
    omit bb4b680  Doc: formatting docs of README_zh
    omit 2f4856d  optmize imports
    omit c5d7635  optimize imports
    omit a17295c  Doc: formatting docs of README and cleaning
    omit 4bfdc91  Doc: formatting docs of README
    omit 28f6443  Doc: improving docs of README
    omit 207264e  Doc: adding direct README_zh and cleaning
    omit ca13cd8  fix: regroup import
    omit 302ab73  add:metric文档
    omit ca1e14b  feat: add run configs, and regroup import
    omit 195b985  fix: regroup imports
    omit 7f05bde  fix: add run configs, bump up dubbo-go version, revise README
    omit d7687f2  Doc: adding direct README
    omit 97e33bb  Merge pull request #4 from apache/master
    omit 52644af  Merge pull request #53 from zhaoyunxing92/master
    omit 58e82e7  add README
    omit eb2e0ee  Merge pull request #3 from apache/master
    omit 566af02  add run configurations and fix client issue.
    omit 725de98  Merge pull request #54 from beiwei30/chain
    omit ae86a09  group var declaration
    omit 58c828b  optimize imports
    omit 2525e05  add apache license header
    omit d2bf83e  add "chain" example
    omit cb325dd  Merge pull request #2 from apache/master
    omit b393262  add:metric文档
    omit df451eb  Merge pull request #51 from LaurenceLiZhixin/fix/etcd
    omit cb3b01b  Merge pull request #49 from lauyang/patch-2
    omit a594672  fix: add provide_by
    omit c6e5758  Update README_zh.md
    omit 6be9874  Merge pull request #48 from dk-lockdown/master
    omit 497cc48  upgrade seata-golang version
    omit bb7a0d6  Merge pull request #43 from LaurenceLiZhixin/ftr/docker
    omit 4b3fb3b  Merge pull request #44 from LaurenceLiZhixin/ftr/config-api
    omit 2b4f2ac  Merge pull request #45 from LaurenceLiZhixin/fix/consul-readme
    omit fe189cd  Merge pull request #46 from LaurenceLiZhixin/ftr/context
    omit dedc754  fix: add consul readme
    omit a3d14e6  fix: add zh readme
    omit 0b01f9d  fix: add zh readme
    omit 6632817  fix: add cn readme
    omit 5c609cb  Merge pull request #47 from cityiron/1.5.6-test
    omit e614f74  update dubbogo to 1.5 latest commit
    omit 92e0a93  ftr: context sample
    omit ae13df4  fix: consul readme
    omit c5b09e7  ftr:config api
    omit f96fe82  ftr: add docker
    omit 425b1a2  Merge pull request #41 from beiwei30/attachment-run-config
    omit 224f018  Merge pull request #40 from beiwei30/translate
    omit 5e69c94  provide run configuration for attachment sample
    omit f19b59f  provide HOWTO, and translate all docs into Chinese.
    omit 91c2483  Merge pull request #39 from beiwei30/docs
    omit 8f37179  enhance docs
    omit 885db97  Merge pull request #38 from zhaoyunxing92/master
    omit 6f5c173  add:.run file
    omit 7bbd016  Merge pull request #37 from beiwei30/attachment
    omit b5867ec  add zh_CN README
    omit f896ca7  comment sentinel tempararily
    omit aef62db  adjust sentinel version
    omit 1b1db7b  bump up sentinel-go version to v1.0.2
    omit e452c22  add CI badge
    omit 7257826  add attachment sample
    omit 1e9b072  Merge branch '1.5.5'
    omit de91c00  merge master
    omit df07a3e  merge master
    omit 86a6f7b  Merge pull request #24 from fangyincheng/fix-2.7
    omit 329248b  Merge pull request #32 from LaurenceLiZhixin/fix/grpcStreamBug
    omit 5ac5646  Merge pull request #31 from louyuting/20201227-update-sentinel-go
    omit 145b86c  fix: fix dubbo grpc stream bug
    omit 469fe78  upgrade sentinel go to 1.0.1
    omit 49609b5  refact generic/java
    omit ac5b159  resolve conflicts
    omit a2ec4b1  Merge pull request #17 from apache/1.5.5
    omit 0c6af36  update version for release
    omit d439511  update version
    omit c7048b9  update version
    omit 7f02dae  resolve conflicts
    omit dd4be5b  add java for general
    omit 3e66db1  Merge pull request #27 from apache/fix_mod
    omit ab98b4e  resolve conflict
    omit 8736511  fix: go mod tidy error
    omit 95b1fae  fix router problem
    omit 740f2f7  Merge pull request #25 from georgehao/1.5.5
    omit 37850bb  Merge pull request #23 from cityiron/fix-sd-file
    omit fa829be  Merge branch '1.5.5' into 1.5.5-georgehao
    omit 1b1fa1f  Merge branch '1.5.5' into fix-sd-file
    omit 2fd951f  remove sd/consul
    omit bb10e58  merge
    omit 3274111  add provid_by
    omit ed77fa5  feat: add registry/servicediscovery/etcd client.yaml add provide_by
    omit 657cf27  modify consul demo to support makefile (#22)
    omit 061030c  test
    omit dd84b14  Merge pull request #21 from LaurenceLiZhixin/1.5.5
    omit 44bd9a5  Merge pull request #20 from cityiron/seata-sample
    omit 398f653  fix: change pb.go
    omit 9d10173  fix: use protobuf 1.3.2 to generate proper pb.go
    omit de843d1  fix: re cicd
    omit 92c0711  fix: dubbo-go repository path
    omit 12e1125  add integrate
    omit ff07427  change client name equals provider
    omit 1d00fc6  remove seata mod
    omit 7a992b8  Merge pull request #16 from pantianying/sentinel-filter
    omit e8b3c67  fix: delete unused gosum
    omit 0f66623  fix: change grpc and sentinel version
    omit 5f5e8e7  fix bug
    omit a735fdc  add script on integrate
    omit f53386f  fix router case
    omit 44fda64  seata sample run
    omit a031c0f  fix sd/zookeeper case
    omit 83f126f  Merge remote-tracking branch 'apache-dubbo-go-samples/1.5.5' into 1.5.5
    omit 1680468  add sd/zookeeper case
    omit cfd2c00  Update dubbo-go version
    omit 1aa054f  Update dubbo-go version
    omit 0723cca  fix test problem
    omit dad13c6  update version num
    omit f2c5cc5  update pkg
    omit 498e589  Merge pull request #19 from mark4z/master
    omit 8dea98d  add sd/zookeeper case
    omit 321a312  fix integration
    omit 7db7587  fix integration
    omit 70662bb  Update dubbo-go version
    omit b8c2ea5  Update dubbo-go version
    omit d6ef2ef  fix test problem
    omit 6860d94  update version num
    omit d419676  add integration test
    omit 68f9cb6  add sentinel-filter sample
    omit 1061538  Merge pull request #15 from zouyx/master
    omit 69ee55b  remove multi-registry case
    omit 32974b3  remove router/tag case and fix zookeeper service discovery case
    omit 4323b16  remove configcenter/zookeeper case
    omit fca4c3c  fix test problem
    omit c6c8223  fix test problem
    omit 19490a7  fix test problem
    omit 700b171  fix test problem
    omit 43bfcd5  add configcenter/zookeeper case
    omit cc6e794  change log level
    omit 8935e9f  add more test case
    omit 0ba46db  update pkg
    omit b1cc35c  Merge pull request #13 from zouyx/master
    omit 90d7aec  change log level
    omit ecb1e84  fix test problem
    omit 23f4ccb  remove test
    omit e948015  change test method
    omit 718b4f1  fix test problem
    omit 1add7c8  add exit code for test
    omit 6436108  add exit code for test
    omit 6223164  Test return exit code when panic
    omit a2ed46c  Fix Makefile bug
    omit 1882fd2  change stop to clean step
    omit a9808d8  delete useless files
    omit 9e52237  1.change log level for async dir 2.revert makefile
    omit 7c52339  1.delete useless dir 2.add _ "github.com/apache/dubbo-go/metadata/service/inmemory" for all test dir 3.change log level to error
    omit 2d36800  fix problems
    omit eb0aecd  add more test case
    omit 2e433b3  add more test case
    omit a7d4e82  add more test case
    omit a333952  add more test case
    omit 2533021  add more test case
    omit 22493e1  add more test case
    omit 0207628  update test case
    omit 5d585d2  update test case
    omit 08417eb  fix problems
    omit bf718cd  fix problems
    omit 027d614  add general test
    omit e00e54e  add general test
    omit ac06aa4  Merge branch 'master-apache-dubbo-go-samples'
    omit 19caad0  Merge branch 'master-apache-dubbo-go-samples'
    omit 919222d  fix problems
    omit b902b00  Merge remote-tracking branch 'origin/master'
    omit 4c0d8df  Merge branch 'feature/addTravis'
    omit ff7ed65  add github action
    omit 7bf5670  Update blank.yml
    omit d1e1b08  add github action
    omit f385cbc  add github action
    omit 66eaa87  Create blank.yml
    omit 904a232  Merge pull request #12 from zouyx/master
    omit 2793183  fix bug
    omit fd1ccfd  fix problems
    omit 795ef6c  rename package
    omit 92319db  fix package problem
    omit d7773ce  add travis
    omit 6a87059  make grpc work with integration test
    omit db32d44  make general/dubbo work with integration test
    omit eca144a  make integration test work for router/condition
    omit e11dab6  enhance makefile
    omit 1eb5b31  enhance makefile to allow replace variables in conf yaml files.
    omit 8630dff  servicediscovery/zookeeper
    omit 4e372b2  make registry/servicediscovery/nacos work with integration test
    omit 9979a21  make registry/servicediscovery/file work with integration test
    omit 4e25961  correct registry/servicediscovery/etcd
    omit 218caa4  add a FIXME
    omit e5909a9  refresh dubbo-go to snapshot, make servicediscovery/etcd works.
    omit 4d34a4f  make integration test works for registry/nacos
    omit 33a0f2e  make integration test work for registry/etcd
    omit 5ce065e  reformat helloworld
    omit 339e5ff  make integration test work for multi-registry
    omit 208abb7  enhance makefile
    omit c25e8aa  rename dir
    omit 104c314  make integration test work for metric and zone
    omit 62b7282  fix PID
    omit c666d1c  Merge pull request #10 from zouyx/feature/fixAutoTest
    omit 34dfe3d  Merge pull request #9 from apache/tag_router
    omit 6f8cda7  Fix: fmt codes
    omit 84f4936  Fix: fmt codes
    omit 7406106  Fix: lost a pkg in general
    omit 953673d  Add: tag router examples
    omit ed3f3d1  Merge pull request #8 from zouyx/feature/fixAutoTest
    omit 9607e80  change test steps
    omit 33a5de3  change dir
    omit ba5f0fd  start integrate test
    omit 25f33f8  remove problems code
    omit f3de20f  delete
    omit 7b9e32f  travis add Make
    omit e0e2fbe  make integration test works for metrics
    omit 47811fd  clean up useless code
    omit 2142d1e  make integration test works for filter/tpslimit
    omit 5c07bf5  make integration test works for fiter/custom_filter
    omit f19feed  Merge pull request #7 from zhangshen023/consul_service_discovery
    omit f2dfc66  make integration test work for configcenter/zookeeper
    omit aeb1750  remove useless java dirs
    omit 20e4f90  make integration test works for nacos
    omit cdbddd8  clean up imports
    omit a591c09  make integration test works for configcenter/apollo
    omit e42f3d2  make integration test works for async
    omit b1fa2c6  make integration test works for direct
    omit b3fdafb  make IT works for generic samples
    omit f71bec1  code optimization
    omit 3722ee2  format import
    omit 1680a19  Merge pull request #3 from LaurenceLiZhixin/feat/grpc-stream-support
    omit 680f884  fix:import block
    omit 5536f32  consul service discovery sample
    omit 0da9873  update README, remove 'dubbo' sub dir from 'helloworld'
    omit 681e209  use makefile for helloworld client and server
    omit 4f72d63  enhance config and package name
    omit 7983c93  enhance makefile
    omit 39f5571  integration test for helloworld service
    omit 653c445  Merge pull request #5 from zouyx/feature/fixAutoTest
    omit 15a68f6  enable issues
    omit 28bb1f0  Merge pull request #4 from zouyx/feature/fixAutoTest
    omit c8444c5  Create .asf.yaml
    omit 7e1b8b1  feat: add grpc stream sample
    omit eba7616  Merge pull request #2 from zouyx/feature/fixAutoTest
    omit 744819c  Merge pull request #1 from zouyx/feature/fixAutoTest
     add 62367b3  Merge pull request #1 from zouyx/feature/fixAutoTest
     add 327e16c  Merge pull request #2 from zouyx/feature/fixAutoTest
     add ca6e66c  Create .asf.yaml
     add adc5872  Merge pull request #4 from zouyx/feature/fixAutoTest
     add 6250197  enable issues
     add 285dc81  Merge pull request #5 from zouyx/feature/fixAutoTest
     add 198faaf  feat: add grpc stream sample
     add 9b85b42  fix:import block
     add befeee3  Merge pull request #3 from LaurenceLiZhixin/feat/grpc-stream-support
     add 6a59417  format import
     add da89cd8  consul service discovery sample
     add a5d7cb8  code optimization
     add e2a30f0  Merge pull request #7 from zhangshen023/consul_service_discovery
     add d6bb136  fix bug
     add 4b81bff  integration test for helloworld service
     add edf050e  enhance makefile
     add 58fb84b  enhance config and package name
     add 4346c49  use makefile for helloworld client and server
     add ed46acc  update README, remove 'dubbo' sub dir from 'helloworld'
     add 2825696  make IT works for generic samples
     add f61bb7f  make integration test works for direct
     add 6952ae2  make integration test works for async
     add 807a28c  make integration test works for configcenter/apollo
     add 653871b  clean up imports
     add 2f08ee6  make integration test works for nacos
     add 0b7b136  remove useless java dirs
     add d68eaf6  make integration test work for configcenter/zookeeper
     add c453c5e  make integration test works for fiter/custom_filter
     add ed55826  make integration test works for filter/tpslimit
     add b6e8d28  clean up useless code
     add 86f06e2  make integration test works for metrics
     add 4656ad4  travis add Make
     add e5449a1  delete
     add 8a1b407  remove problems code
     add ebb3c60  start integrate test
     add eac5647  change dir
     add 3083eed  change test steps
     add 723530b  fix PID
     add 6e1323f  make integration test work for metric and zone
     add f2ce2dd  rename dir
     add aa17eaa  enhance makefile
     add 6fb39f7  make integration test work for multi-registry
     add 680525b  reformat helloworld
     add 709879b  make integration test work for registry/etcd
     add 4e611c4  make integration test works for registry/nacos
     add dafa9ce  refresh dubbo-go to snapshot, make servicediscovery/etcd works.
     add fe2dbd2  add a FIXME
     add 5c12aaa  correct registry/servicediscovery/etcd
     add 062fd67  make registry/servicediscovery/file work with integration test
     add af44f46  make registry/servicediscovery/nacos work with integration test
     add d9b6eb1  servicediscovery/zookeeper
     add 9ac78ce  enhance makefile to allow replace variables in conf yaml files.
     add 497fd36  enhance makefile
     add 62eaba8  make integration test work for router/condition
     add 242b0ab  make general/dubbo work with integration test
     add 92396ef  make grpc work with integration test
     add c603517  add travis
     add 9d3257a  fix package problem
     add 603bca5  rename package
     add 596bf96  fix problems
     add 477cdb4  add github action
     add 60032e0  add github action
     add 9fe11cc  add github action
     add c06ff0b  Merge branch 'feature/addTravis'
     add e179a3b  Create blank.yml
     add 54b33d6  Update blank.yml
     add 05f5174  Merge remote-tracking branch 'origin/master'
     add b352f67  fix problems
     add 6d7960d  Merge pull request #8 from zouyx/feature/fixAutoTest
     add b7fab58  Add: tag router examples
     add c70347b  Fix: lost a pkg in general
     add 49f7ade  Fix: fmt codes
     add f4c360c  Fix: fmt codes
     add 0fa373a  Merge pull request #9 from apache/tag_router
     add 8bd4d9a  Merge pull request #10 from zouyx/feature/fixAutoTest
     add ade3126  Merge branch 'master-apache-dubbo-go-samples'
     add 3682b10  Merge pull request #12 from zouyx/master
     add 83ce5a6  Merge branch 'master-apache-dubbo-go-samples'
     add 18dd683  add general test
     add 46032d4  add general test
     add 9ee0bfb  fix problems
     add 61eb4c4  fix problems
     add b420a9f  update test case
     add d512a10  update test case
     add 6d3fe90  add more test case
     add 72d11e2  add more test case
     add 4fc6fc5  add more test case
     add c4ae316  add more test case
     add 16d67f1  add more test case
     add a2d0cf7  add more test case
     add c25845d  fix problems
     add 5e263ff  1.delete useless dir 2.add _ "github.com/apache/dubbo-go/metadata/service/inmemory" for all test dir 3.change log level to error
     add 37950d9  1.change log level for async dir 2.revert makefile
     add e65e2fa  delete useless files
     add 30e5459  change stop to clean step
     add e3d9744  Fix Makefile bug
     add 343a747  Test return exit code when panic
     add 036ca8e  add exit code for test
     add ff553f9  add exit code for test
     add 1fa6bf5  fix test problem
     add 12ad93f  change test method
     add e24a813  remove test
     add acc07e3  fix test problem
     add 91a25c0  change log level
     add 9d406ae  Merge pull request #13 from zouyx/master
     add 4bed1c6  add more test case
     add 1c64d17  change log level
     add 48733d8  add configcenter/zookeeper case
     add 897d981  fix test problem
     add ef67824  fix test problem
     add 824afd8  fix test problem
     add 79d0a1d  fix test problem
     add ccb9654  remove configcenter/zookeeper case
     add 36dc561  remove router/tag case and fix zookeeper service discovery case
     add 2a2f12d  remove multi-registry case
     add 89edc98  Merge pull request #15 from zouyx/master
     add d65d87b  fix integration
     add aebeabb  fix integration
     add 6e6b603  Merge pull request #19 from mark4z/master
     add e7993aa  add sentinel-filter sample
     add 5a80174  add integration test
     add f417877  add script on integrate
     add 54c84a1  fix bug
     add ecc57cb  Merge pull request #16 from pantianying/sentinel-filter
     add 4b50b47  test
     add 2a4b05a  add java for general
     add f6f3286  update pkg
     add 4daefd8  update version num
     add d49f133  fix test problem
     add a1acc23  Update dubbo-go version
     add eb28097  Update dubbo-go version
     add 89907b1  add sd/zookeeper case
     add 2e25d47  update pkg
     add d02874c  update version num
     add 01f19a5  fix test problem
     add abcb43d  Update dubbo-go version
     add e4533a2  Update dubbo-go version
     add 30886bf  add sd/zookeeper case
     add 475054a  Merge remote-tracking branch 'apache-dubbo-go-samples/1.5.5' into 1.5.5
     add 6462b49  fix sd/zookeeper case
     add 8eaedb5  fix router case
     add 2bf0361  fix: go mod tidy error
     add 6ff698e  seata sample run
     add 5e8cc73  remove seata mod
     add ab051f5  change client name equals provider
     add d18040a  add integrate
     add 7c23577  add provid_by
     add d76e545  Merge pull request #20 from cityiron/seata-sample
     add e956b7d  fix: change grpc and sentinel version
     add c76bb8d  fix: delete unused gosum
     add 8268f52  fix: dubbo-go repository path
     add 201992b  fix: re cicd
     add 8c9c239  fix: use protobuf 1.3.2 to generate proper pb.go
     add 5dbaa66  fix: change pb.go
     add cc40470  Merge pull request #21 from LaurenceLiZhixin/1.5.5
     add bc81e94  modify consul demo to support makefile (#22)
     add 7464a65  merge
     add a19f63d  remove sd/consul
     add 279e46b  Merge branch '1.5.5' into fix-sd-file
     add 4884e9c  Merge pull request #23 from cityiron/fix-sd-file
     add 845616f  feat: add registry/servicediscovery/etcd client.yaml add provide_by
     add 2a1c857  Merge branch '1.5.5' into 1.5.5-georgehao
     add b436635  Merge pull request #25 from georgehao/1.5.5
     add 98a15f7  fix router problem
     add 099b960  resolve conflict
     add 1107469  Merge pull request #27 from apache/fix_mod
     add 5ce1f6c  resolve conflicts
     add 3d13bd4  update version
     add 033d650  update version
     add 7f38c96  update version for release
     add 7074301  resolve conflicts
     add 28719de  refact generic/java
     add 50760ee  Merge pull request #24 from fangyincheng/fix-2.7
     add ac30af9  Merge pull request #17 from apache/1.5.5
     add 086e2da  upgrade sentinel go to 1.0.1
     add aadb7e4  Merge pull request #31 from louyuting/20201227-update-sentinel-go
     add dd6c19a  fix: fix dubbo grpc stream bug
     add 2b35ff3  Merge pull request #32 from LaurenceLiZhixin/fix/grpcStreamBug
     add ec4fd0b  merge master
     add b6b347a  merge master
     add 2702e17  Merge branch '1.5.5'
     add 1035c4c  add CI badge
     add f7e0f1a  bump up sentinel-go version to v1.0.2
     add 1f1383d  adjust sentinel version
     add 9b0e1d4  comment sentinel tempararily
     add 3ad64bc  add attachment sample
     add cb715b0  add zh_CN README
     add c25fdc1  Merge pull request #37 from beiwei30/attachment
     add 1c10231  add:.run file
     add ff81b51  Merge pull request #38 from zhaoyunxing92/master
     add 68fbd91  enhance docs
     add ca1fc7d  Merge pull request #39 from beiwei30/docs
     add a2b55f3  provide HOWTO, and translate all docs into Chinese.
     add 0d6018d  Merge pull request #40 from beiwei30/translate
     add 0b02894  provide run configuration for attachment sample
     add ee77fea  Merge pull request #41 from beiwei30/attachment-run-config
     add 1830d30  update dubbogo to 1.5 latest commit
     add 8f4f72b  Merge pull request #47 from cityiron/1.5.6-test
     add 999598f  ftr: context sample
     add 40ce18a  fix: add zh readme
     add 479842f  Merge pull request #46 from LaurenceLiZhixin/ftr/context
     add f4a3715  fix: consul readme
     add 3dd5ad5  fix: add consul readme
     add 3f83dde  Merge pull request #45 from LaurenceLiZhixin/fix/consul-readme
     add fb1b45a  ftr:config api
     add ec253ca  fix: add zh readme
     add 55939ee  Merge pull request #44 from LaurenceLiZhixin/ftr/config-api
     add 761bd1e  ftr: add docker
     add 9328bc0  fix: add cn readme
     add 2e150f5  Merge pull request #43 from LaurenceLiZhixin/ftr/docker
     add 8e3c649  upgrade seata-golang version
     add 0aa1018  Merge pull request #48 from dk-lockdown/master
     add 2f36b6c  Update README_zh.md
     add 3cf6831  Merge pull request #49 from lauyang/patch-2
     add b9df170  fix: add provide_by
     add 9b21628  Merge pull request #51 from LaurenceLiZhixin/fix/etcd
     add f962482  add "chain" example
     add ae6f22a  add apache license header
     add 27238a8  optimize imports
     add a4c5ac2  group var declaration
     add 19c6ece  Merge pull request #54 from beiwei30/chain
     add 8ef9122  add:metric文档
     add dac4b01  Merge pull request #53 from zhaoyunxing92/master
     add db3d56f  feat: add run configs, and regroup import
     add 362078c  optmize imports
     add 7bfb13c  Merge pull request #58 from beiwei30/context
     add c0c8b1c  add run configurations and fix client issue.
     add e8a63fc  add README
     add 2244de1  add:metric文档
     add d6b7714  fix: regroup import
     add c5ced7e  optimize imports
     add 2cccc5f  Merge pull request #55 from beiwei30/async
     add 4af0861  Merge pull request #2 from apache/master
     add e095b64  Merge pull request #3 from apache/master
     add 3686193  Merge pull request #4 from apache/master
     add 9415d1d  Doc: adding direct README
     add 360cb8c  Doc: adding direct README_zh and cleaning
     add a01f1fb  Doc: improving docs of README
     add 1bfa500  Doc: formatting docs of README
     add 0503b4d  Doc: formatting docs of README and cleaning
     add 423bc4e  Doc: formatting docs of README_zh
     add fe1f172  Mod: clear out the unneeded config
     add 394d750  Doc: improving README and README_zh
     add d733e75  Add: .run for direct
     add 4a404ce  Add: fix the .run for direct
     add b8b8ad1  Merge pull request #59 from PhilYue/feature/direct/readme
     add 3468f70  add:metric readme
     add a2bd763  修复语法错误
     add 4a8de47  up:调整import顺序
     add 8addde5  Merge pull request #61 from zhaoyunxing92/master
     add 7cd9182  fix: add run configs, bump up dubbo-go version, revise README
     add faaf7b8  fix: regroup imports
     add 7402ac2  Merge pull request #57 from beiwei30/config-api
     add f3de1c8  fix: regroup imports
     add 14a8acb  Merge pull request #63 from beiwei30/direct
     add 93f99d5  fix: regroup import
     add 7299549  fix: add run configs for docker
     add 50f0fb9  Merge pull request #64 from beiwei30/docker
     add 3685f2d  fix: group import, add run files
     add 215f989  fix: README for filter samples
     add 2319ef1  fix: make integration test work for custom filter, correct dir
     add 0c42094  enable IT for configcenter/zookeeper and filter/sentinel
     add d1503cb  Merge pull request #66 from beiwei30/filter
     add a851232  configcenter readme, import and run files
     add 7a7c27b  fix: revise README
     add 137145d  fix: regroup imports
     add 8e0f74a  fix: regroup import for nacos configcenter
     add e281731  Merge pull request #62 from beiwei30/configcenter
     add f5d3e75  add readme for generic and helloworld
     add 1fdf6ef  add readme for group
     add be3e097  add readme and run configuration for rest sample
     add 78fc2b7  add run configuration for samples
     add d426a71  add readme_zh for samples
     add 84d1727  group the imports
     add 6f91bf3  adjust imports and readme
     add 3723770  fix helloworld java sample
     add da9260c  fix error imports
     add f17c5dc  fix helloworld sample
     add 6f73a0d  Merge pull request #52 from yakecanlee/feature/add-sample
     add 4e8bc84  adjust import sequence in nacos
     add 9ea75d6  fix: issue#71
     add 9665c73  Merge pull request #72 from beiwei30/hello-world
     add 6821dca  Upgrade the Seata version to adapt the Getty WritePkg method to increase the return value
     add eec3ea3  Upgrade the Seata version to adapt the Getty WritePkg method to increase the return value
     add a61d1cc  Merge pull request #73 from xiaoliu10/upgrade_seata_version
     add 2ce35f2  add:multi registry
     add adf3d22  up:更新导报问题
     add f0e3617  up:语法问题
     add ed5605e  Merge pull request #75 from zhaoyunxing92/multi-registry
     add 68855a6  修改:修复registry/nacos示例无法正常使用的问题,调整client.yml和server.yml方便阅读
     add 5dca1e3  Merge pull request #70 from milerL/nacos
     add 84568ca  add:generic samples
     add 06dd051  up:mv it to the 3rd import block
     add f86ffa7  up:mv it to the 3rd import block
     add ef0d643  Merge pull request #77 from zhaoyunxing92/generic
     add 698f8e4  1. fix zk configcenter can not found zk node
     add 03877ff  Merge pull request #78 from xiaoliu10/fix_zk_configcenter
     add 5b923d2  add tls sample
     add f9d1b04  add apache license & mod folder
     add 5da14b9  mod problems in pr
     add bb434be  mod refmt go-client/pkg/user
     add 5df9ea3  del blank line go-server/pkg/user.go
     add 4da3ca4  mod Id to ID
     add c082df6  Merge pull request #68 from cjphaha/tls
     add ad99803  add:game samples
     add 02974be  Merge pull request #79 from zfkun/game
     add 0b1c591  Id -> ID
     add c5a9d63  Merge pull request #80 from apache/fix/Id
     add 0a1091c  fix directory problem.
     add f8ac602  multi-zone example
     add 249bfe2  disable generic integration test
     add d6e9ebf  Merge pull request #85 from beiwei30/multi-zone
     add 4959f53  ftr: group run config files into sub-directories
     add cbdc1bc  Merge pull request #87 from beiwei30/group-run-configs
     add 246bb3d  enhance router examples
     add 95ac445  fix grammar.
     add 446ef6a  disable condition router example's CI
     add 50ef8f5  Merge pull request #88 from beiwei30/router-examples
     add debbddd  Ftr:  add the module of shopping-order (#82)
     add 388020a  Router example enhance (#89)
     add f3938f5  enhance tls examples (#91)
     add 72cf27b  remove shop examples, since it's dup with chain and shopping-order (#90)
     add ff9a60a  clean up integration test (#92)
     add e17966a  up:mod优化 (#94)
     add e5d8522  invoke grpc service
     add 77a8add  fix(readme_zh.md): fix spelling mistake
     add 92edb26  Merge pull request #98 from Mulavar/fix-spelling-mistake
     add b3966dd  add readme of game (#97)
     add 80bae47  Merge pull request #5 from apache/master
     add 8256684  Merge pull request #6 from apache/master
     add 59cffbc  Merge pull request #7 from apache/master
     add 5fe1952  Merge pull request #8 from apache/master
     add 61b33e8  Merge pull request #9 from apache/master
     add fe86d2e  Merge pull request #11 from apache/master
     add 7e05bc4  Merge pull request #12 from apache/master
     add e74efd3  Merge pull request #13 from apache/master
     add f42dcbd  Merge pull request #14 from apache/master
     add 788d9af  add: dubbo-go version sample
     add 9c4c5bb  update: 1. clean code 2. add readme of multiple version sample
     add d25c96d  update: tests version provider
     add 7f000ce  update: readme
     add 1e5d014  Merge pull request #99 from PhilYue/feature/version
     add d48adc8  Fix  multi registry (#1) (#100)
     add c89e24a  fix: fix seata sample, make it work properly (#108)
     new fc4f6db  clear 1.5 old codes
     new 62acd57  up:修改dubbo-go版本
     new af15597  Merge pull request #113 from zhaoyunxing92/1.5.7-rc
     new fff662e  up:修改方法名称
     new d1942d6  Merge pull request #114 from zhaoyunxing92/1.5.7-rc
     new ec98bad  change dubbo-go version (#115)
     new 48adff3  Improve/master 1.5 (#116)
     new e834a93  Ftr: Add integration test multi-server support (#158)
     new 910b0bc  fix: 1.5 ci test (#165)
     new bb2883c  Feature/1.5 seata test (#166)
     new 2bba433  mod imports (#168)
     new 44cb1ee  up:add nacos registry (#178)
     new f2ba745  fix game integrate error & del useless file (#184)
     new 7be826d  Add 1.5 branch ci
     new 8a158c4  fix: enhance 1.5 integrate test samples (#182)
     new 1fa6301  Ftr: test shopping for 1.5 (#186)
     new 0f2bab0  Update dubbo-go version to 1.5.7-rc2 (#207)
     new b36976b  fix generic invocation bug (#210)

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (d39a206)
            \
             N -- N -- N   refs/heads/1.5 (b36976b)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 18 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:

[dubbo-go-samples] 04/18: up:修改方法名称

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fff662ea3f148a211ea0772d031a98461889de87
Author: zhaoyunxing92 <23...@qq.com>
AuthorDate: Sun May 16 20:36:46 2021 +0800

    up:修改方法名称
---
 filter/custom/go-server/pkg/custom_filter.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/filter/custom/go-server/pkg/custom_filter.go b/filter/custom/go-server/pkg/custom_filter.go
index 651fde5..7018180 100644
--- a/filter/custom/go-server/pkg/custom_filter.go
+++ b/filter/custom/go-server/pkg/custom_filter.go
@@ -56,7 +56,7 @@ type myCustomFilter struct{}
 func (mf myCustomFilter) Invoke(ctx context.Context, invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result {
 	// the logic put here...
 	// you can get many params in url. And the invocation provides more information about
-	url := invoker.GetUrl()
+	url := invoker.GetURL()
 	serviceKey := url.ServiceKey()
 	gxlog.CInfo("Here is the my custom filter. The service is invoked: %s", serviceKey)
 	return invoker.Invoke(ctx, invocation)

[dubbo-go-samples] 07/18: Improve/master 1.5 (#116)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 48adff359402db7d090cb7b502ae5a2cff7e5669
Author: Xin.Zh <dr...@foxmail.com>
AuthorDate: Sun May 16 23:05:04 2021 +0800

    Improve/master 1.5 (#116)
    
    * upgrade dubbo-go & dubbo-go-hessian2 version
    
    * add: game api (#111)
    
    * add login
    
    * add base api
    
    * del env
    
    * add test
    
    Co-authored-by: 氕氘氚 <ch...@bilibili.com>
    
    Co-authored-by: 氕氘氚 <cj...@163.com>
    Co-authored-by: 氕氘氚 <ch...@bilibili.com>
---
 game/README.md                                     | 78 +++++++++++++------
 game/README_zh.md                                  | 80 ++++++++++++++------
 game/go-server-game/pkg/provider.go                | 87 +++++++++++++++++++---
 .../tests/integration/gameprovider_test.go         | 14 ++--
 game/go-server-gate/cmd/server.go                  | 58 +++++++++------
 game/go-server-gate/pkg/consumer.go                | 15 ++--
 game/pkg/consumer/game/basketball.go               |  6 +-
 game/pkg/pojo/info.go                              | 10 +++
 game/website/css/style.css                         |  5 +-
 game/website/index.html                            |  9 ++-
 game/website/js/api.js                             | 64 ++++++++++++++++
 game/website/js/index.js                           | 46 ++++++++++--
 12 files changed, 365 insertions(+), 107 deletions(-)

diff --git a/game/README.md b/game/README.md
index 8955e7a..18e6389 100644
--- a/game/README.md
+++ b/game/README.md
@@ -53,15 +53,15 @@ The server provides three services, message, online and offline. The code is as
 ```go
 type BasketballService struct{}
 
-func (p *BasketballService) Online(...) (...) {
+func Login(ctx context.Context, data string) (*pojo.Result, error) {
     ...
 }
 
-func (p *BasketballService) Offline(...) (...) {
+func Score(ctx context.Context, uid, score string) (*pojo.Result, error) {
     ...
 }
 
-func (p *BasketballService) Message(...) (...) {
+func Rank (ctx context.Context, uid string) (*pojo.Result, error) {
     ...
 }
 
@@ -175,23 +175,23 @@ services:
         retries: 0
 ```
 
-#### consumer size
+#### consumer side
 
 The consumer side of the gate is relatively special. Because the consumer of the gate needs to call the service in the game, the consumer directly instantiates the service of a game, and its method directly uses the instantiated object gamebasketball to call, thus realizing the function of a gateway.
 
 ```go
 var GameBasketball = new(game.BasketballService)
 
-func Message(ctx context.Context, uid string, data string) (*pojo.Result, error) {
-    return GameBasketball.Message(ctx, uid, data)
+func Login(ctx context.Context, data string) (*pojo.Result, error) {
+    return GameBasketball.Login(ctx, data)
 }
 
-func Online(ctx context.Context, uid string) (*pojo.Result, error) {
-    return GameBasketball.Online(ctx, uid)
+func Score(ctx context.Context, uid, score string) (*pojo.Result, error) {
+    return GameBasketball.Score(ctx, uid, score)
 }
 
-func Offline(ctx context.Context, uid string) (*pojo.Result, error) {
-    return GameBasketball.Offline(ctx, uid)
+func Rank (ctx context.Context, uid string) (*pojo.Result, error) {
+    return GameBasketball.Rank(ctx, uid)
 }
 ```
 
@@ -224,45 +224,79 @@ references:
 
 ### HTTP access
 
-access message
+access login
 
-```http
-http://localhost:8000/message
+```bash
+curl --location --request GET 'http://127.0.0.1:8089/login?name=dubbogo'
 ```
 
 received
 
 ```json
-{"code":0,"data":{"message":"hello from game provider","to":"abc"}}
+{
+    "code": 0,
+    "msg": "dubbogo, your score is 0",
+    "data": {
+        "score": 0,
+        "to": "dubbogo"
+    }
+}
 ```
 
 
 
-access online
+access score
 
-```http
-http://localhost:8000/online
+```bash
+curl --location --request POST 'http://127.0.0.1:8089/score' \
+--header 'Content-Type: application/json' \
+--data-raw '{
+    "name":"cjp",
+    "score":1
+}'
 ```
 
 received
 
 ```json
-{"code":0,"msg":"hello this is game provider"}
+{
+    "code": 0,
+    "msg": "dubbogo, your score is 0",
+    "data": {
+        "score": 0,
+        "to": "dubbogo"
+    }
+}
 ```
 
-access offline
+access rank
 
-```http
-http://localhost:8000/online
+```bash
+curl --location --request POST 'http://127.0.0.1:8089/rank?name=dubbogo'
 ```
 
 received
 
 ```json
-{"code":0,"msg":"hello this is game provider"}
+{
+    "code": 0,
+    "msg": "success",
+    "data": {
+        "rank": 3,
+        "to": "dubbogo"
+    }
+}
 ```
 
 It can be found that all HTTP requests are successfully forwarded to game, and the processed data is returned to gate by calling the send method of gate
 
+
+
+### Start the front end
+
+Switch to webside directory and open index.html (Chrome browser is recommended)
+
+![image-20210516173728198](http://cdn.cjpa.top/image-20210516173728198.png)
+
 Pls. refer to [HOWTO.md](../HOWTO.md) under the root directory to run this sample.
 
diff --git a/game/README_zh.md b/game/README_zh.md
index 7090305..1b4592d 100644
--- a/game/README_zh.md
+++ b/game/README_zh.md
@@ -48,20 +48,20 @@ game提供了basketball服务端,gate提供了http服务端。
 
 #### server端
 
-server 端提供三个服务,message、online 及 offline,代码如下,具体的实现可以在 'game/go-server-game/pkg/provider.go' 中看到
+server 端提供三个服务,Login、Score 及 Rank,代码如下,具体的实现可以在 'game/go-server-game/pkg/provider.go' 中看到
 
 ```go
 type BasketballService struct{}
 
-func (p *BasketballService) Online(...) (...) {
+func Login(ctx context.Context, data string) (*pojo.Result, error) {
     ...
 }
 
-func (p *BasketballService) Offline(...) (...) {
+func Score(ctx context.Context, uid, score string) (*pojo.Result, error) {
     ...
 }
 
-func (p *BasketballService) Message(...) (...) {
+func Rank (ctx context.Context, uid string) (*pojo.Result, error) {
     ...
 }
 
@@ -177,21 +177,21 @@ services:
 
 #### consumer端
 
-gate 中的 consumer 端比较特使,由于 gate的consumer 需要调用 game 中的 service,所以在gaet中,consumer 直接实例化一个game的service,其方法便直接使用实例化的对象 GameBasketball 调用,这样就实现了一个网关的功能。
+gate 中的 consumer 端比较特殊,由于 gate的consumer 需要调用 game 中的 service,所以在gaet中,consumer 直接实例化一个game的service,其方法便直接使用实例化的对象 GameBasketball 调用,这样就实现了一个网关的功能。
 
 ```go
 var GameBasketball = new(game.BasketballService)
 
-func Message(ctx context.Context, uid string, data string) (*pojo.Result, error) {
-    return GameBasketball.Message(ctx, uid, data)
+func Login(ctx context.Context, data string) (*pojo.Result, error) {
+    return GameBasketball.Login(ctx, data)
 }
 
-func Online(ctx context.Context, uid string) (*pojo.Result, error) {
-    return GameBasketball.Online(ctx, uid)
+func Score(ctx context.Context, uid, score string) (*pojo.Result, error) {
+    return GameBasketball.Score(ctx, uid, score)
 }
 
-func Offline(ctx context.Context, uid string) (*pojo.Result, error) {
-    return GameBasketball.Offline(ctx, uid)
+func Rank (ctx context.Context, uid string) (*pojo.Result, error) {
+    return GameBasketball.Rank(ctx, uid)
 }
 ```
 
@@ -227,47 +227,81 @@ references:
 
 ### HTTP访问
 
-访问message
+访问login
 
-```http
-http://localhost:8000/message
+```bash
+curl --location --request GET 'http://127.0.0.1:8089/login?name=dubbogo'
 ```
 
-收到
+收到账户的信息
 
 ```json
-{"code":0,"data":{"message":"hello from game provider","to":"abc"}}
+{
+    "code": 0,
+    "msg": "dubbogo, your score is 0",
+    "data": {
+        "score": 0,
+        "to": "dubbogo"
+    }
+}
 ```
 
 
 
-访问 online
+访问 score
 
-```http
-http://localhost:8000/online
+```bash
+curl --location --request POST 'http://127.0.0.1:8089/score' \
+--header 'Content-Type: application/json' \
+--data-raw '{
+    "name":"cjp",
+    "score":1
+}'
 ```
 
 收到
 
 ```json
-{"code":0,"msg":"hello this is game provider"}
+{
+    "code": 0,
+    "msg": "dubbogo, your score is 0",
+    "data": {
+        "score": 0,
+        "to": "dubbogo"
+    }
+}
 ```
 
-访问 offline
+访问 rank
 
 ```http
-http://localhost:8000/online
+curl --location --request POST 'http://127.0.0.1:8089/rank?name=dubbogo'
 ```
 
 收到
 
 ```json
-{"code":0,"msg":"hello this is game provider"}
+{
+    "code": 0,
+    "msg": "success",
+    "data": {
+        "rank": 3,
+        "to": "dubbogo"
+    }
+}
 ```
 
 可以发现,所有的http请求,都成功的转发到了 game,并且又通过调用 gate 的 send 方法把处理过的数据返回给 gate
 
 
 
+### 启动前端
+
+切换到 webside 目录,打开 index.html 即可(推荐使用chrome浏览器)
+
+![image-20210516173728198](http://cdn.cjpa.top/image-20210516173728198.png)
+
+点击小人即可进行游戏
+
 请参阅根目录中的 [HOWTO.md](../HOWTO_zh.md) 来运行本例。
 
diff --git a/game/go-server-game/pkg/provider.go b/game/go-server-game/pkg/provider.go
index 5ab380f..7892000 100644
--- a/game/go-server-game/pkg/provider.go
+++ b/game/go-server-game/pkg/provider.go
@@ -3,6 +3,7 @@ package pkg
 import (
     "context"
     "fmt"
+    "strconv"
 
     "github.com/apache/dubbo-go/common/logger"
 
@@ -11,27 +12,93 @@ import (
 
 type BasketballService struct{}
 
-func (p *BasketballService) Online(ctx context.Context, uid string) (*pojo.Result, error) {
-    logger.Infof("online: %s", uid)
-    return &pojo.Result{Code: 0, Msg: "hello this is game provider"}, nil
+var userMap = make(map[string]*pojo.Info, 0)
+
+func (p *BasketballService) Login(ctx context.Context, uid string) (*pojo.Result, error) {
+    logger.Infof("message: %#v", uid)
+    var (
+        info *pojo.Info
+        ok bool
+    )
+
+    // auto reply the same message
+    rsp, err := GateBasketball.Send(context.TODO(), uid, "")
+    if err != nil {
+        logger.Errorf("send fail: %#s", err.Error())
+        return &pojo.Result{Code: 1, Msg: err.Error()}, err
+    }
+
+    fmt.Println("receive data from gate:", rsp)
+
+    if info, ok = userMap[uid]; !ok {
+        info = &pojo.Info{}
+        info.Name = uid
+        userMap[uid] = info
+    }
+    return &pojo.Result{Code: 0, Msg: info.Name + ", your score is " + strconv.Itoa(info.Score) , Data: map[string]interface{}{"to": uid, "score": info.Score}}, nil
 }
 
-func (p *BasketballService) Offline(ctx context.Context, uid string) (*pojo.Result, error) {
-    logger.Infof("offline: %#s", uid)
-    return &pojo.Result{Code: 0, Msg: "hello this is game provider"}, nil
+func (p *BasketballService) Score (ctx context.Context, uid, score string) (*pojo.Result, error) {
+    logger.Infof("message: %#v, %#v", uid, score)
+    var (
+        info = &pojo.Info{}
+        ok bool
+    )
+
+    // auto reply the same message
+    rsp, err := GateBasketball.Send(context.TODO(), uid, score)
+    if err != nil {
+        logger.Errorf("send fail: %#s", err.Error())
+        return &pojo.Result{Code: 1, Msg: err.Error()}, err
+    }
+
+    fmt.Println("receive data from gate:", rsp)
+
+    if info, ok = userMap[uid]; !ok {
+      info = &pojo.Info{
+          Name: uid,
+      }
+      userMap[uid] = info
+      logger.Error("user data not found")
+      return &pojo.Result{Code: 1, Msg: "user data not found", Data: map[string]interface{}{}}, nil
+    }
+    intSource, err := strconv.Atoi(score)
+    if err != nil {
+        logger.Error(err.Error())
+    }
+    info.Score += intSource
+
+    return &pojo.Result{Code: 0, Msg: "进球成功", Data: map[string]interface{}{"to": uid, "score": info.Score}}, nil
 }
 
-func (p *BasketballService) Message(ctx context.Context, uid, data string) (*pojo.Result, error) {
-    logger.Infof("message: %#v, %#v", uid, data)
+func (p *BasketballService) Rank (ctx context.Context, uid string) (*pojo.Result, error) {
+    var (
+        rank = 1
+        info  *pojo.Info
+        ok bool
+    )
 
     // auto reply the same message
-    rsp, err := GateBasketball.Send(context.TODO(), uid, data)
+    rsp, err := GateBasketball.Send(context.TODO(), uid, "")
     if err != nil {
         logger.Errorf("send fail: %#s", err.Error())
         return &pojo.Result{Code: 1, Msg: err.Error()}, err
     }
+
     fmt.Println("receive data from gate:", rsp)
-    return &pojo.Result{Code: 0, Data: map[string]interface{}{"to": uid, "message": data + " from game provider"}}, nil
+
+    if info, ok = userMap[uid]; !ok {
+        logger.Error("no user found")
+        return &pojo.Result{Code: 1, Msg: "no user found", Data: map[string]interface{}{"to": uid, "rank": rank}}, nil
+    }
+
+    for _, v := range userMap {
+        if v.Score > info.Score {
+            rank ++
+        }
+    }
+
+    return &pojo.Result{Code: 0, Msg: "success", Data: map[string]interface{}{"to": uid, "rank": rank}}, nil
 }
 
 func (p *BasketballService) Reference() string {
diff --git a/game/go-server-game/tests/integration/gameprovider_test.go b/game/go-server-game/tests/integration/gameprovider_test.go
old mode 100644
new mode 100755
index 8502d40..02dcf4a
--- a/game/go-server-game/tests/integration/gameprovider_test.go
+++ b/game/go-server-game/tests/integration/gameprovider_test.go
@@ -7,25 +7,25 @@ import (
     "github.com/stretchr/testify/assert"
 )
 
-func TestMessage(t *testing.T) {
-    res, err := gameProvider.Message(context.TODO(), "A001", "hello")
+func TestLogin(t *testing.T) {
+    res, err := gameProvider.Login(context.TODO(), "A001")
     assert.Nil(t, err)
     assert.NotNil(t, res)
     assert.Equal(t, int32(0), res.Code)
     assert.NotNil(t, res.Data)
     assert.Equal(t, "A001", res.Data["to"])
-    assert.Equal(t, "hello", res.Data["message"])
+    assert.Equal(t, 0, res.Data["score"])
 }
 
-func TestOnline(t *testing.T) {
-    res, err := gameProvider.Online(context.TODO(), "A001")
+func TestScore(t *testing.T) {
+    res, err := gameProvider.Score(context.TODO(), "A001", "1")
     assert.Nil(t, err)
     assert.NotNil(t, res)
     assert.Equal(t, int32(0), res.Code)
 }
 
-func TestOffline(t *testing.T) {
-    res, err := gameProvider.Offline(context.TODO(), "A001")
+func TestRank(t *testing.T) {
+    res, err := gameProvider.Rank(context.TODO(), "A001")
     assert.Nil(t, err)
     assert.NotNil(t, res)
     assert.Equal(t, int32(0), res.Code)
diff --git a/game/go-server-gate/cmd/server.go b/game/go-server-gate/cmd/server.go
old mode 100644
new mode 100755
index 232f16d..b16297b
--- a/game/go-server-gate/cmd/server.go
+++ b/game/go-server-gate/cmd/server.go
@@ -3,15 +3,17 @@ package main
 import (
     "context"
     "encoding/json"
+    "io/ioutil"
     "net/http"
     "os"
     "os/signal"
+    "strconv"
     "syscall"
     "time"
 
+    hessian "github.com/apache/dubbo-go-hessian2"
     "github.com/apache/dubbo-go/common/logger"
     "github.com/apache/dubbo-go/config"
-    hessian "github.com/apache/dubbo-go-hessian2"
 
     _ "github.com/apache/dubbo-go/protocol/dubbo"
     _ "github.com/apache/dubbo-go/registry/protocol"
@@ -71,53 +73,67 @@ func initSignal() {
 
 func startHttp() {
 
-    http.HandleFunc("/message", func(w http.ResponseWriter, r *http.Request) {
-        res, err := pkg.Message(context.TODO(), "abc", "hello")
+    http.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
+        res, err := pkg.Login(context.TODO(), r.URL.Query().Get("name"))
         if err != nil {
-            _, _ = w.Write([]byte(err.Error()))
+            responseWithOrigin(w, r, 200, []byte(err.Error()))
             return
         }
 
         b, err := json.Marshal(res)
         if err != nil {
-            _, _ = w.Write([]byte(err.Error()))
+            responseWithOrigin(w, r, 200, []byte(err.Error()))
             return
         }
-
-        _, _ = w.Write(b)
+        responseWithOrigin(w, r, 200, b)
     })
 
-    http.HandleFunc("/online", func(w http.ResponseWriter, r *http.Request) {
-        res, err := pkg.Online(context.TODO(), "abc")
+    http.HandleFunc("/score", func(w http.ResponseWriter, r *http.Request) {
+        reqBody, err := ioutil.ReadAll(r.Body)
+        if err != nil {
+            logger.Error(err.Error())
+        }
+        var info pojo.Info
+        json.Unmarshal(reqBody, &info)
+        res, err := pkg.Score(context.TODO(), info.Name, strconv.Itoa(info.Score))
         if err != nil {
-            _, _ = w.Write([]byte(err.Error()))
+            responseWithOrigin(w, r, 200, []byte(err.Error()))
             return
         }
 
         b, err := json.Marshal(res)
         if err != nil {
-            _, _ = w.Write([]byte(err.Error()))
+            responseWithOrigin(w, r, 200, []byte(err.Error()))
             return
         }
-
-        _, _ = w.Write(b)
+        responseWithOrigin(w, r, 200, b)
     })
 
-    http.HandleFunc("/offline", func(w http.ResponseWriter, r *http.Request) {
-        res, err := pkg.Offline(context.TODO(), "abc")
+    http.HandleFunc("/rank", func(w http.ResponseWriter, r *http.Request) {
+        res, err := pkg.Rank(context.TODO(), r.URL.Query().Get("name"))
         if err != nil {
-            _, _ = w.Write([]byte(err.Error()))
+            responseWithOrigin(w, r, 200, []byte(err.Error()))
             return
         }
-
         b, err := json.Marshal(res)
         if err != nil {
-            _, _ = w.Write([]byte(err.Error()))
+            responseWithOrigin(w, r, 200, []byte(err.Error()))
             return
         }
-
-        _, _ = w.Write(b)
+        responseWithOrigin(w, r, 200, b)
     })
 
-    _ = http.ListenAndServe(":8000", nil)
+    _ = http.ListenAndServe("127.0.0.1:8089", nil)
+}
+
+// avoid cors
+func responseWithOrigin(w http.ResponseWriter, r *http.Request, code int, json []byte) {
+    w.Header().Set("Access-Control-Allow-Origin", "*")
+    w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
+    w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
+    w.Header().Set("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type")
+    w.Header().Set("Access-Control-Allow-Credentials", "true")
+    w.Header().Set("Content-Type", "application/json; charset=utf-8")
+    w.WriteHeader(code)
+    w.Write(json)
 }
\ No newline at end of file
diff --git a/game/go-server-gate/pkg/consumer.go b/game/go-server-gate/pkg/consumer.go
index 04c4d33..74bd910 100644
--- a/game/go-server-gate/pkg/consumer.go
+++ b/game/go-server-gate/pkg/consumer.go
@@ -12,17 +12,14 @@ var GameBasketball = new(game.BasketballService)
 
 // just easy for demo test
 
-func Message(ctx context.Context, uid string, data string) (*pojo.Result, error) {
-    return GameBasketball.Message(ctx, uid, data)
-    // return gameJump.Message(ctx, uid, data)
+func Login(ctx context.Context, data string) (*pojo.Result, error) {
+    return GameBasketball.Login(ctx, data)
 }
 
-func Online(ctx context.Context, uid string) (*pojo.Result, error) {
-    return GameBasketball.Online(ctx, uid)
-    // return gameJump.Online(ctx, uid)
+func Score(ctx context.Context, uid, score string) (*pojo.Result, error) {
+    return GameBasketball.Score(ctx, uid, score)
 }
 
-func Offline(ctx context.Context, uid string) (*pojo.Result, error) {
-    return GameBasketball.Offline(ctx, uid)
-    // return gameJump.Offline(ctx, uid)
+func Rank (ctx context.Context, uid string) (*pojo.Result, error) {
+    return GameBasketball.Rank(ctx, uid)
 }
diff --git a/game/pkg/consumer/game/basketball.go b/game/pkg/consumer/game/basketball.go
index 5e900e5..20dc0b6 100644
--- a/game/pkg/consumer/game/basketball.go
+++ b/game/pkg/consumer/game/basketball.go
@@ -6,9 +6,9 @@ import (
 )
 
 type BasketballService struct {
-    Online  func(ctx context.Context, uid string) (*pojo.Result, error)
-    Offline func(ctx context.Context, uid string) (*pojo.Result, error)
-    Message func(ctx context.Context, uid string, data string) (*pojo.Result, error)
+    Login   func(ctx context.Context, uid string) (*pojo.Result, error)
+    Score   func(ctx context.Context, uid, score string) (*pojo.Result, error)
+    Rank  func(ctx context.Context, uid string) (*pojo.Result, error)
 }
 
 func (p *BasketballService) Reference() string {
diff --git a/game/pkg/pojo/info.go b/game/pkg/pojo/info.go
new file mode 100644
index 0000000..59d47dc
--- /dev/null
+++ b/game/pkg/pojo/info.go
@@ -0,0 +1,10 @@
+package pojo
+
+type Info struct {
+	Name string `json:"name"`
+	Score int	`json:"score"`
+}
+
+func (m Info) JavaClassName() string {
+	return "org.apache.dubbo.pojo.Info"
+}
\ No newline at end of file
diff --git a/game/website/css/style.css b/game/website/css/style.css
index 9a6875d..5f21f5a 100644
--- a/game/website/css/style.css
+++ b/game/website/css/style.css
@@ -48,6 +48,7 @@
 }
 .info{
     position: absolute;
-    top: 0;
-    left: 0;
+    top: 10px;
+    left: 10px;
+    color: white;
 }
\ No newline at end of file
diff --git a/game/website/index.html b/game/website/index.html
index 5d073e4..a3554db 100644
--- a/game/website/index.html
+++ b/game/website/index.html
@@ -6,6 +6,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>FootBall Game</title>
+    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
     <!-- import Vue before Element -->
     <script src="https://unpkg.com/vue/dist/vue.js"></script>
     <!-- 引入样式 -->
@@ -25,14 +26,17 @@
             用户:{{info.name}}
             <br>
             分数:{{info.score}}
+            <br>
+            排名:{{info.rank}}
         </div>
         <svg id="gate" class="gate" t="1620527545136" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2966" width="400" height="400"><path d="M861.414041 192.806237 179.968861 192.806237c-51.828412 0-93.985558 42.164309-93.985558 93.985558l0 514.915399 61.975517 0 0-0.276293 0.796132 0.650823 74.704422-89.905636 597.571934 0 72.39482 87.839581 0 1.691525 62.007239 0L955.433368 286.791795C955.432345 234.970546 913.228127 192.806237 861.414041 19 [...]
         <svg id="ball" class="ball" t="1620527208144" class="icon" viewBox="0 0 1365 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1801" width="400" height="400"><path d="M647.937 1023.573c-40.96 0-82.133-5.12-122.24-14.933-66.773-16.427-128.427-45.44-183.04-86.4-52.693-39.467-96.853-88.107-131.2-144.853-34.347-56.747-56.96-118.4-67.2-183.467-10.88-67.413-7.893-135.467 8.533-202.24 14.08-56.747 37.334-110.293 69.12-158.72 30.934-46.72 69.12-88.107 113.707-122.453 44.16-34. [...]
         <svg class="people" @click="clickPeople" t="1620527325090" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2618" width="400" height="400"><path d="M563.240423 102.320551m-102.320551 0a102.320551 102.320551 0 1 0 204.641102 0 102.320551 102.320551 0 1 0-204.641102 0Z" p-id="2619" fill="#e6e6e6"></path><path d="M322.895467 827.809372c-8.907907 20.054828-155.767992 195.805422-155.767992 195.805421h122.447605s106.292996-119.58263 113.924906 [...]
         <el-dialog
         title="输入姓名"
-        :visible.sync="dialogVisible"
+        :visible="dialogVisible"
         width="30%"
+        :show-close="false"
         >
         <el-form v-model="info">
             <el-form-item label="姓名">
@@ -40,12 +44,13 @@
             </el-form-item>
         </el-form>
         <span slot="footer" class="dialog-footer">
-            <el-button @click="dialogVisible = false">取 消</el-button>
             <el-button type="primary" @click="submitInfo">确 定</el-button>
         </span>
         </el-dialog>
     </div>
+    <script src="js/api.js"></script>
     <script src="js/index.js"></script>
+    
 </body>
 
 </html>
\ No newline at end of file
diff --git a/game/website/js/api.js b/game/website/js/api.js
new file mode 100644
index 0000000..32a2358
--- /dev/null
+++ b/game/website/js/api.js
@@ -0,0 +1,64 @@
+var baseURL = 'http://127.0.0.1:8089/'
+
+function login(data) {
+    return new Promise(function(resolve, reject) {
+        $.ajax({
+            type: "get",
+            url: baseURL + 'login',
+            data:data,
+            dataType: "json", //指定服务器返回的数据类型
+            success: function (response) {
+                if (response.code != 0) {
+                    reject(response.msg)
+                } else {
+                    resolve(response)
+                }
+            },
+            error:function(err){
+                reject(err)
+            }
+        });
+    })
+}
+
+function score(data) {
+    return new Promise(function(resolve, reject) {
+        $.ajax({
+            type: "post",
+            url: baseURL + 'score',
+            data:data,
+            dataType: "json", //指定服务器返回的数据类型
+            success: function (response) {
+                if (response.code != 0) {
+                    reject(response.msg)
+                } else {
+                    resolve(response)
+                }
+            },
+            error:function(err){
+                reject(err)
+            }
+        })
+    })
+}
+
+function rank(data) {
+    return new Promise(function(resolve, reject) {
+        $.ajax({
+            type: "get",
+            url: baseURL + 'rank',
+            data:data,
+            dataType: "json", //指定服务器返回的数据类型
+            success: function (response) {
+                if (response.code != 0) {
+                    reject(response.msg)
+                } else {
+                    resolve(response)
+                }
+            },
+            error:function(err){
+                reject(err)
+            }
+        })
+    })
+}
\ No newline at end of file
diff --git a/game/website/js/index.js b/game/website/js/index.js
index 49b58cc..7e9be35 100644
--- a/game/website/js/index.js
+++ b/game/website/js/index.js
@@ -3,11 +3,11 @@ new Vue({
     data: function () {
         return { 
             visible: false,
-            rootDom:Object, 
             dialogVisible:true,
             info:{
                 name:'',
-                score:0
+                score:0,
+                rank:0
             },
             isMeet:false
         }
@@ -26,8 +26,30 @@ new Vue({
         }
     },
     methods: {
+        getRank:function(){
+            rank({name: this.info.name}).then(Response => {
+                this.info.rank = Response.data.rank
+            }).catch(e => {
+                this.$message({
+                    message: "获取排名失败" + e,
+                    type:"danger"
+                })
+            })
+        },
         submitInfo:function(){
             this.dialogVisible = false
+            login({name: this.info.name}).then(Response => {
+                this.info.name = Response.data.to
+                this.$message({
+                    message:"欢迎" + Response.msg
+                })
+                this.getRank()
+            }).catch(e => {
+                this.$message({
+                    message: "登陆失败" + e,
+                    type:"danger"
+                })
+            })
         },
         moveBall:function(){
             var elem = document.getElementsByClassName("ball")
@@ -38,15 +60,24 @@ new Vue({
             function frame() {
                 var space = elem[0].getBoundingClientRect().left - gate.getBoundingClientRect().left
                 var hight = elem[0].getBoundingClientRect().top - gate.getBoundingClientRect().top
-                console.log(space < 20)
-                if (!that.isMeet && (space <20 && space > -20 && hight < 20 && hight > -20)) {
+                if (!that.isMeet && (space <60 && space > -20 && hight < 20 && hight > -20)) {
                     that.isMeet = true
-                    that.$message({
-                        message:"进球成功",
-                        type:"success"
+                    score(JSON.stringify({name:that.info.name, score:1})).then(Response => {
+                        that.info.score = Response.data.score
+                        that.$message({
+                            message:"进球成功, 总分数为:" + Response.data.score,
+                            type:"success"
+                        })
+                        that.getRank()
+                    }).catch( e => {
+                        that.$message({
+                            message: "分数统计失败" + e,
+                            type:"danger"
+                        })
                     })
                 }
                 if (tempHeight >= that.clientHeight) {
+                    elem[0].style.bottom = 0 + ''
                     clearInterval(id)
                 } else{
                     tempHeight += 20
@@ -92,7 +123,6 @@ new Vue({
     mounted(){
         this.move()
         this.moveGate()
-        this.rootDom = document.getElementById("app")
     },
     created() {
         

[dubbo-go-samples] 01/18: clear 1.5 old codes

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fc4f6db21ccf96b412cf282240d51ef037fb0ca5
Author: AlexStocks <al...@foxmail.com>
AuthorDate: Sun May 16 13:13:59 2021 +0800

    clear 1.5 old codes
---
 HOWTO.md                                           |  151 ---
 HOWTO_zh.md                                        |  141 ---
 LICENSE                                            |  201 ----
 README.md                                          |   31 -
 README_zh.md                                       |   32 -
 async/README.md                                    |   46 -
 async/README_zh.md                                 |   45 -
 async/go-client/cmd/client.go                      |   66 --
 async/go-client/conf/client.yml                    |   61 -
 async/go-client/conf/log.yml                       |   28 -
 async/go-client/pkg/user.go                        |   78 --
 async/go-server/cmd/server.go                      |   78 --
 async/go-server/conf/client.yml                    |   61 -
 async/go-server/conf/log.yml                       |   28 -
 async/go-server/conf/server.yml                    |   55 -
 async/go-server/docker/docker-compose.yml          |    9 -
 async/go-server/pkg/user.go                        |   60 -
 async/go-server/tests/integration/main_test.go     |   87 --
 .../tests/integration/userprovider_test.go         |   52 -
 attachment/README.md                               |   35 -
 attachment/README_zh.md                            |   37 -
 attachment/go-client/cmd/client.go                 |   67 --
 attachment/go-client/conf/client.yml               |   59 -
 attachment/go-client/conf/log.yml                  |   27 -
 attachment/go-client/pkg/user.go                   |   42 -
 attachment/go-server/cmd/server.go                 |   79 --
 attachment/go-server/conf/client.yml               |   59 -
 attachment/go-server/conf/log.yml                  |   27 -
 attachment/go-server/conf/server.yml               |   55 -
 attachment/go-server/docker/docker-compose.yml     |    9 -
 attachment/go-server/pkg/user.go                   |   72 --
 .../go-server/tests/integration/main_test.go       |   73 --
 .../tests/integration/userprovider_test.go         |   47 -
 build/Makefile                                     |  139 ---
 chain/README.md                                    |   77 --
 chain/README_zh.md                                 |   80 --
 chain/backend/cmd/server.go                        |   76 --
 chain/backend/conf/client.yml                      |   67 --
 chain/backend/conf/log.yml                         |   27 -
 chain/backend/conf/server.yml                      |   73 --
 chain/backend/pkg/cat_service.go                   |   51 -
 chain/backend/pkg/dog_service.go                   |   51 -
 chain/backend/pkg/lion_service.go                  |   51 -
 chain/backend/pkg/tiger_service.go                 |   51 -
 chain/backend/tests/integration/main_test.go       |   94 --
 chain/backend/tests/integration/services_test.go   |   54 -
 chain/docker/docker-compose.yml                    |    9 -
 chain/frontend/cmd/client.go                       |   56 -
 chain/frontend/conf/client.yml                     |   59 -
 chain/frontend/conf/log.yml                        |   27 -
 chain/frontend/pkg/people.go                       |   36 -
 chain/middle/cmd/server.go                         |   76 --
 chain/middle/conf/client.yml                       |   67 --
 chain/middle/conf/log.yml                          |   27 -
 chain/middle/conf/server.yml                       |   52 -
 chain/middle/conf/test.yml                         |   59 -
 chain/middle/pkg/american_service.go               |   78 --
 chain/middle/pkg/chinese_service.go                |   78 --
 chain/middle/tests/integration/main_test.go        |   70 --
 chain/middle/tests/integration/services_test.go    |   46 -
 ci.sh                                              |   29 -
 config-api/README.md                               |   65 --
 config-api/README_zh.md                            |   68 --
 config-api/go-client/cmd/client.go                 |   83 --
 config-api/go-client/conf/client.yml               |   59 -
 config-api/go-client/conf/log.yml                  |   27 -
 config-api/go-client/pkg/user.go                   |   42 -
 config-api/go-server/cmd/server.go                 |  100 --
 config-api/go-server/conf/client.yml               |   59 -
 config-api/go-server/conf/log.yml                  |   27 -
 config-api/go-server/conf/server.yml               |   55 -
 config-api/go-server/docker/docker-compose.yml     |    9 -
 config-api/go-server/pkg/user.go                   |   60 -
 .../go-server/tests/integration/main_test.go       |   72 --
 .../tests/integration/userprovider_test.go         |   38 -
 configcenter/README.md                             |   95 --
 configcenter/README_zh.md                          |   99 --
 configcenter/apollo/go-client/cmd/client.go        |   66 --
 configcenter/apollo/go-client/conf/client.yml      |   66 --
 configcenter/apollo/go-client/conf/log.yml         |   28 -
 configcenter/apollo/go-client/pkg/user.go          |   42 -
 configcenter/apollo/go-server/cmd/server.go        |   81 --
 configcenter/apollo/go-server/conf/client.yml      |   66 --
 configcenter/apollo/go-server/conf/log.yml         |   28 -
 configcenter/apollo/go-server/conf/server.yml      |   62 -
 .../apollo/go-server/docker/docker-compose.yml     |   40 -
 .../apollo/go-server/docker/sql/apolloconfigdb.sql |  433 -------
 .../apollo/go-server/docker/sql/apolloportaldb.sql |  368 ------
 configcenter/apollo/go-server/pkg/user.go          |   60 -
 .../go-server/tests/integration/main_test.go       |   71 --
 .../tests/integration/userprovider_test.go         |   39 -
 configcenter/nacos/go-client/cmd/client.go         |   66 --
 configcenter/nacos/go-client/conf/client.yml       |   64 --
 configcenter/nacos/go-client/conf/log.yml          |   28 -
 configcenter/nacos/go-client/pkg/user.go           |   42 -
 configcenter/nacos/go-server/cmd/server.go         |   79 --
 configcenter/nacos/go-server/conf/client.yml       |   64 --
 configcenter/nacos/go-server/conf/log.yml          |   28 -
 configcenter/nacos/go-server/conf/server.yml       |   60 -
 .../nacos/go-server/docker/docker-compose.yml      |   17 -
 configcenter/nacos/go-server/pkg/user.go           |   60 -
 .../nacos/go-server/tests/integration/main_test.go |   71 --
 .../tests/integration/userprovider_test.go         |   39 -
 configcenter/zookeeper/go-client/cmd/client.go     |   66 --
 configcenter/zookeeper/go-client/conf/client.yml   |   60 -
 configcenter/zookeeper/go-client/conf/log.yml      |   28 -
 configcenter/zookeeper/go-client/pkg/user.go       |   42 -
 configcenter/zookeeper/go-server/cmd/server.go     |   79 --
 configcenter/zookeeper/go-server/conf/client.yml   |   58 -
 configcenter/zookeeper/go-server/conf/log.yml      |   28 -
 configcenter/zookeeper/go-server/conf/server.yml   |   60 -
 .../zookeeper/go-server/docker/docker-compose.yml  |    8 -
 configcenter/zookeeper/go-server/pkg/user.go       |   60 -
 .../go-server/tests/integration/main_test.go       |   70 --
 .../tests/integration/userprovider_test.go         |   39 -
 context/README.md                                  |   58 -
 context/README_zh.md                               |   63 -
 context/go-client/cmd/client.go                    |   71 --
 context/go-client/conf/client.yml                  |   59 -
 context/go-client/conf/log.yml                     |   27 -
 context/go-client/pkg/user.go                      |   45 -
 context/go-server/cmd/server.go                    |   78 --
 context/go-server/conf/client.yml                  |   59 -
 context/go-server/conf/log.yml                     |   27 -
 context/go-server/conf/server.yml                  |   55 -
 context/go-server/docker/docker-compose.yml        |    9 -
 context/go-server/pkg/user.go                      |   76 --
 context/go-server/tests/integration/main_test.go   |   74 --
 .../tests/integration/userprovider_test.go         |   56 -
 direct/README.md                                   |  170 ---
 direct/README_zh.md                                |  171 ---
 direct/go-client/cmd/client.go                     |   67 --
 direct/go-client/conf/client.yml                   |   28 -
 direct/go-client/conf/log.yml                      |   28 -
 direct/go-client/pkg/user.go                       |   42 -
 direct/go-server/cmd/server.go                     |   78 --
 direct/go-server/conf/client.yml                   |   61 -
 direct/go-server/conf/log.yml                      |   28 -
 direct/go-server/conf/server.yml                   |   54 -
 direct/go-server/docker/docker-compose.yml         |    9 -
 direct/go-server/pkg/user.go                       |   60 -
 direct/go-server/tests/integration/main_test.go    |   70 --
 .../tests/integration/userprovider_test.go         |   40 -
 docker/Dockerfile                                  |    5 -
 docker/README.md                                   |   49 -
 docker/README_zh.md                                |   52 -
 docker/docker_run.sh                               |    5 -
 docker/go-client/cmd/client.go                     |   65 --
 docker/go-client/conf/client.yml                   |   59 -
 docker/go-client/conf/log.yml                      |   27 -
 docker/go-client/pkg/user.go                       |   42 -
 docker/go-server/cmd/server.go                     |   78 --
 docker/go-server/conf/client.yml                   |   59 -
 docker/go-server/conf/log.yml                      |   27 -
 docker/go-server/conf/server.yml                   |   55 -
 docker/go-server/docker/docker-compose.yml         |    9 -
 docker/go-server/pkg/user.go                       |   60 -
 docker/go-server/tests/integration/main_test.go    |   70 --
 .../tests/integration/userprovider_test.go         |   39 -
 filter/custom/README.md                            |   93 --
 filter/custom/README_zh.md                         |   93 --
 filter/custom/go-client/cmd/client.go              |   65 --
 filter/custom/go-client/conf/client.yml            |   59 -
 filter/custom/go-client/conf/log.yml               |   28 -
 filter/custom/go-client/pkg/user.go                |   42 -
 filter/custom/go-server/cmd/server.go              |   78 --
 filter/custom/go-server/conf/client.yml            |   59 -
 filter/custom/go-server/conf/log.yml               |   28 -
 filter/custom/go-server/conf/server.yml            |   58 -
 filter/custom/go-server/docker/docker-compose.yml  |    9 -
 filter/custom/go-server/pkg/custom_filter.go       |   92 --
 filter/custom/go-server/pkg/user.go                |   60 -
 .../go-server/tests/integration/main_test.go       |   70 --
 .../tests/integration/userprovider_test.go         |   38 -
 filter/sentinel/README.md                          |   48 -
 filter/sentinel/README_zh.md                       |   48 -
 filter/sentinel/go-client/cmd/client.go            |   92 --
 filter/sentinel/go-client/conf/client.yml          |   62 -
 filter/sentinel/go-client/conf/log.yml             |   28 -
 filter/sentinel/go-client/pkg/user.go              |   42 -
 filter/sentinel/go-server/cmd/server.go            |  104 --
 filter/sentinel/go-server/conf/client.yml          |   59 -
 filter/sentinel/go-server/conf/log.yml             |   28 -
 filter/sentinel/go-server/conf/server.yml          |   58 -
 .../sentinel/go-server/docker/docker-compose.yml   |    9 -
 filter/sentinel/go-server/pkg/user.go              |   60 -
 .../go-server/tests/integration/main_test.go       |   70 --
 .../tests/integration/userprovider_test.go         |   42 -
 filter/tpslimit/README.md                          |  173 ---
 filter/tpslimit/README_zh.md                       |  173 ---
 filter/tpslimit/go-client/cmd/client.go            |   64 --
 filter/tpslimit/go-client/conf/client.yml          |   59 -
 filter/tpslimit/go-client/conf/log.yml             |   28 -
 filter/tpslimit/go-client/pkg/user.go              |   43 -
 filter/tpslimit/go-server/cmd/server.go            |   78 --
 filter/tpslimit/go-server/conf/client.yml          |   59 -
 filter/tpslimit/go-server/conf/log.yml             |   28 -
 filter/tpslimit/go-server/conf/server.yml          |   60 -
 .../tpslimit/go-server/docker/docker-compose.yml   |    9 -
 filter/tpslimit/go-server/pkg/limit_strategy.go    |   68 --
 filter/tpslimit/go-server/pkg/reject_handler.go    |  107 --
 filter/tpslimit/go-server/pkg/user.go              |   60 -
 .../go-server/tests/integration/main_test.go       |   70 --
 .../tests/integration/userprovider_test.go         |   50 -
 general/dubbo/go-client/cmd/client.go              |  290 -----
 general/dubbo/go-client/conf/client.yml            |   69 --
 general/dubbo/go-client/conf/log.yml               |   27 -
 general/dubbo/go-client/pkg/user.go                |  134 ---
 general/dubbo/go-server/cmd/server.go              |   89 --
 general/dubbo/go-server/conf/client.yml            |   59 -
 general/dubbo/go-server/conf/log.yml               |   27 -
 general/dubbo/go-server/conf/server.yml            |   55 -
 general/dubbo/go-server/docker/docker-compose.yml  |    9 -
 general/dubbo/go-server/pkg/user.go                |  109 --
 general/dubbo/go-server/pkg/user_provider.go       |  128 ---
 .../dubbo/go-server/tests/integration/main_test.go |  135 ---
 .../tests/integration/userprovider_test.go         |  114 --
 general/dubbo/java-client/2.6/pom.xml              |   79 --
 .../src/main/java/org/apache/dubbo/Consumer.java   |  227 ----
 .../2.6/src/main/java/org/apache/dubbo/Gender.java |   23 -
 .../2.6/src/main/java/org/apache/dubbo/User.java   |   83 --
 .../main/java/org/apache/dubbo/UserProvider.java   |   27 -
 .../resources/META-INF/spring/dubbo.consumer.xml   |   41 -
 .../2.6/src/main/resources/log4j.properties        |   19 -
 general/dubbo/java-client/2.7/pom.xml              |  126 --
 .../src/main/java/org/apache/dubbo/Consumer.java   |  227 ----
 .../2.7/src/main/java/org/apache/dubbo/Gender.java |   23 -
 .../2.7/src/main/java/org/apache/dubbo/User.java   |   83 --
 .../main/java/org/apache/dubbo/UserProvider.java   |   27 -
 .../resources/META-INF/spring/dubbo.consumer.xml   |   41 -
 .../2.7/src/main/resources/log4j.properties        |   19 -
 general/dubbo/java-server/2.6/pom.xml              |   79 --
 .../2.6/src/main/java/org/apache/dubbo/Gender.java |   23 -
 .../src/main/java/org/apache/dubbo/Provider.java   |   34 -
 .../src/main/java/org/apache/dubbo/Response.java   |   92 --
 .../2.6/src/main/java/org/apache/dubbo/User.java   |   95 --
 .../main/java/org/apache/dubbo/UserProvider.java   |   50 -
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |  143 ---
 .../java/org/apache/dubbo/UserProviderImpl.java    |  115 --
 .../resources/META-INF/spring/dubbo.provider.xml   |   36 -
 .../2.6/src/main/resources/log4j.properties        |   20 -
 general/dubbo/java-server/2.7/pom.xml              |  126 --
 .../2.7/src/main/java/org/apache/dubbo/Gender.java |   23 -
 .../src/main/java/org/apache/dubbo/Provider.java   |   34 -
 .../src/main/java/org/apache/dubbo/Response.java   |   92 --
 .../2.7/src/main/java/org/apache/dubbo/User.java   |   95 --
 .../main/java/org/apache/dubbo/UserProvider.java   |   50 -
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |  143 ---
 .../java/org/apache/dubbo/UserProviderImpl.java    |  115 --
 .../resources/META-INF/spring/dubbo.provider.xml   |   36 -
 .../2.7/src/main/resources/log4j.properties        |   20 -
 general/grpc/go-client/cmd/client.go               |   61 -
 general/grpc/go-client/conf/client.yml             |   59 -
 general/grpc/go-client/conf/log.yml                |   27 -
 general/grpc/go-client/pkg/hello.go                |   36 -
 general/grpc/go-server/cmd/server.go               |   73 --
 general/grpc/go-server/conf/client.yml             |   59 -
 general/grpc/go-server/conf/log.yml                |   27 -
 general/grpc/go-server/conf/server.yml             |   55 -
 general/grpc/go-server/docker/docker-compose.yml   |    9 -
 general/grpc/go-server/pkg/greeter.go              |   43 -
 .../go-server/tests/integration/greeter_test.go    |   38 -
 .../grpc/go-server/tests/integration/main_test.go  |   64 --
 general/grpc/protobuf/helloworld.pb.go             |  283 -----
 general/grpc/protobuf/helloworld.proto             |   37 -
 general/grpc/protobuf/protobuf.mk                  |   26 -
 general/grpc/stream/go-client/app/Makefile         |    2 -
 general/grpc/stream/go-client/app/client.go        |  144 ---
 general/grpc/stream/go-client/app/hello.go         |   50 -
 general/grpc/stream/go-client/app/helloworld.pb.go |  472 --------
 general/grpc/stream/go-client/app/helloworld.proto |   39 -
 general/grpc/stream/go-client/app/version.go       |   22 -
 general/grpc/stream/go-client/assembly/bin/load.sh |  203 ----
 .../go-client/assembly/common/app.properties       |   23 -
 .../grpc/stream/go-client/assembly/common/build.sh |   83 --
 .../grpc/stream/go-client/assembly/linux/dev.sh    |   36 -
 .../stream/go-client/assembly/linux/release.sh     |   35 -
 .../grpc/stream/go-client/assembly/linux/test.sh   |   35 -
 general/grpc/stream/go-client/assembly/mac/dev.sh  |   36 -
 .../grpc/stream/go-client/assembly/mac/release.sh  |   34 -
 general/grpc/stream/go-client/assembly/mac/test.sh |   34 -
 .../grpc/stream/go-client/assembly/windows/dev.sh  |   34 -
 .../stream/go-client/assembly/windows/release.sh   |   34 -
 .../grpc/stream/go-client/assembly/windows/test.sh |   34 -
 .../grpc/stream/go-client/profiles/dev/client.yml  |   61 -
 general/grpc/stream/go-client/profiles/dev/log.yml |   28 -
 .../grpc/stream/go-client/profiles/release/log.yml |   28 -
 .../grpc/stream/go-client/profiles/test/client.yml |   63 -
 .../grpc/stream/go-client/profiles/test/log.yml    |   28 -
 general/grpc/stream/go-server/app/greeter.go       |  103 --
 general/grpc/stream/go-server/app/helloworld.pb.go |  472 --------
 general/grpc/stream/go-server/app/helloworld.proto |   39 -
 general/grpc/stream/go-server/app/server.go        |   71 --
 general/grpc/stream/go-server/app/version.go       |   22 -
 general/grpc/stream/go-server/assembly/bin/load.sh |  151 ---
 .../go-server/assembly/common/app.properties       |   23 -
 .../grpc/stream/go-server/assembly/common/build.sh |   80 --
 .../grpc/stream/go-server/assembly/linux/dev.sh    |   36 -
 .../stream/go-server/assembly/linux/release.sh     |   36 -
 .../grpc/stream/go-server/assembly/linux/test.sh   |   36 -
 general/grpc/stream/go-server/assembly/mac/dev.sh  |   36 -
 .../grpc/stream/go-server/assembly/mac/release.sh  |   36 -
 general/grpc/stream/go-server/assembly/mac/test.sh |   36 -
 .../grpc/stream/go-server/assembly/windows/dev.sh  |   36 -
 .../stream/go-server/assembly/windows/release.sh   |   36 -
 .../grpc/stream/go-server/assembly/windows/test.sh |   36 -
 general/grpc/stream/go-server/profiles/dev/log.yml |   28 -
 .../grpc/stream/go-server/profiles/dev/server.yml  |   57 -
 .../grpc/stream/go-server/profiles/release/log.yml |   28 -
 .../stream/go-server/profiles/release/server.yml   |   54 -
 .../grpc/stream/go-server/profiles/test/log.yml    |   28 -
 .../grpc/stream/go-server/profiles/test/server.yml |   55 -
 general/grpc/unary/go-client/app/Makefile          |    2 -
 general/grpc/unary/go-client/app/client.go         |   73 --
 general/grpc/unary/go-client/app/hello.go          |   37 -
 general/grpc/unary/go-client/app/helloworld.pb.go  |  284 -----
 general/grpc/unary/go-client/app/helloworld.proto  |   37 -
 general/grpc/unary/go-client/app/version.go        |   22 -
 general/grpc/unary/go-client/assembly/bin/load.sh  |  203 ----
 .../unary/go-client/assembly/common/app.properties |   23 -
 .../grpc/unary/go-client/assembly/common/build.sh  |   83 --
 general/grpc/unary/go-client/assembly/linux/dev.sh |   36 -
 .../grpc/unary/go-client/assembly/linux/release.sh |   35 -
 .../grpc/unary/go-client/assembly/linux/test.sh    |   35 -
 general/grpc/unary/go-client/assembly/mac/dev.sh   |   36 -
 .../grpc/unary/go-client/assembly/mac/release.sh   |   34 -
 general/grpc/unary/go-client/assembly/mac/test.sh  |   34 -
 .../grpc/unary/go-client/assembly/windows/dev.sh   |   34 -
 .../unary/go-client/assembly/windows/release.sh    |   34 -
 .../grpc/unary/go-client/assembly/windows/test.sh  |   34 -
 .../grpc/unary/go-client/profiles/dev/client.yml   |   61 -
 general/grpc/unary/go-client/profiles/dev/log.yml  |   28 -
 .../unary/go-client/profiles/release/client.yml    |   61 -
 .../grpc/unary/go-client/profiles/release/log.yml  |   28 -
 .../grpc/unary/go-client/profiles/test/client.yml  |   63 -
 general/grpc/unary/go-client/profiles/test/log.yml |   28 -
 general/grpc/unary/go-server/app/greeter.go        |   43 -
 general/grpc/unary/go-server/app/helloworld.pb.go  |  283 -----
 general/grpc/unary/go-server/app/helloworld.proto  |   37 -
 general/grpc/unary/go-server/app/server.go         |   75 --
 general/grpc/unary/go-server/app/version.go        |   22 -
 general/grpc/unary/go-server/assembly/bin/load.sh  |  151 ---
 .../unary/go-server/assembly/common/app.properties |   23 -
 .../grpc/unary/go-server/assembly/common/build.sh  |   80 --
 general/grpc/unary/go-server/assembly/linux/dev.sh |   36 -
 .../grpc/unary/go-server/assembly/linux/release.sh |   36 -
 .../grpc/unary/go-server/assembly/linux/test.sh    |   36 -
 general/grpc/unary/go-server/assembly/mac/dev.sh   |   36 -
 .../grpc/unary/go-server/assembly/mac/release.sh   |   36 -
 general/grpc/unary/go-server/assembly/mac/test.sh  |   36 -
 .../grpc/unary/go-server/assembly/windows/dev.sh   |   36 -
 .../unary/go-server/assembly/windows/release.sh    |   36 -
 .../grpc/unary/go-server/assembly/windows/test.sh  |   36 -
 general/grpc/unary/go-server/profiles/dev/log.yml  |   28 -
 .../grpc/unary/go-server/profiles/dev/server.yml   |   57 -
 .../grpc/unary/go-server/profiles/release/log.yml  |   28 -
 .../unary/go-server/profiles/release/server.yml    |   54 -
 general/grpc/unary/go-server/profiles/test/log.yml |   28 -
 .../grpc/unary/go-server/profiles/test/server.yml  |   57 -
 general/grpc/unary/java-client/build.sh            |   21 -
 general/grpc/unary/java-client/pom.xml             |  247 ----
 .../java-client/src/main/assembly/assembly.xml     |   39 -
 .../src/main/assembly/conf/dubbo.properties        |   13 -
 .../src/main/assembly/conf/log4j.properties        |   19 -
 .../src/main/java/com/ikurento/user/Consumer.java  |  111 --
 .../java-client/src/main/proto/UserService.proto   |   56 -
 .../resources/META-INF/spring/dubbo.consumer.xml   |   43 -
 .../src/main/resources/META-INF/spring/service.xml |   36 -
 general/grpc/unary/java-server/build.sh            |   20 -
 general/grpc/unary/java-server/pom.xml             |  225 ----
 general/grpc/unary/java-server/script/debug.sh     |   22 -
 .../java-server/src/main/assembly/assembly.xml     |   45 -
 .../java-server/src/main/assembly/bin/start.bat    |   44 -
 .../java-server/src/main/assembly/bin/start.sh     |  125 --
 .../src/main/assembly/conf/dubbo.properties        |   14 -
 .../src/main/assembly/conf/log4j.properties        |   20 -
 .../src/main/java/com/ikurento/user/Provider.java  |   34 -
 .../java/com/ikurento/user/UserProviderImpl.java   |   70 --
 .../java-server/src/main/proto/UserService.proto   |   56 -
 .../resources/META-INF/spring/dubbo.provider.xml   |   39 -
 .../src/main/resources/log4j.properties            |   20 -
 general/jsonrpc/go-client/app/client.go            |  258 -----
 general/jsonrpc/go-client/app/user.go              |   97 --
 general/jsonrpc/go-client/app/version.go           |   22 -
 general/jsonrpc/go-client/assembly/bin/load.sh     |  203 ----
 .../go-client/assembly/common/app.properties       |   23 -
 general/jsonrpc/go-client/assembly/common/build.sh |   83 --
 general/jsonrpc/go-client/assembly/linux/dev.sh    |   36 -
 .../jsonrpc/go-client/assembly/linux/release.sh    |   35 -
 general/jsonrpc/go-client/assembly/linux/test.sh   |   35 -
 general/jsonrpc/go-client/assembly/mac/dev.sh      |   36 -
 general/jsonrpc/go-client/assembly/mac/release.sh  |   34 -
 general/jsonrpc/go-client/assembly/mac/test.sh     |   34 -
 general/jsonrpc/go-client/assembly/windows/dev.sh  |   34 -
 .../jsonrpc/go-client/assembly/windows/release.sh  |   34 -
 general/jsonrpc/go-client/assembly/windows/test.sh |   34 -
 general/jsonrpc/go-client/profiles/dev/client.yml  |   60 -
 general/jsonrpc/go-client/profiles/dev/log.yml     |   28 -
 .../jsonrpc/go-client/profiles/release/client.yml  |   60 -
 general/jsonrpc/go-client/profiles/release/log.yml |   28 -
 general/jsonrpc/go-client/profiles/test/client.yml |   60 -
 general/jsonrpc/go-client/profiles/test/log.yml    |   28 -
 general/jsonrpc/go-server/app/server.go            |   77 --
 general/jsonrpc/go-server/app/user.go              |   73 --
 general/jsonrpc/go-server/app/user_provider.go     |  102 --
 general/jsonrpc/go-server/app/user_provider1.go    |   87 --
 general/jsonrpc/go-server/app/user_provider2.go    |   97 --
 general/jsonrpc/go-server/app/version.go           |   22 -
 general/jsonrpc/go-server/assembly/bin/load.sh     |  151 ---
 .../go-server/assembly/common/app.properties       |   23 -
 general/jsonrpc/go-server/assembly/common/build.sh |   80 --
 general/jsonrpc/go-server/assembly/linux/dev.sh    |   36 -
 .../jsonrpc/go-server/assembly/linux/release.sh    |   36 -
 general/jsonrpc/go-server/assembly/linux/test.sh   |   36 -
 general/jsonrpc/go-server/assembly/mac/dev.sh      |   36 -
 general/jsonrpc/go-server/assembly/mac/release.sh  |   36 -
 general/jsonrpc/go-server/assembly/mac/test.sh     |   36 -
 general/jsonrpc/go-server/assembly/windows/dev.sh  |   36 -
 .../jsonrpc/go-server/assembly/windows/release.sh  |   36 -
 general/jsonrpc/go-server/assembly/windows/test.sh |   36 -
 general/jsonrpc/go-server/profiles/dev/log.yml     |   28 -
 general/jsonrpc/go-server/profiles/dev/server.yml  |   75 --
 general/jsonrpc/go-server/profiles/release/log.yml |   28 -
 .../jsonrpc/go-server/profiles/release/server.yml  |   75 --
 general/jsonrpc/go-server/profiles/test/log.yml    |   28 -
 general/jsonrpc/go-server/profiles/test/server.yml |   75 --
 general/jsonrpc/java-client/build.sh               |   21 -
 general/jsonrpc/java-client/pom.xml                |  230 ----
 .../java-client/src/main/assembly/assembly.xml     |   39 -
 .../src/main/assembly/conf/dubbo.properties        |   13 -
 .../src/main/assembly/conf/log4j.properties        |   19 -
 .../src/main/java/com/ikurento/user/Consumer.java  |  211 ----
 .../src/main/java/com/ikurento/user/Gender.java    |   23 -
 .../src/main/java/com/ikurento/user/User.java      |   83 --
 .../main/java/com/ikurento/user/UserProvider.java  |   25 -
 .../resources/META-INF/spring/dubbo.consumer.xml   |   44 -
 .../src/main/resources/META-INF/spring/service.xml |   38 -
 .../src/main/resources/dubbo.properties            |   13 -
 .../src/main/resources/log4j.properties            |   19 -
 general/jsonrpc/java-server/build.sh               |   20 -
 general/jsonrpc/java-server/pom.xml                |  195 ----
 general/jsonrpc/java-server/script/debug.sh        |   22 -
 .../java-server/src/main/assembly/assembly.xml     |   45 -
 .../src/main/assembly/conf/dubbo.properties        |   14 -
 .../src/main/assembly/conf/log4j.properties        |   20 -
 .../src/main/java/com/ikurento/user/Gender.java    |   23 -
 .../src/main/java/com/ikurento/user/Provider.java  |   34 -
 .../src/main/java/com/ikurento/user/Response.java  |   92 --
 .../src/main/java/com/ikurento/user/User.java      |   95 --
 .../main/java/com/ikurento/user/UserProvider.java  |   46 -
 .../com/ikurento/user/UserProviderAnotherImpl.java |  134 ---
 .../java/com/ikurento/user/UserProviderImpl.java   |  111 --
 .../resources/META-INF/spring/dubbo.provider.xml   |   39 -
 .../src/main/resources/log4j.properties            |   20 -
 general/rest/README.md                             |   95 --
 general/rest/README_zh.md                          |   97 --
 general/rest/go-client/cmd/client.go               |  210 ----
 general/rest/go-client/cmd/version.go              |   22 -
 general/rest/go-client/conf/client.yml             |  108 --
 general/rest/go-client/conf/log.yml                |   28 -
 general/rest/go-client/docker/docker-compose.yml   |    9 -
 general/rest/go-client/pkg/user.go                 |   97 --
 general/rest/go-server/cmd/server.go               |   92 --
 general/rest/go-server/cmd/version.go              |   22 -
 general/rest/go-server/conf/log.yml                |   28 -
 general/rest/go-server/conf/server.yml             |  121 --
 general/rest/go-server/docker/docker-compose.yml   |    9 -
 general/rest/go-server/pkg/user.go                 |   73 --
 general/rest/go-server/pkg/user_provider.go        |   89 --
 general/rest/go-server/pkg/user_provider1.go       |   79 --
 general/rest/go-server/pkg/user_provider2.go       |   89 --
 generic/README.md                                  |   44 -
 generic/README_zh.md                               |   41 -
 generic/go-client/cmd/client.go                    |  134 ---
 generic/go-client/conf/client.yml                  |   59 -
 generic/go-client/conf/log.yml                     |   28 -
 generic/go-client/pkg/user.go                      |   33 -
 generic/go-server/cmd/server.go                    |   77 --
 generic/go-server/conf/client.yml                  |   59 -
 generic/go-server/conf/log.yml                     |   28 -
 generic/go-server/conf/server.yml                  |   55 -
 generic/go-server/docker/docker-compose.yml        |    9 -
 generic/go-server/pkg/user.go                      |   76 --
 generic/go-server/tests/integration/main_test.go   |   65 --
 .../tests/integration/userprovider_test.go         |   73 --
 generic/java-client/2.6/pom.xml                    |   79 --
 .../src/main/java/org/apache/dubbo/Consumer.java   |   53 -
 .../2.6/src/main/java/org/apache/dubbo/User.java   |   77 --
 .../2.6/src/main/resources/log4j.properties        |   19 -
 generic/java-client/2.7/pom.xml                    |  126 --
 .../src/main/java/org/apache/dubbo/Consumer.java   |   53 -
 .../2.7/src/main/java/org/apache/dubbo/User.java   |   77 --
 .../2.7/src/main/resources/log4j.properties        |   19 -
 generic/java-server/2.6/pom.xml                    |   79 --
 .../2.6/src/main/java/org/apache/dubbo/Gender.java |   23 -
 .../src/main/java/org/apache/dubbo/Provider.java   |   34 -
 .../src/main/java/org/apache/dubbo/Response.java   |   92 --
 .../2.6/src/main/java/org/apache/dubbo/User.java   |   95 --
 .../main/java/org/apache/dubbo/UserProvider.java   |   50 -
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |  143 ---
 .../java/org/apache/dubbo/UserProviderImpl.java    |  115 --
 .../resources/META-INF/spring/dubbo.provider.xml   |   36 -
 .../2.6/src/main/resources/log4j.properties        |   20 -
 generic/java-server/2.7/pom.xml                    |  126 --
 .../2.7/src/main/java/org/apache/dubbo/Gender.java |   23 -
 .../src/main/java/org/apache/dubbo/Provider.java   |   34 -
 .../src/main/java/org/apache/dubbo/Response.java   |   92 --
 .../2.7/src/main/java/org/apache/dubbo/User.java   |   95 --
 .../main/java/org/apache/dubbo/UserProvider.java   |   50 -
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |  143 ---
 .../java/org/apache/dubbo/UserProviderImpl.java    |  115 --
 .../resources/META-INF/spring/dubbo.provider.xml   |   36 -
 .../2.7/src/main/resources/log4j.properties        |   20 -
 go.mod                                             |   45 -
 go.sum                                             | 1212 --------------------
 group/README.md                                    |   33 -
 group/README_zh.md                                 |   33 -
 group/go-client/cmd/client.go                      |   76 --
 group/go-client/conf/client.yml                    |   69 --
 group/go-client/conf/log.yml                       |   27 -
 group/go-client/pkg/user.go                        |   50 -
 group/go-server-group-a/cmd/server.go              |   78 --
 group/go-server-group-a/conf/client.yml            |   59 -
 group/go-server-group-a/conf/log.yml               |   27 -
 group/go-server-group-a/conf/server.yml            |   55 -
 group/go-server-group-a/docker/docker-compose.yml  |    9 -
 group/go-server-group-a/pkg/user.go                |   60 -
 .../tests/integration/main_test.go                 |   71 --
 .../tests/integration/userprovider_test.go         |   38 -
 group/go-server-group-b/cmd/server.go              |   78 --
 group/go-server-group-b/conf/client.yml            |   59 -
 group/go-server-group-b/conf/log.yml               |   27 -
 group/go-server-group-b/conf/server.yml            |   55 -
 group/go-server-group-b/docker/docker-compose.yml  |    9 -
 group/go-server-group-b/pkg/user.go                |   60 -
 .../tests/integration/main_test.go                 |   71 --
 .../tests/integration/userprovider_test.go         |   39 -
 helloworld/README.md                               |  135 ---
 helloworld/README_zh.md                            |  135 ---
 helloworld/go-client/cmd/client.go                 |   64 --
 helloworld/go-client/conf/client.yml               |   59 -
 helloworld/go-client/conf/log.yml                  |   27 -
 helloworld/go-client/pkg/user.go                   |   42 -
 helloworld/go-server/cmd/server.go                 |   76 --
 helloworld/go-server/conf/client.yml               |   59 -
 helloworld/go-server/conf/log.yml                  |   27 -
 helloworld/go-server/conf/server.yml               |   55 -
 helloworld/go-server/docker/docker-compose.yml     |    9 -
 helloworld/go-server/pkg/user.go                   |   63 -
 .../go-server/tests/integration/main_test.go       |   71 --
 .../tests/integration/userprovider_test.go         |   39 -
 helloworld/java-client/build.sh                    |   21 -
 helloworld/java-client/pom.xml                     |  230 ----
 .../java-client/src/main/assembly/assembly.xml     |   43 -
 .../src/main/java/org/apache/dubbo/Consumer.java   |   60 -
 .../src/main/java/org/apache/dubbo/User.java       |   76 --
 .../main/java/org/apache/dubbo/UserProvider.java   |   18 -
 .../resources/META-INF/spring/dubbo.consumer.xml   |   38 -
 .../src/main/resources/META-INF/spring/service.xml |   24 -
 .../src/main/resources/dubbo.properties            |   12 -
 .../src/main/resources/log4j.properties            |   16 -
 helloworld/java-server/build.sh                    |   20 -
 helloworld/java-server/pom.xml                     |  196 ----
 helloworld/java-server/script/debug.sh             |   23 -
 .../java-server/src/main/assembly/assembly.xml     |   44 -
 .../src/main/java/org/apache/dubbo/Provider.java   |   33 -
 .../src/main/java/org/apache/dubbo/User.java       |   86 --
 .../main/java/org/apache/dubbo/UserProvider.java   |   24 -
 .../java/org/apache/dubbo/UserProviderImpl.java    |   30 -
 .../resources/META-INF/spring/dubbo.provider.xml   |   34 -
 .../src/main/resources/dubbo.properties            |   13 -
 .../src/main/resources/log4j.properties            |   17 -
 integrate_test.sh                                  |   36 -
 metric/README.md                                   |   39 -
 metric/README_zh.md                                |   39 -
 metric/go-client/cmd/client.go                     |   68 --
 metric/go-client/conf/client.yml                   |   59 -
 metric/go-client/conf/log.yml                      |   28 -
 metric/go-client/pkg/user.go                       |   42 -
 metric/go-server/cmd/server.go                     |   88 --
 metric/go-server/conf/client.yml                   |   59 -
 metric/go-server/conf/log.yml                      |   28 -
 metric/go-server/conf/server.yml                   |   61 -
 metric/go-server/docker/config/prometheus.yml      |   18 -
 metric/go-server/docker/docker-compose.yml         |   41 -
 metric/go-server/pkg/user.go                       |   68 --
 metric/go-server/tests/integration/main_test.go    |   71 --
 .../tests/integration/userprovider_test.go         |   47 -
 multi-registry/go-client/cmd/client.go             |   65 --
 multi-registry/go-client/conf/client.yml           |   61 -
 multi-registry/go-client/conf/log.yml              |   28 -
 multi-registry/go-client/pkg/user.go               |   42 -
 multi-registry/go-server/cmd/server.go             |   76 --
 multi-registry/go-server/conf/client.yml           |   61 -
 multi-registry/go-server/conf/log.yml              |   28 -
 multi-registry/go-server/conf/server.yml           |   59 -
 multi-registry/go-server/docker/docker-compose.yml |   13 -
 multi-registry/go-server/pkg/user.go               |   63 -
 .../go-server/tests/integration/main_test.go       |   70 --
 .../tests/integration/userprovider_test.go         |   38 -
 multi-zone/README.md                               |   42 -
 multi-zone/docker/docker-compose.yml               |   13 -
 multi-zone/go-client/cmd/client.go                 |   81 --
 multi-zone/go-client/conf/client.yml               |   68 --
 multi-zone/go-client/conf/log.yml                  |   28 -
 multi-zone/go-client/pkg/user.go                   |   42 -
 .../go-client/tests/integration/main_test.go       |   51 -
 .../tests/integration/userprovider_test.go         |   53 -
 multi-zone/go-server-hz/cmd/server.go              |   76 --
 multi-zone/go-server-hz/conf/log.yml               |   28 -
 multi-zone/go-server-hz/conf/server.yml            |   56 -
 multi-zone/go-server-hz/pkg/user.go                |   64 --
 multi-zone/go-server-sh/cmd/server.go              |   76 --
 multi-zone/go-server-sh/conf/log.yml               |   28 -
 multi-zone/go-server-sh/conf/server.yml            |   56 -
 multi-zone/go-server-sh/pkg/user.go                |   64 --
 registry/etcd/go-client/cmd/client.go              |   65 --
 registry/etcd/go-client/conf/client.yml            |   59 -
 registry/etcd/go-client/conf/log.yml               |   27 -
 registry/etcd/go-client/pkg/user.go                |   42 -
 registry/etcd/go-server/cmd/server.go              |   76 --
 registry/etcd/go-server/conf/client.yml            |   59 -
 registry/etcd/go-server/conf/log.yml               |   27 -
 registry/etcd/go-server/conf/server.yml            |   55 -
 registry/etcd/go-server/docker/docker-compose.yml  |   21 -
 registry/etcd/go-server/pkg/user.go                |   63 -
 .../etcd/go-server/tests/integration/main_test.go  |   70 --
 .../tests/integration/userprovider_test.go         |   38 -
 registry/kubernetes/README.md                      |   29 -
 registry/kubernetes/client.yaml                    |   15 -
 registry/kubernetes/role-binding.yaml              |   11 -
 registry/kubernetes/role.yaml                      |    8 -
 registry/kubernetes/sa.yaml                        |    4 -
 registry/kubernetes/server.yaml                    |   23 -
 registry/nacos/go-client/cmd/client.go             |   65 --
 registry/nacos/go-client/conf/client.yml           |   57 -
 registry/nacos/go-client/conf/log.yml              |   27 -
 registry/nacos/go-client/pkg/user.go               |   42 -
 registry/nacos/go-server/cmd/server.go             |   79 --
 registry/nacos/go-server/conf/client.yml           |   57 -
 registry/nacos/go-server/conf/log.yml              |   27 -
 registry/nacos/go-server/conf/server.yml           |   55 -
 registry/nacos/go-server/docker/docker-compose.yml |   11 -
 registry/nacos/go-server/pkg/user.go               |   63 -
 .../nacos/go-server/tests/integration/main_test.go |   70 --
 .../tests/integration/userprovider_test.go         |   38 -
 registry/servicediscovery/consul/README.md         |   47 -
 registry/servicediscovery/consul/README_zh.md      |   46 -
 .../consul/go-client/cmd/client.go                 |  106 --
 .../consul/go-client/cmd/version.go                |   22 -
 .../consul/go-client/conf/client.yml               |   77 --
 .../servicediscovery/consul/go-client/conf/log.yml |   28 -
 .../consul/go-client/pkg/pojo/user.go              |   42 -
 .../consul/go-server/cmd/server.go                 |   90 --
 .../consul/go-server/cmd/version.go                |   22 -
 .../consul/go-server/conf/client.yml               |   77 --
 .../servicediscovery/consul/go-server/conf/log.yml |   28 -
 .../consul/go-server/conf/server.yml               |   74 --
 .../consul/go-server/docker/docker-compose.yml     |    9 -
 .../consul/go-server/pkg/pojo/user.go              |   60 -
 .../go-server/tests/integration/main_test.go       |   76 --
 .../tests/integration/userprovider_test.go         |   38 -
 registry/servicediscovery/etcd/go-client/FIXME.md  |   36 -
 .../servicediscovery/etcd/go-client/cmd/client.go  |   71 --
 .../etcd/go-client/conf/client.yml                 |   74 --
 .../servicediscovery/etcd/go-client/conf/log.yml   |   27 -
 .../etcd/go-client/conf/server.yml                 |   33 -
 .../servicediscovery/etcd/go-client/pkg/user.go    |   42 -
 .../servicediscovery/etcd/go-server/cmd/server.go  |   81 --
 .../etcd/go-server/conf/client.yml                 |   74 --
 .../servicediscovery/etcd/go-server/conf/log.yml   |   27 -
 .../etcd/go-server/conf/server.yml                 |   71 --
 .../etcd/go-server/docker/docker-compose.yml       |   21 -
 .../servicediscovery/etcd/go-server/pkg/user.go    |   63 -
 .../etcd/go-server/tests/integration/main_test.go  |   75 --
 .../tests/integration/userprovider_test.go         |   38 -
 registry/servicediscovery/file/go-client/FIXME.md  |   26 -
 .../servicediscovery/file/go-client/cmd/client.go  |   70 --
 .../file/go-client/conf/client.yml                 |   64 --
 .../servicediscovery/file/go-client/conf/log.yml   |   27 -
 .../file/go-client/conf/server.yml                 |   23 -
 .../servicediscovery/file/go-client/pkg/user.go    |   42 -
 .../servicediscovery/file/go-server/cmd/server.go  |   81 --
 .../file/go-server/conf/client.yml                 |   63 -
 .../servicediscovery/file/go-server/conf/log.yml   |   27 -
 .../file/go-server/conf/server.yml                 |   61 -
 .../servicediscovery/file/go-server/pkg/user.go    |   63 -
 .../file/go-server/tests/integration/main_test.go  |   74 --
 .../tests/integration/userprovider_test.go         |   38 -
 registry/servicediscovery/nacos/go-client/FIXME.md |   40 -
 .../servicediscovery/nacos/go-client/cmd/client.go |   72 --
 .../nacos/go-client/conf/client.yml                |   77 --
 .../servicediscovery/nacos/go-client/conf/log.yml  |   27 -
 .../nacos/go-client/conf/server.yml                |   37 -
 .../servicediscovery/nacos/go-client/pkg/user.go   |   42 -
 .../servicediscovery/nacos/go-server/cmd/server.go |   82 --
 .../nacos/go-server/conf/client.yml                |   77 --
 .../servicediscovery/nacos/go-server/conf/log.yml  |   27 -
 .../nacos/go-server/conf/server.yml                |   75 --
 .../nacos/go-server/docker/docker-compose.yml      |   11 -
 .../servicediscovery/nacos/go-server/pkg/user.go   |   63 -
 .../nacos/go-server/tests/integration/main_test.go |   76 --
 .../tests/integration/userprovider_test.go         |   38 -
 .../servicediscovery/zookeeper/go-client/FIXME.md  |   40 -
 .../zookeeper/go-client/cmd/client.go              |   70 --
 .../zookeeper/go-client/conf/client.yml            |   73 --
 .../zookeeper/go-client/conf/log.yml               |   27 -
 .../zookeeper/go-client/conf/server.yml            |   33 -
 .../zookeeper/go-client/pkg/user.go                |   42 -
 .../zookeeper/go-server/cmd/server.go              |   81 --
 .../zookeeper/go-server/conf/client.yml            |   73 --
 .../zookeeper/go-server/conf/log.yml               |   27 -
 .../zookeeper/go-server/conf/server.yml            |   71 --
 .../zookeeper/go-server/docker/docker-compose.yml  |    8 -
 .../zookeeper/go-server/pkg/user.go                |   63 -
 .../go-server/tests/integration/main_test.go       |   76 --
 .../tests/integration/userprovider_test.go         |   38 -
 router/README.md                                   |   35 -
 router/condition/go-client/cmd/client.go           |   65 --
 router/condition/go-client/conf/client.yml         |   59 -
 router/condition/go-client/conf/log.yml            |   27 -
 router/condition/go-client/conf/router_config.yml  |   13 -
 router/condition/go-client/pkg/user.go             |   42 -
 router/condition/go-server/app/user.go             |   63 -
 router/condition/go-server/cmd/server.go           |   77 --
 router/condition/go-server/conf/client.yml         |   59 -
 router/condition/go-server/conf/log.yml            |   27 -
 router/condition/go-server/conf/router_config.yml  |   13 -
 router/condition/go-server/conf/server.yml         |   55 -
 .../condition/go-server/docker/docker-compose.yml  |    9 -
 router/condition/go-server/pkg/user.go             |   63 -
 router/condition/go-server/profiles/dev/log.yml    |   28 -
 router/condition/go-server/profiles/dev/server.yml |   92 --
 .../go-server/tests/integration/main_test.go       |   71 --
 .../tests/integration/userprovider_test.go         |   34 -
 router/tag/go-client/app/client.go                 |  128 ---
 router/tag/go-client/assembly/bin/load.sh          |  203 ----
 .../tag/go-client/assembly/common/app.properties   |   24 -
 router/tag/go-client/assembly/common/build.sh      |   89 --
 router/tag/go-client/assembly/linux/dev.sh         |   36 -
 router/tag/go-client/assembly/linux/release.sh     |   35 -
 router/tag/go-client/assembly/linux/test.sh        |   35 -
 router/tag/go-client/assembly/mac/dev.sh           |   36 -
 router/tag/go-client/assembly/mac/release.sh       |   34 -
 router/tag/go-client/assembly/mac/test.sh          |   34 -
 router/tag/go-client/assembly/windows/dev.sh       |   34 -
 router/tag/go-client/assembly/windows/release.sh   |   34 -
 router/tag/go-client/assembly/windows/test.sh      |   34 -
 router/tag/go-client/profiles/dev/client.yml       |   62 -
 router/tag/go-client/profiles/dev/log.yml          |   28 -
 .../tag/go-client/profiles/dev/router_config.yml   |   14 -
 router/tag/go-server/app/server.go                 |   78 --
 router/tag/go-server/app/user.go                   |   63 -
 router/tag/go-server/app/version.go                |   22 -
 router/tag/go-server/assembly/bin/load.sh          |  151 ---
 .../tag/go-server/assembly/common/app.properties   |   23 -
 router/tag/go-server/assembly/common/build.sh      |   80 --
 router/tag/go-server/assembly/linux/dev.sh         |   36 -
 router/tag/go-server/assembly/linux/release.sh     |   36 -
 router/tag/go-server/assembly/linux/test.sh        |   36 -
 router/tag/go-server/assembly/mac/dev.sh           |   36 -
 router/tag/go-server/assembly/mac/release.sh       |   36 -
 router/tag/go-server/assembly/mac/test.sh          |   36 -
 router/tag/go-server/assembly/windows/dev.sh       |   36 -
 router/tag/go-server/assembly/windows/release.sh   |   36 -
 router/tag/go-server/assembly/windows/test.sh      |   36 -
 router/tag/go-server/profiles/dev/log.yml          |   28 -
 router/tag/go-server/profiles/dev/server.yml       |   95 --
 router/tag/java-client/build.sh                    |   21 -
 router/tag/java-client/pom.xml                     |  211 ----
 .../tag/java-client/src/main/assembly/assembly.xml |   43 -
 .../src/main/java/com/ikurento/user/Consumer.java  |   61 -
 .../java/com/ikurento/user/EmbeddedZooKeeper.java  |  250 ----
 .../src/main/java/com/ikurento/user/User.java      |   76 --
 .../main/java/com/ikurento/user/UserProvider.java  |   18 -
 .../src/main/java/com/ikurento/user/ZKTools.java   |   88 --
 .../resources/META-INF/spring/dubbo.consumer.xml   |   37 -
 .../src/main/resources/META-INF/spring/service.xml |   27 -
 .../src/main/resources/log4j.properties            |   19 -
 router/tag/java-server/build.sh                    |   20 -
 router/tag/java-server/pom.xml                     |  210 ----
 router/tag/java-server/script/debug.sh             |   23 -
 .../tag/java-server/src/main/assembly/assembly.xml |   43 -
 .../java/com/ikurento/user/EmbeddedZooKeeper.java  |  250 ----
 .../src/main/java/com/ikurento/user/Provider.java  |   40 -
 .../src/main/java/com/ikurento/user/Provider2.java |   40 -
 .../src/main/java/com/ikurento/user/User.java      |   86 --
 .../main/java/com/ikurento/user/UserProvider.java  |   24 -
 .../src/main/java/com/ikurento/user/ZKTools.java   |   89 --
 .../com/ikurento/user/impl/UserProviderImpl.java   |   32 -
 .../resources/META-INF/spring/dubbo.provider.xml   |   34 -
 .../resources/META-INF/spring/dubbo.provider2.xml  |   34 -
 .../src/main/resources/log4j.properties            |   20 -
 seata/client/README.md                             |   12 -
 seata/client/app/client.go                         |  100 --
 seata/client/app/svc/svc.go                        |  153 ---
 seata/client/app/version.go                        |   22 -
 seata/client/assembly/bin/load.sh                  |  204 ----
 seata/client/assembly/common/app.properties        |   24 -
 seata/client/assembly/common/build.sh              |   83 --
 seata/client/assembly/linux/dev.sh                 |   36 -
 seata/client/assembly/linux/release.sh             |   35 -
 seata/client/assembly/linux/test.sh                |   35 -
 seata/client/assembly/mac/dev.sh                   |   36 -
 seata/client/assembly/mac/release.sh               |   34 -
 seata/client/assembly/mac/test.sh                  |   34 -
 seata/client/assembly/windows/dev.sh               |   34 -
 seata/client/assembly/windows/release.sh           |   34 -
 seata/client/assembly/windows/test.sh              |   34 -
 seata/client/profiles/dev/client.yml               |   65 --
 seata/client/profiles/dev/log.yml                  |   28 -
 seata/client/profiles/dev/seata.yml                |   25 -
 seata/client/profiles/release/client.yml           |   51 -
 seata/client/profiles/release/log.yml              |   28 -
 seata/client/profiles/release/seata.yml            |   27 -
 seata/client/profiles/test/client.yml              |   50 -
 seata/client/profiles/test/log.yml                 |   28 -
 seata/filter/seata_filter.go                       |   43 -
 seata/order-svc/README.md                          |   18 -
 seata/order-svc/app/dao/dao.go                     |  150 ---
 seata/order-svc/app/order_svc.go                   |   54 -
 seata/order-svc/app/server.go                      |  113 --
 seata/order-svc/app/version.go                     |   22 -
 seata/order-svc/assembly/bin/load.sh               |  152 ---
 seata/order-svc/assembly/common/app.properties     |   24 -
 seata/order-svc/assembly/common/build.sh           |   82 --
 seata/order-svc/assembly/linux/dev.sh              |   36 -
 seata/order-svc/assembly/linux/release.sh          |   36 -
 seata/order-svc/assembly/linux/test.sh             |   36 -
 seata/order-svc/assembly/mac/dev.sh                |   36 -
 seata/order-svc/assembly/mac/release.sh            |   36 -
 seata/order-svc/assembly/mac/test.sh               |   36 -
 seata/order-svc/assembly/windows/dev.sh            |   36 -
 seata/order-svc/assembly/windows/release.sh        |   36 -
 seata/order-svc/assembly/windows/test.sh           |   36 -
 seata/order-svc/profiles/dev/log.yml               |   28 -
 seata/order-svc/profiles/dev/seata.yml             |   29 -
 seata/order-svc/profiles/dev/server.yml            |   57 -
 seata/order-svc/profiles/release/log.yml           |   28 -
 seata/order-svc/profiles/release/seata.yml         |   30 -
 seata/order-svc/profiles/release/server.yml        |   60 -
 seata/order-svc/profiles/test/log.yml              |   28 -
 seata/order-svc/profiles/test/server.yml           |   58 -
 seata/product-svc/README.md                        |   18 -
 seata/product-svc/app/dao/dao.go                   |   75 --
 seata/product-svc/app/product_svc.go               |   54 -
 seata/product-svc/app/server.go                    |  114 --
 seata/product-svc/app/version.go                   |   22 -
 seata/product-svc/assembly/bin/load.sh             |  152 ---
 seata/product-svc/assembly/common/app.properties   |   24 -
 seata/product-svc/assembly/common/build.sh         |   82 --
 seata/product-svc/assembly/linux/dev.sh            |   36 -
 seata/product-svc/assembly/linux/release.sh        |   36 -
 seata/product-svc/assembly/linux/test.sh           |   36 -
 seata/product-svc/assembly/mac/dev.sh              |   36 -
 seata/product-svc/assembly/mac/release.sh          |   36 -
 seata/product-svc/assembly/mac/test.sh             |   36 -
 seata/product-svc/assembly/windows/dev.sh          |   36 -
 seata/product-svc/assembly/windows/release.sh      |   36 -
 seata/product-svc/assembly/windows/test.sh         |   36 -
 seata/product-svc/profiles/dev/log.yml             |   28 -
 seata/product-svc/profiles/dev/seata.yml           |   31 -
 seata/product-svc/profiles/dev/server.yml          |   57 -
 seata/product-svc/profiles/release/log.yml         |   28 -
 seata/product-svc/profiles/release/seata.yml       |   31 -
 seata/product-svc/profiles/release/server.yml      |   60 -
 seata/product-svc/profiles/test/log.yml            |   28 -
 seata/product-svc/profiles/test/server.yml         |   58 -
 seata/scripts/seata_order.sql                      |  103 --
 seata/scripts/seata_product.sql                    |  112 --
 shop/README.md                                     |   44 -
 shop/dubbo/go-service-order/app/order.go           |   74 --
 shop/dubbo/go-service-order/app/product.go         |   58 -
 shop/dubbo/go-service-order/app/service.go         |   77 --
 shop/dubbo/go-service-order/app/version.go         |   28 -
 shop/dubbo/go-service-order/profiles/client.yml    |   65 --
 shop/dubbo/go-service-order/profiles/log.yml       |   28 -
 shop/dubbo/go-service-order/profiles/server.yml    |   58 -
 shop/dubbo/go-service-product/app/product.go       |   67 --
 shop/dubbo/go-service-product/app/service.go       |   76 --
 shop/dubbo/go-service-product/app/version.go       |   22 -
 shop/dubbo/go-service-product/profiles/log.yml     |   28 -
 shop/dubbo/go-service-product/profiles/server.yml  |   58 -
 shop/dubbo/go-service-user/app/order.go            |   67 --
 shop/dubbo/go-service-user/app/service.go          |   90 --
 shop/dubbo/go-service-user/app/version.go          |   22 -
 shop/dubbo/go-service-user/profiles/client.yml     |   61 -
 shop/dubbo/go-service-user/profiles/log.yml        |   28 -
 start_integrate_test.sh                            |   68 --
 tracing/dubbo/go-client/app/client.go              |  121 --
 tracing/dubbo/go-client/app/user.go                |   56 -
 tracing/dubbo/go-client/app/version.go             |   22 -
 tracing/dubbo/go-client/assembly/bin/load.sh       |  203 ----
 .../dubbo/go-client/assembly/common/app.properties |   23 -
 tracing/dubbo/go-client/assembly/common/build.sh   |   83 --
 tracing/dubbo/go-client/assembly/linux/dev.sh      |   36 -
 tracing/dubbo/go-client/assembly/linux/release.sh  |   35 -
 tracing/dubbo/go-client/assembly/linux/test.sh     |   35 -
 tracing/dubbo/go-client/assembly/mac/dev.sh        |   36 -
 tracing/dubbo/go-client/assembly/mac/release.sh    |   34 -
 tracing/dubbo/go-client/assembly/mac/test.sh       |   34 -
 tracing/dubbo/go-client/assembly/windows/dev.sh    |   34 -
 .../dubbo/go-client/assembly/windows/release.sh    |   34 -
 tracing/dubbo/go-client/assembly/windows/test.sh   |   34 -
 tracing/dubbo/go-client/profiles/dev/client.yml    |   61 -
 tracing/dubbo/go-client/profiles/dev/log.yml       |   28 -
 .../dubbo/go-client/profiles/release/client.yml    |   60 -
 tracing/dubbo/go-client/profiles/release/log.yml   |   28 -
 tracing/dubbo/go-client/profiles/test/client.yml   |   59 -
 tracing/dubbo/go-client/profiles/test/log.yml      |   28 -
 tracing/dubbo/go-server/app/server.go              |  110 --
 tracing/dubbo/go-server/app/user.go                |   67 --
 tracing/dubbo/go-server/app/version.go             |   22 -
 tracing/dubbo/go-server/assembly/bin/load.sh       |  151 ---
 .../dubbo/go-server/assembly/common/app.properties |   23 -
 tracing/dubbo/go-server/assembly/common/build.sh   |   80 --
 tracing/dubbo/go-server/assembly/linux/dev.sh      |   36 -
 tracing/dubbo/go-server/assembly/linux/release.sh  |   36 -
 tracing/dubbo/go-server/assembly/linux/test.sh     |   36 -
 tracing/dubbo/go-server/assembly/mac/dev.sh        |   36 -
 tracing/dubbo/go-server/assembly/mac/release.sh    |   36 -
 tracing/dubbo/go-server/assembly/mac/test.sh       |   36 -
 tracing/dubbo/go-server/assembly/windows/dev.sh    |   36 -
 .../dubbo/go-server/assembly/windows/release.sh    |   36 -
 tracing/dubbo/go-server/assembly/windows/test.sh   |   36 -
 tracing/dubbo/go-server/profiles/dev/log.yml       |   28 -
 tracing/dubbo/go-server/profiles/dev/server.yml    |   58 -
 tracing/dubbo/go-server/profiles/release/log.yml   |   28 -
 .../dubbo/go-server/profiles/release/server.yml    |   62 -
 tracing/dubbo/go-server/profiles/test/log.yml      |   28 -
 tracing/dubbo/go-server/profiles/test/server.yml   |   62 -
 tracing/dubbo/java-client/build.sh                 |   21 -
 tracing/dubbo/java-client/pom.xml                  |  230 ----
 .../java-client/src/main/assembly/assembly.xml     |   43 -
 .../src/main/java/com/ikurento/user/Consumer.java  |   60 -
 .../src/main/java/com/ikurento/user/User.java      |   76 --
 .../main/java/com/ikurento/user/UserProvider.java  |   18 -
 .../resources/META-INF/spring/dubbo.consumer.xml   |   37 -
 .../src/main/resources/META-INF/spring/service.xml |   27 -
 .../src/main/resources/dubbo.properties            |   13 -
 .../src/main/resources/log4j.properties            |   19 -
 tracing/dubbo/java-server/build.sh                 |   20 -
 tracing/dubbo/java-server/pom.xml                  |  196 ----
 tracing/dubbo/java-server/script/debug.sh          |   23 -
 .../java-server/src/main/assembly/assembly.xml     |   44 -
 .../src/main/java/com/ikurento/user/Provider.java  |   33 -
 .../src/main/java/com/ikurento/user/User.java      |   86 --
 .../main/java/com/ikurento/user/UserProvider.java  |   24 -
 .../java/com/ikurento/user/UserProviderImpl.java   |   30 -
 .../resources/META-INF/spring/dubbo.provider.xml   |   33 -
 .../src/main/resources/dubbo.properties            |   14 -
 .../src/main/resources/log4j.properties            |   20 -
 tracing/grpc/README.md                             |   46 -
 tracing/grpc/go-client/app/Makefile                |    2 -
 tracing/grpc/go-client/app/client.go               |  107 --
 tracing/grpc/go-client/app/hello.go                |   48 -
 tracing/grpc/go-client/app/helloworld.pb.go        |  284 -----
 tracing/grpc/go-client/app/helloworld.proto        |   37 -
 tracing/grpc/go-client/app/version.go              |   22 -
 tracing/grpc/go-client/assembly/bin/load.sh        |  203 ----
 .../grpc/go-client/assembly/common/app.properties  |   23 -
 tracing/grpc/go-client/assembly/common/build.sh    |   83 --
 tracing/grpc/go-client/assembly/linux/dev.sh       |   36 -
 tracing/grpc/go-client/assembly/linux/release.sh   |   35 -
 tracing/grpc/go-client/assembly/linux/test.sh      |   35 -
 tracing/grpc/go-client/assembly/mac/dev.sh         |   36 -
 tracing/grpc/go-client/assembly/mac/release.sh     |   34 -
 tracing/grpc/go-client/assembly/mac/test.sh        |   34 -
 tracing/grpc/go-client/assembly/windows/dev.sh     |   34 -
 tracing/grpc/go-client/assembly/windows/release.sh |   34 -
 tracing/grpc/go-client/assembly/windows/test.sh    |   34 -
 tracing/grpc/go-client/profiles/dev/client.yml     |   61 -
 tracing/grpc/go-client/profiles/dev/log.yml        |   28 -
 tracing/grpc/go-client/profiles/release/client.yml |   61 -
 tracing/grpc/go-client/profiles/release/log.yml    |   28 -
 tracing/grpc/go-client/profiles/test/client.yml    |   63 -
 tracing/grpc/go-client/profiles/test/log.yml       |   28 -
 tracing/grpc/go-server/app/greeter.go              |   50 -
 tracing/grpc/go-server/app/helloworld.pb.go        |  284 -----
 tracing/grpc/go-server/app/helloworld.proto        |   37 -
 tracing/grpc/go-server/app/server.go               |   91 --
 tracing/grpc/go-server/app/version.go              |   22 -
 tracing/grpc/go-server/assembly/bin/load.sh        |  151 ---
 .../grpc/go-server/assembly/common/app.properties  |   23 -
 tracing/grpc/go-server/assembly/common/build.sh    |   80 --
 tracing/grpc/go-server/assembly/linux/dev.sh       |   36 -
 tracing/grpc/go-server/assembly/linux/release.sh   |   36 -
 tracing/grpc/go-server/assembly/linux/test.sh      |   36 -
 tracing/grpc/go-server/assembly/mac/dev.sh         |   36 -
 tracing/grpc/go-server/assembly/mac/release.sh     |   36 -
 tracing/grpc/go-server/assembly/mac/test.sh        |   36 -
 tracing/grpc/go-server/assembly/windows/dev.sh     |   36 -
 tracing/grpc/go-server/assembly/windows/release.sh |   36 -
 tracing/grpc/go-server/assembly/windows/test.sh    |   36 -
 tracing/grpc/go-server/profiles/dev/log.yml        |   28 -
 tracing/grpc/go-server/profiles/dev/server.yml     |   57 -
 tracing/grpc/go-server/profiles/release/log.yml    |   28 -
 tracing/grpc/go-server/profiles/release/server.yml |   54 -
 tracing/grpc/go-server/profiles/test/log.yml       |   28 -
 tracing/grpc/go-server/profiles/test/server.yml    |   57 -
 tracing/jsonrpc/go-client/app/client.go            |  285 -----
 tracing/jsonrpc/go-client/app/user.go              |   97 --
 tracing/jsonrpc/go-client/app/version.go           |   22 -
 tracing/jsonrpc/go-client/assembly/bin/load.sh     |  203 ----
 .../go-client/assembly/common/app.properties       |   23 -
 tracing/jsonrpc/go-client/assembly/common/build.sh |   83 --
 tracing/jsonrpc/go-client/assembly/linux/dev.sh    |   36 -
 .../jsonrpc/go-client/assembly/linux/release.sh    |   35 -
 tracing/jsonrpc/go-client/assembly/linux/test.sh   |   35 -
 tracing/jsonrpc/go-client/assembly/mac/dev.sh      |   36 -
 tracing/jsonrpc/go-client/assembly/mac/release.sh  |   34 -
 tracing/jsonrpc/go-client/assembly/mac/test.sh     |   34 -
 tracing/jsonrpc/go-client/assembly/windows/dev.sh  |   34 -
 .../jsonrpc/go-client/assembly/windows/release.sh  |   34 -
 tracing/jsonrpc/go-client/assembly/windows/test.sh |   34 -
 tracing/jsonrpc/go-client/profiles/dev/client.yml  |   62 -
 tracing/jsonrpc/go-client/profiles/dev/log.yml     |   28 -
 .../jsonrpc/go-client/profiles/release/client.yml  |   60 -
 tracing/jsonrpc/go-client/profiles/release/log.yml |   28 -
 tracing/jsonrpc/go-client/profiles/test/client.yml |   60 -
 tracing/jsonrpc/go-client/profiles/test/log.yml    |   28 -
 tracing/jsonrpc/go-server/app/server.go            |  109 --
 tracing/jsonrpc/go-server/app/user.go              |   73 --
 tracing/jsonrpc/go-server/app/user_provider.go     |  114 --
 tracing/jsonrpc/go-server/app/user_provider1.go    |   87 --
 tracing/jsonrpc/go-server/app/user_provider2.go    |   97 --
 tracing/jsonrpc/go-server/app/version.go           |   22 -
 tracing/jsonrpc/go-server/assembly/bin/load.sh     |  151 ---
 .../go-server/assembly/common/app.properties       |   23 -
 tracing/jsonrpc/go-server/assembly/common/build.sh |   80 --
 tracing/jsonrpc/go-server/assembly/linux/dev.sh    |   36 -
 .../jsonrpc/go-server/assembly/linux/release.sh    |   36 -
 tracing/jsonrpc/go-server/assembly/linux/test.sh   |   36 -
 tracing/jsonrpc/go-server/assembly/mac/dev.sh      |   36 -
 tracing/jsonrpc/go-server/assembly/mac/release.sh  |   36 -
 tracing/jsonrpc/go-server/assembly/mac/test.sh     |   36 -
 tracing/jsonrpc/go-server/assembly/windows/dev.sh  |   36 -
 .../jsonrpc/go-server/assembly/windows/release.sh  |   36 -
 tracing/jsonrpc/go-server/assembly/windows/test.sh |   36 -
 tracing/jsonrpc/go-server/profiles/dev/log.yml     |   28 -
 tracing/jsonrpc/go-server/profiles/dev/server.yml  |   76 --
 tracing/jsonrpc/go-server/profiles/release/log.yml |   28 -
 .../jsonrpc/go-server/profiles/release/server.yml  |   75 --
 tracing/jsonrpc/go-server/profiles/test/log.yml    |   28 -
 tracing/jsonrpc/go-server/profiles/test/server.yml |   75 --
 1045 files changed, 61693 deletions(-)

diff --git a/HOWTO.md b/HOWTO.md
deleted file mode 100644
index 9e7730d..0000000
--- a/HOWTO.md
+++ /dev/null
@@ -1,151 +0,0 @@
-# How To Run
-
-There are three ways to run dubbo-go samples:
-
-1. Quick start with makefile: a common makefile is provided under "build" subdirectory, which can be used to run each sample here quickly. It is also useful to run all samples automatically so that now it is possible to leverage samples as dubbo-go's integration test.
-2. Quick start in IDE (**Recommended**): In ".run" subdirectory a couple of GoLand run configuration files are provided so that user can run each sample with just one click.
-3. Manually config and run in IDE: For completeness purpose, a step-by-step instruction is also provided so that user can understand how to configure and run or debug a sample in IDE. 
-
-### 1. Quick start with makefile
-
-*Prerequisite: docker environment is required*
-
-Here we use "attachment" as an example:
-
-1. **Start register server (e.g. zookeeper)**
-   
-   ```bash
-   cd attachment/server
-   make -f ../../build/Makefile docker-up 
-   ```
-   
-   Once the following messages outputs, the zookeeper server is ready.
-   
-   ```bash
-   >  Starting dependency services with docker/docker-compose.yml
-   Creating network "docker_default" with the default driver
-   Creating docker_zookeeper_1 ... done
-   ```
-   
-   To shut it down, simple run
-   
-   ```bash
-   cd attachment/server
-   make -f ../../build/Makefile docker-down
-   ```
-   
-2. **Start server**
-   
-    ```bash
-    cd attachment/server
-    make -f ../../build/Makefile start
-    ```
-   
-   Once the following messages outputs, the server is ready.
-
-   ```bash
-   >  Buiding application binary: dist/darwin_amd64/release/go-server
-   >  Starting application go-server, output is redirected to dist/darwin_amd64/release/go-server.log
-     >  PID: 86428
-   ```
-
-   The output of `go-server` can be found from 'dist/darwin_amd64/release/go-server.log'.
-   
-3. **Run client**
-   
-    ```bash
-   cd attachment/client
-   make -f ../../build/Makefile run 
-   ```
-
-   Once the following messages outputs, the `go-client` calls the `go-server` successfully.
-
-   ```bash
-   >  Buiding application binary: dist/darwin_amd64/release/go-client
-   >  Running application go-client, output is redirected to dist/darwin_amd64/release/go-client.log
-   ...
-   2020-10-27T14:51:37.520+0800    DEBUG   dubbo/dubbo_invoker.go:144      result.Err: <nil>, result.Rest: &{A001 Alex Stocks 18 2020-10-27 14:51:37.52 +0800 CST}
-   2020-10-27T14:51:37.520+0800    DEBUG   proxy/proxy.go:177      [makeDubboCallProxy] result: &{A001 Alex Stocks 18 2020-10-27 14:51:37.52 +0800 CST}, err: <nil>
-   response result: &{A001 Alex Stocks 18 2020-10-27 14:51:37.52 +0800 CST}
-   ```
-   
-3. **Integration test**
-   dubbo-go-samples is designed to serve the purposes of not only the showcases of how to use apache/dubbo-go but also the integration-test for apache/dubbo-go. To run integration test for `go-server`, run the following commands:
-
-   ```bash
-   cd attachment/server
-   make -f ../../build/Makefile integration
-   ```
-
-   Once the following messages outputs, the integration tests pass.
-
-   ```bash
-   >  Running integration test for application go-server
-   ...
-   --- PASS: TestGetUser (0.00s)
-   PASS
-   ok      github.com/apache/dubbo-go-samples/attachment/go-server/tests/integration   3.603s
-   ```
-   
-4. **Shutdown and cleanup**
-   ```bash
-   cd attachment/server
-   make -f ../../build/Makefile clean docker-down
-   ```
-
-*The following two ways are all relevant to IDE. Intellij GoLand is discussed here as an example.*
-
-### 2. Quick start in IDE
-
-Once open this project in GoLand, a list of pre-configured configures for both server and client can be found from "Run Configuration" pop up menu, for example: "helloworld-go-server" and "helloworld-go-client". 
-
-![run-configuration.png](.images/run-configurations.png)
-
-Feel free to pick one among them to run instantly. Of course a service register server is required otherwise the samples cannot run successfully. You may consider to either manually boot up the required register server, or use the provided "docker-compose.yml" to boot it in docker environment, from the following [section](#3-manually-run-in-ide) where you can find more details.
-
-### 3. Manually run in IDE
-
-After open dubbo-go-samples in GoLand, follow the steps below to run/debug this
-example:
-
-1. **Start up zookeeper server**
-
-   Open "attachment/go-server/docker/docker-compose.yaml", and click ▶︎▶︎ icon in the gutter on the left side of the
-   editor, then "Services" tab should pop up and shows the similar message below:
-   ```
-   Deploying 'Compose: docker'...
-   /usr/local/bin/docker-compose -f .../dubbo-go-samples/attachment/go-server/docker/docker-compose.yml up -d
-   Creating network "docker_default" with the default driver
-   Creating docker_zookeeper_1 ...
-   'Compose: docker' has been deployed successfully.
-   ```
-
-2. **Start up service provider**
-
-   Open "attachment/go-server/cmd/server.go", and click ▶︎ icon just besides "main" function in the gutter on the left
-   side, and select "Modify Run Configuration..." from the pop-up menu. Then make sure the following configs configured
-   correctly:
-    * Working Directory: the absolute path to "attachment/go-server", for examples: *
-      /home/dubbo-go-samples/attachment/go-server*
-    * Environment: CONF_PROVIDER_FILE_PATH=conf/server.yml, optionally you could also specify logging configuration
-      with "APP_LOG_CONF_FILE=conf/log.yml"
-
-   Then the sample server is ready to run.
-
-3. **Run service consumer**
-
-   Open "attachment/go-client/cmd/client.go", and click ▶︎ icon just besides "main" function in the gutter on the left
-   side, and select "Modify Run Configuration..." from the pop-up menu. Then make sure the following configs configured
-   correctly:
-    * Working Directory: the absolute path to "attachment/go-client", for examples: *
-      /home/dubbo-go-samples/attachment/go-client*
-    * Environment: CONF_CONSUMER_FILE_PATH=conf/client.yml, optionally you could also specify logging configuration
-      with "APP_LOG_CONF_FILE=conf/log.yml"
-
-   Then run it to call the remote service, you will observe the following message output:
-   ```
-   [2021-02-03/16:19:30 main.main: client.go: 66] response result: &{A001 Alex Stocks 18 2020-02-04 16:19:30.422 +0800 CST}
-   ```
-
-If you need to debug either the samples or dubbo-go, you may consider switch to **Debug** instead of **Run** in GoLand. To stop, simply click ◼︎ to shutdown everything.
-
diff --git a/HOWTO_zh.md b/HOWTO_zh.md
deleted file mode 100644
index 1c15bf5..0000000
--- a/HOWTO_zh.md
+++ /dev/null
@@ -1,141 +0,0 @@
-# 如何运行
-
-目前有三种方式来运行 dubbo-go 的示例:
-
-1. 通过 makefile 快速开始: 在工程 "build" 子目录中提供了一个通用的 makefile。这个 makefile 可用于快速运行工程中的每一个示例。同时,由于这个 makefile 的存在,现在有机会可以把所有的示例串起来自动运行,从而使得通过该工程来做自动的 dubbo-go 的集成测试成为了可能。
-2. 在 IDE 中快速开始,这也是**推荐**的方式: 在工程 ".run" 子目录下,提供了所有示例的 GoLand 运行配置文件,因此用户可以简单在 IDE 中单击运行所有的示例。
-3. 在 IDE 中手工配置并运行: 为了完整性的目的,也为了万一您不使用 GoLand 而使用其他的 IDE,这里也提供了如何一步一步的配置的指南,帮助用户理解如何在 IDE 中配置,运行或者调试 dubbo-go 的示例。   
-
-### 1. 通过 makefile 快速开始
-
-*前置条件:需要 docker 环境就绪*
-
-下面我们将使用 "attachment" 作为示例:
-
-1. **启动注册中心(比如 zookeeper)**
-   
-   ```bash
-   cd attachment/server
-   make -f ../../build/Makefile docker-up 
-   ```
-   
-   当看到类似下面的输出信息时,就表明 zookeeper server 启动就绪了。
-   
-   ```bash
-   >  Starting dependency services with docker/docker-compose.yml
-   Creating network "docker_default" with the default driver
-   Creating docker_zookeeper_1 ... done
-   ```
-   
-   如果要停掉注册中心,可以通过运行以下的命令完成:
-   
-   ```bash
-   cd attachment/server
-   make -f ../../build/Makefile docker-down
-   ```
-   
-2. **启动服务提供方**
-   
-    ```bash
-    cd attachment/server
-    make -f ../../build/Makefile start
-    ```
-   
-   当看到类似下面的输出信息时,就表明服务提供方启动就绪了。
-
-   ```bash
-   >  Buiding application binary: dist/darwin_amd64/release/go-server
-   >  Starting application go-server, output is redirected to dist/darwin_amd64/release/go-server.log
-     >  PID: 86428
-   ```
-
-   `go-server` 的输出信息可以在 'dist/darwin_amd64/release/go-server.log' 中找到。 
-   
-3. **运行服务调用方**
-   
-    ```bash
-   cd attachment/client
-   make -f ../../build/Makefile run 
-   ```
-
-   当以下的信息输出时,说明 `go-client` 调用 `go-server` 成功。
-
-   ```bash
-   >  Buiding application binary: dist/darwin_amd64/release/go-client
-   >  Running application go-client, output is redirected to dist/darwin_amd64/release/go-client.log
-   ...
-   2020-10-27T14:51:37.520+0800    DEBUG   dubbo/dubbo_invoker.go:144      result.Err: <nil>, result.Rest: &{A001 Alex Stocks 18 2020-10-27 14:51:37.52 +0800 CST}
-   2020-10-27T14:51:37.520+0800    DEBUG   proxy/proxy.go:177      [makeDubboCallProxy] result: &{A001 Alex Stocks 18 2020-10-27 14:51:37.52 +0800 CST}, err: <nil>
-   response result: &{A001 Alex Stocks 18 2020-10-27 14:51:37.52 +0800 CST}
-   ```
-   
-3. **集成测试**
-   本项目 dubbo-go-samples 除了用来展示如何使用 dubbo-go 中的功能和特性之外,还被用于 apache/dubbo-go 的集成测试。可以按照以下的步骤来运行针对 `go-server` 设计的集成测试:
-
-   ```bash
-   cd attachment/server
-   make -f ../../build/Makefile integration
-   ```
-
-   当以下信息输出时,说明集成测试通过。
-
-   ```bash
-   >  Running integration test for application go-server
-   ...
-   --- PASS: TestGetUser (0.00s)
-   PASS
-   ok      github.com/apache/dubbo-go-samples/attachment/go-server/tests/integration   3.603s
-   ```
-   
-4. **关闭并清理**
-   ```bash
-   cd attachment/server
-   make -f ../../build/Makefile clean docker-down
-   ```
-
-*以下的两种运行方式都与 IDE 有关。这里我们以 Intellij GoLand 为例来讨论。*
-
-### 2. 在 IDE 中快速开始
-
-一旦在 GoLand 中打开本项目,可以发现,在 "Run Configuration" 弹出菜单中已经存在了一系列事先配置好了的用来运行相关服务提供方和调用方的选项,例如:"helloworld-go-server" 和 "helloworld-go-client"。
-
-![run-configuration.png](.images/run-configurations.png)
-
-可以选择其中的任意一个快速启动相关示例。当然在运行之前,假设需要的注册中心已经事先启动了,不然用例将会失败。您可以选择手动自行启动的方式,也可以利用工程中提供的 "docker-compose.yml" 在启动注册中心的 docker 实例。选择后者的话,可以参考[第三种方式](#3-manually-run-in-ide)中的细节。
-
-### 3. 在 IDE 中手工运行
-
-这里以 *Intellij GoLand* 为例。在 GoLand 中打开 dubbo-go-samples 工程之后,按照以下的步骤来运行/调试本示例:
-
-1. **启动 zookeeper 服务器**
-
-   打开 "attachment/go-server/docker/docker-compose.yaml" 这个文件,然后点击位于编辑器左边 gutter 栏位中的 ▶︎▶︎ 图标运行,"Service" Tab 应当会弹出并输出类似下面的文本信息:
-   ```
-   Deploying 'Compose: docker'...
-   /usr/local/bin/docker-compose -f .../dubbo-go-samples/attachment/go-server/docker/docker-compose.yml up -d
-   Creating network "docker_default" with the default driver
-   Creating docker_zookeeper_1 ...
-   'Compose: docker' has been deployed successfully.
-   ```
-
-2. **启动服务提供方**
-
-   打开 "attachment/go-server/cmd/server.go" 文件,然后点击左边 gutter 栏位中紧挨着 "main" 函数的 ▶︎ 图标,并从弹出的菜单中选择 "Modify Run Configuration...",并确保以下配置的准确:
-   * Working Directory: "attachment/go-server" 目录的绝对路径,比如: */home/dubbo-go-samples/attachment/go-server*
-   * Environment: CONF_PROVIDER_FILE_PATH=conf/server.yml, 另外也可以指定这个环境变量 "APP_LOG_CONF_FILE=conf/log.yml"
-
-   这样示例中的服务端就准备就绪,随时可以运行了。
-
-3. **运行服务消费方**
-
-   打开 "attachment/go-client/cmd/client.go" 这个文件,然后从左边 gutter 栏位中点击紧挨着 "main" 函数的 ▶︎ 图标,然后从弹出的菜单中选择 "Modify Run Configuration...",并确保以下配置的准确:
-   * Working Directory: "attachment/go-client" 目录的绝对路径,比如: */home/dubbo-go-samples/attachment/go-client*
-   * Environment: CONF_CONSUMER_FILE_PATH=conf/client.yml, 另外也可以指定这个环境变量 "APP_LOG_CONF_FILE=conf/log.yml"
-
-   然后就可以运行并调用远端的服务了,如果调用成功,将会有以下的输出:
-   ```
-   [2021-02-03/16:19:30 main.main: client.go: 66] response result: &{A001 Alex Stocks 18 2020-02-04 16:19:30.422 +0800 CST}
-   ```
-
-如果需要调试该示例或者 dubbo-go 框架,可以在 IDE 中从 "Run" 切换到 "Debug"。如果要结束的话,直接点击 ◼︎ 就好了。
-
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 261eeb9..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
diff --git a/README.md b/README.md
deleted file mode 100644
index 195e558..0000000
--- a/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Dubbo Golang Examples
-
-![CI](https://github.com/apache/dubbo-go-samples/workflows/CI/badge.svg)
-
-## What It Contains
-
-* async: An async example.
-* attachment: An attachment example, to show how to use attachment to pass user data from the client to the server.  
-* configcenter: uses of different config centers, including zookeeper, apollo and nacos at present.
-* direct: A direct invocation example.
-* filter: Some examples of different filter, including custom_filter and tpslimit
-* general: A general example
-* generic: A generic invocation example
-* helloworld: A 101 example
-* multi_registry: A multi-registry example
-* registry: uses of different registres, including kubernetes, nacos, etcd and service-discovery
-* router: router examples, including condition and tag
-* seata: A seata example
-* shop: Shop sample
-* tracing: tracing example
-
-## How To Run
-
-Pls. refer [How To Run](HOWTO.md) for the instructions.
-
-## How to contribute
-
-If you want to add more samples, pls. read on:
-1. Create new sub directory and give it an appropriate name for your new sample. Pls. follow the layout of the existing sample if you are not sure how to organize your code.
-2. Make sure your sample work as expected before submit PR, and make sure GitHub CI passes after PR is submitted. Pls. refer to the existing sample on how to test the sample.   
-3. Pls. provide README.md to explain your samples.
diff --git a/README_zh.md b/README_zh.md
deleted file mode 100644
index 50830bb..0000000
--- a/README_zh.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# Dubbo Golang 示例
-
-![CI](https://github.com/apache/dubbo-go-samples/workflows/CI/badge.svg)
-
-## 本工程包含的示例
-
-* async: 异步调用
-* attachment: 如何通过 attachment 把用户数据从调用方传递给服务方
-* configcenter: 使用不同的配置中心,目前支持三种:zookeeper、apollo、和 nacos
-* direct: 直连模式
-* filter: 使用和扩展不同的 filter,目前包含了 custom_filter 和 tpslimit
-* general: 通用例子,展示 zookeeper 注册中心的使用以及不同的配置项
-* generic: 泛化调用
-* helloworld: 入门例子
-* multi_registry: 多注册
-* registry: 展示与不同注册中心的对接,包含了 nacos、etcd、kubernetes 和 servicediscovery
-* router: 展示了不同的路由,包含了 condition 和 tag
-* seata: 展示了与 seata 的对接
-* shop: 一个在线商店的小例子
-* tracing: 链路追踪
-
-## 如何运行
-
-请参阅 [HOWTO](HOWTO_zh.md)
-
-## 如何贡献
-
-如果您希望增加新的用例,请继续阅读:
-
-1. 为您的示例起合适的名字并创建子目录。如果您不太确定如何做,请参考现有示例摆放目录结构
-2. 提交 PR 之前请确保在本地运行通过,提交 PR 之后请确保 GitHub 上的集成测试通过。请参考现有示例增加对应的测试
-3. 请提供示例相关的 README.md 的中英文版本
diff --git a/async/README.md b/async/README.md
deleted file mode 100644
index 146da3a..0000000
--- a/async/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Async Sample
-
-### Background
-
-Dubbo-go provides not only synchronous invocation, but also asynchronous invocation on the consumer side. In order to
-use it, the client needs to implement the following interface to asynchronously receive the response from the service
-provider:
-
-```golang
-type AsyncCallbackService interface {
-    CallBack(response CallbackResponse) // callback
-}
-```
-
-### Example
-
-**Code**
-
-```golang
-type UserProvider struct {
-    GetUser func (ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) CallBack(res common.CallbackResponse) {
-    fmt.Println("CallBack res:", res)
-}
-```
-
-**Configuration**
-
-Besides, client also needs to config **"async:true"** in consumer's yaml config file as following:
-
-```yaml
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    # this is necessary to enable async call
-    async: true
-```
-
-Pls. refer to [HOWTO.md](../HOWTO.md) under the root directory to run this sample.
-
-
diff --git a/async/README_zh.md b/async/README_zh.md
deleted file mode 100644
index adcc836..0000000
--- a/async/README_zh.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# Async 示例
-
-### 背景
-
-Dubbo-go 提供同步调用的同时,还提供了客户端异步调用的能力。客户端可以通过实现以下的接口来异步获得服务端返回的响应:
-
-
-```golang
-type AsyncCallbackService interface {
-	CallBack(response CallbackResponse) // callback
-}
-```
-
-### 示例
-
-**代码**
-
-```golang
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) CallBack(res common.CallbackResponse) {
-	fmt.Println("CallBack res:",res)
-}
-```
-
-**配置**
-
-提供回调方法的同时,还需要在客户端的配置中增加 **"async:true"** 的配置,如下所示:
-
-```yaml
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol : "dubbo"
-    interface : "org.apache.dubbo.UserProvider"
-    # this is necessary to enable async call
-    async: true
-```
-
-请参阅根目录中的 [HOWTO.md](../HOWTO_zh.md) 来运行本例。
-
-
diff --git a/async/go-client/cmd/client.go b/async/go-client/cmd/client.go
deleted file mode 100644
index 62a80b2..0000000
--- a/async/go-client/cmd/client.go
+++ /dev/null
@@ -1,66 +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 main
-
-import (
-	"context"
-	"os"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/async/go-client/pkg"
-)
-
-var userProvider = pkg.NewUserProvider()
-
-func init() {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&pkg.User{})
-}
-
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	gxlog.CInfo("\n\n\nstart to test dubbo")
-	user := &pkg.User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-
-	gxlog.CInfo("response result: %v\n", userProvider.GetResponse())
-}
diff --git a/async/go-client/conf/client.yml b/async/go-client/conf/client.yml
deleted file mode 100644
index 0f09e70..0000000
--- a/async/go-client/conf/client.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout : "3s"
-# connect timeout
-connect_timeout : "3s"
-
-# application config
-application:
-  organization : "dubbo.io"
-  name  : "UserInfoClient"
-  module : "dubbo-go user-info client"
-  version : "0.0.1"
-  environment : "dev"
-
-# registry config
-registries :
-  "demoZk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol : "dubbo"
-    interface : "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods :
-    - name: "GetUser"
-      retries: 3
-    # this is necessary to enable async call
-    async: true
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/async/go-client/conf/log.yml b/async/go-client/conf/log.yml
deleted file mode 100644
index 6fb7501..0000000
--- a/async/go-client/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "info"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/async/go-client/pkg/user.go b/async/go-client/pkg/user.go
deleted file mode 100644
index 376b2fc..0000000
--- a/async/go-client/pkg/user.go
+++ /dev/null
@@ -1,78 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-import (
-	"github.com/apache/dubbo-go/common"
-	"github.com/apache/dubbo-go/protocol"
-	"github.com/apache/dubbo-go/remoting"
-	gxlog "github.com/dubbogo/gost/log"
-)
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-	ch      chan *User
-}
-
-func NewUserProvider() *UserProvider {
-	return &UserProvider{
-		ch: make(chan *User),
-	}
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-// to enable async call:
-// 1. need to implement AsyncCallbackService
-// 2. need to specify references -> UserProvider -> async in conf/client.yml
-func (u *UserProvider) CallBack(res common.CallbackResponse) {
-	gxlog.CInfo("CallBack res: %v", res)
-	if r, ok := res.(remoting.AsyncCallbackResponse); ok {
-		if reply, ok := r.Reply.(*remoting.Response); ok {
-			if result, ok := reply.Result.(*protocol.RPCResult); ok {
-				if user, ok := result.Rest.(*User); ok {
-					u.ch <- user
-				}
-			}
-		}
-	}
-	u.ch <- nil
-}
-
-func (u *UserProvider) GetResponse() *User {
-	user := <-u.ch
-	return user
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/async/go-server/cmd/server.go b/async/go-server/cmd/server.go
deleted file mode 100644
index 315618d..0000000
--- a/async/go-server/cmd/server.go
+++ /dev/null
@@ -1,78 +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 main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/logger"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/async/go-server/pkg"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/async/go-server/conf/client.yml b/async/go-server/conf/client.yml
deleted file mode 100644
index 4193953..0000000
--- a/async/go-server/conf/client.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout : "3s"
-# connect timeout
-connect_timeout : "3s"
-
-# application config
-application:
-  organization : "dubbo.io"
-  name  : "UserInfoTest"
-  module : "dubbo-go user-info client"
-  version : "0.0.1"
-  environment : "dev"
-
-# registry config
-registries :
-  "demoZk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol : "dubbo"
-    interface : "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods :
-    - name: "GetUser"
-      retries: 3
-    # this is necessary to enable async call
-    async : true
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/async/go-server/conf/log.yml b/async/go-server/conf/log.yml
deleted file mode 100644
index a75bccb..0000000
--- a/async/go-server/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "error"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/async/go-server/conf/server.yml b/async/go-server/conf/server.yml
deleted file mode 100644
index 6e8970c..0000000
--- a/async/go-server/conf/server.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization : "dubbo.io"
-  name : "UserInfoServer"
-  module : "dubbo-go user-info server"
-  version : "0.0.1"
-  environment : "dev"
-
-# registry config
-registries :
-  "demoZk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "UserProvider":
-    registry: "demoZk"
-    protocol : "dubbo"
-    interface : "org.apache.dubbo.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 1
-      loadbalance: "random"
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20000
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/async/go-server/docker/docker-compose.yml b/async/go-server/docker/docker-compose.yml
deleted file mode 100644
index 8724179..0000000
--- a/async/go-server/docker/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
diff --git a/async/go-server/pkg/user.go b/async/go-server/pkg/user.go
deleted file mode 100644
index 2759d19..0000000
--- a/async/go-server/pkg/user.go
+++ /dev/null
@@ -1,60 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
-	"github.com/dubbogo/gost/log"
-)
-
-func init() {
-	config.SetProviderService(new(UserProvider))
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18, time.Now()}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/async/go-server/tests/integration/main_test.go b/async/go-server/tests/integration/main_test.go
deleted file mode 100644
index 5fc8ede..0000000
--- a/async/go-server/tests/integration/main_test.go
+++ /dev/null
@@ -1,87 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/common"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	"github.com/apache/dubbo-go/protocol"
-	"github.com/apache/dubbo-go/remoting"
-	gxlog "github.com/dubbogo/gost/log"
-)
-
-var userProvider = &UserProvider{
-	ch: make(chan *User),
-}
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-	ch      chan *User
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-// to enable async call:
-// 1. need to implement AsyncCallbackService
-// 2. need to specify references -> UserProvider -> async in conf/client.yml
-func (u *UserProvider) CallBack(res common.CallbackResponse) {
-	gxlog.CInfo("CallBack res: %v", res)
-	if r, ok := res.(remoting.AsyncCallbackResponse); ok {
-		if reply, ok := r.Reply.(*remoting.Response); ok {
-			if result, ok := reply.Result.(*protocol.RPCResult); ok {
-				if user, ok := result.Rest.(*User); ok {
-					u.ch <- user
-				}
-			}
-		}
-	}
-	u.ch <- nil
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/async/go-server/tests/integration/userprovider_test.go b/async/go-server/tests/integration/userprovider_test.go
deleted file mode 100644
index 9fb3f65..0000000
--- a/async/go-server/tests/integration/userprovider_test.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"testing"
-)
-import (
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetUser(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	assert.Nil(t, err)
-	assert.Equal(t, "", user.Id)
-	assert.Equal(t, "", user.Name)
-	assert.Equal(t, int32(0), user.Age)
-
-	user = <-userProvider.ch
-
-	assert.NotNil(t, user)
-	assert.Equal(t, "A001", user.Id)
-	assert.Equal(t, "Alex Stocks", user.Name)
-	assert.Equal(t, int32(18), user.Age)
-	assert.NotNil(t, user.Time)
-}
diff --git a/attachment/README.md b/attachment/README.md
deleted file mode 100644
index ad54751..0000000
--- a/attachment/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Attachment Example
-
-### Background
-
-A Dubbo client can pass user data to the remote Dubbo server via attachment. Dubbo-go leverages `context.Context` as the attachment between consumer and provider. In order to use attachment, a `context.Context` is required to introduce as the first parameter of the service method, for example:
-
-```go
-GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-```
-
-To pass the user data from the client side, a `map[string]interface{}` should be put into the `context.Context` with the key "attachment". The following code snippet shows how a user data "timestamp" is put into the attachment:
-
-```go
-ctx := context.WithValue(context.Background(), constant.AttachmentKey, 
-	map[string]interface{}{"timestamp": time.Now()})
-err := userProvider.GetUser(ctx, []interface{}{"A001"}, user)
-```
-
-On the provider side, a `context.Context` is passed as the first parameter along with the user data. Here below the code from the current samples shows how the service method is implemented, and how the user data is fetched from the attachment:
-
-```go
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	t := time.Now()
-	attachment := ctx.Value(constant.AttachmentKey).(map[string]interface{})
-	if v, ok := attachment["timestamp"]; ok {
-		t = v.(time.Time).Add(-1 * 365 * 24 * time.Hour)
-	}
-
-	rsp := User{"A001", "Alex Stocks", 18, t}
-	return &rsp, nil
-}
-```
-
-Pls. refer to [HOWTO.md](../HOWTO.md) under the root directory to run this sample.
-
diff --git a/attachment/README_zh.md b/attachment/README_zh.md
deleted file mode 100644
index 305bb1f..0000000
--- a/attachment/README_zh.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Attachment 示例
-
-### 背景
-
-可以通过 attachment 把用户的数据从 Dubbo 的客户端传递给服务端。在 Dubbo-go 中,attachment 在二者之间的传递是通过 `context.Context` 的机制来完成的。如果要使用 attachment,那么应当把 `context.Context` 作为要调用的服务方法的第一个参数,例如:
-
-```go
-GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-```
-
-为了在客户端传递用户数据到服务端,首先需要在方法的第一个参数 `context.Context` 中放入一个 `map[string]interface{}` 的数据类型,该数据的 Key 值约定为 "attachment"。以下的代码片段展示了如何把用户自定义的的一个时间戳通过该 map 中的 "timestamp" 放入 attachment 中:
-
-```go
-ctx := context.WithValue(context.Background(), constant.AttachmentKey, 
-	map[string]interface{}{"timestamp": time.Now()})
-err := userProvider.GetUser(ctx, []interface{}{"A001"}, user)
-```
-
-在服务提供方,方法的第一个参数 `context.Context` 传入时携带了用户在客户端放入的自定义数据。下面的代码就是本例子中的服务端实现,主要展示了如何从 attachment 中提取用户自定义的数据:
-
-
-```go
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	t := time.Now()
-	attachment := ctx.Value(constant.AttachmentKey).(map[string]interface{})
-	if v, ok := attachment["timestamp"]; ok {
-		t = v.(time.Time).Add(-1 * 365 * 24 * time.Hour)
-	}
-
-	rsp := User{"A001", "Alex Stocks", 18, t}
-	return &rsp, nil
-}
-```
-
-请参阅根目录中的 [HOWTO.md](../HOWTO_zh.md) 来运行本例。
-
-
diff --git a/attachment/go-client/cmd/client.go b/attachment/go-client/cmd/client.go
deleted file mode 100644
index 0654e5a..0000000
--- a/attachment/go-client/cmd/client.go
+++ /dev/null
@@ -1,67 +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 main
-
-import (
-	"context"
-	"os"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/attachment/go-client/pkg"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/constant"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-var userProvider = new(pkg.UserProvider)
-
-func init() {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&pkg.User{})
-}
-
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	gxlog.CInfo("\n\n\nstart to test dubbo")
-	user := &pkg.User{}
-	ctx := context.WithValue(context.Background(), constant.AttachmentKey, map[string]interface{}{"timestamp": time.Now()})
-	err := userProvider.GetUser(ctx, []interface{}{"A001"}, user)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-	gxlog.CInfo("response result: %v\n", user)
-}
diff --git a/attachment/go-client/conf/client.yml b/attachment/go-client/conf/client.yml
deleted file mode 100644
index 958a65b..0000000
--- a/attachment/go-client/conf/client.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserInfoClient"
-  module: "dubbo-go attachment client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/attachment/go-client/conf/log.yml b/attachment/go-client/conf/log.yml
deleted file mode 100644
index 2b6e93a..0000000
--- a/attachment/go-client/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "debug"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/attachment/go-client/pkg/user.go b/attachment/go-client/pkg/user.go
deleted file mode 100644
index 75c964f..0000000
--- a/attachment/go-client/pkg/user.go
+++ /dev/null
@@ -1,42 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/attachment/go-server/cmd/server.go b/attachment/go-server/cmd/server.go
deleted file mode 100644
index fa04640..0000000
--- a/attachment/go-server/cmd/server.go
+++ /dev/null
@@ -1,79 +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 main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/attachment/go-server/pkg"
-)
-
-import (
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/logger"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-	logger.Info("dubbo-go server started.")
-
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/attachment/go-server/conf/client.yml b/attachment/go-server/conf/client.yml
deleted file mode 100644
index e9e8cbf..0000000
--- a/attachment/go-server/conf/client.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserInfoTest"
-  module: "dubbo-go attachment consumer"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/attachment/go-server/conf/log.yml b/attachment/go-server/conf/log.yml
deleted file mode 100644
index 970d988..0000000
--- a/attachment/go-server/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "error"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/attachment/go-server/conf/server.yml b/attachment/go-server/conf/server.yml
deleted file mode 100644
index 0af09bb..0000000
--- a/attachment/go-server/conf/server.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "AttachmentProvider"
-  module: "dubbo-go attachment provider"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 1
-        loadbalance: "random"
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20000
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/attachment/go-server/docker/docker-compose.yml b/attachment/go-server/docker/docker-compose.yml
deleted file mode 100644
index 8724179..0000000
--- a/attachment/go-server/docker/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
diff --git a/attachment/go-server/pkg/user.go b/attachment/go-server/pkg/user.go
deleted file mode 100644
index fde9b0e..0000000
--- a/attachment/go-server/pkg/user.go
+++ /dev/null
@@ -1,72 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go/common/constant"
-	"github.com/apache/dubbo-go/config"
-)
-
-func init() {
-	config.SetProviderService(new(UserProvider))
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-
-	t := time.Now()
-	attachment := ctx.Value(constant.AttachmentKey).(map[string]interface{})
-	if v, ok := attachment["timestamp"]; ok {
-		gxlog.CInfo("attachment: %v", v)
-		t = v.(time.Time).Add(-1 * 365 * 24 * time.Hour)
-	}
-
-	rsp := User{"A001", "Alex Stocks", 18, t}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/attachment/go-server/tests/integration/main_test.go b/attachment/go-server/tests/integration/main_test.go
deleted file mode 100644
index beebca1..0000000
--- a/attachment/go-server/tests/integration/main_test.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-)
-
-import (
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
-var userProvider = new(UserProvider)
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/attachment/go-server/tests/integration/userprovider_test.go b/attachment/go-server/tests/integration/userprovider_test.go
deleted file mode 100644
index ce07f2d..0000000
--- a/attachment/go-server/tests/integration/userprovider_test.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"testing"
-	"time"
-)
-import (
-	"github.com/apache/dubbo-go/common/constant"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetUser(t *testing.T) {
-	user := &User{}
-	timestamp := time.Now()
-	ctx := context.WithValue(context.Background(), constant.AttachmentKey, map[string]interface{}{"timestamp": timestamp})
-	err := userProvider.GetUser(ctx, []interface{}{"A001"}, user)
-
-	assert.Nil(t, err)
-	assert.Equal(t, "A001", user.Id)
-	assert.Equal(t, "Alex Stocks", user.Name)
-	assert.Equal(t, int32(18), user.Age)
-	assert.NotNil(t, user.Time)
-	assert.True(t, user.Time.Before(timestamp))
-
-	t.Logf("consumer timestamp: %v", timestamp)
-	t.Logf("provider timestamp: %v", user.Time)
-}
diff --git a/build/Makefile b/build/Makefile
deleted file mode 100644
index efec57c..0000000
--- a/build/Makefile
+++ /dev/null
@@ -1,139 +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, softwarek
-# 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.
-
-PROJECT_NAME = $(shell basename "$(PWD)")
-PID = /tmp/.$(PROJECT_NAME).pid
-PROJECT_DIR=$(shell pwd)
-BASE_DIR := $(PROJECT_DIR)/dist
-
-
-SOURCES = $(wildcard $(PROJECT_DIR)/cmd/*.go)
-
-export GO111MODULE ?= on
-export GOPROXY ?= https://goproxy.io,direct
-export GOSUMDB ?= sum.golang.org
-export GOARCH ?= amd64
-
-export DOCKER_HOST_IP = $(shell ifconfig en0 | grep inet | grep -v inet6 | awk '{print $$2}')
-
-OS := $(shell uname)
-ifeq ($(OS), Linux)
-	export GOOS ?= linux
-else ifeq ($(OS), Darwin)
-	export GOOS ?= darwin
-else
-	export GOOS ?= windows
-endif
-
-ifeq ($(GOOS), windows)
-	export EXT_NAME ?= .exe
-else
-	export EXT_NAME ?=
-endif
-
-CGO ?= 0
-ifeq ($(DEBUG), true)
-	BUILD_TYPE := debug
-	GCFLAGS := -gcflags="all=-N -l"
-	LCFLAGS :=
-else
-	BUILD_TYPE := release
-	LDFLAGS := "-s -w"
-endif
-
-OUT_DIR := $(BASE_DIR)/$(GOOS)_$(GOARCH)/$(BUILD_TYPE)
-LOG_FILE := $(OUT_DIR)/$(PROJECT_NAME).log
-
-export APP_LOG_CONF_FILE ?= $(OUT_DIR)/conf/log.yml
-
-.PHONY: all
-all: help
-help: $(realpath $(firstword $(MAKEFILE_LIST)))
-	@echo
-	@echo " Choose a command run in "$(PROJECT_NAME)":"
-	@echo
-	@sed -n 's/^##//p' $< | column -t -s ':' |  sed -e 's/^/ /'
-	@echo
-
-## build: Build application's binaries
-.PHONY: build
-build: $(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME) config
-
-.PHONY: $(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME)
-$(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME):
-	$(info   >  Buiding application binary: $(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME))
-	@CGO_ENABLED=$(CGO) GOOS=$(GOOS) GOARCH=$(GOARCH) go build $(GCFLAGS) -ldflags=$(LDFLAGS) -i -o $(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME) $(SOURCES)
-
-
-## config: Setup config files
-.PHONY: config
-config:
-	$(info   >  Setting up config files)
-	@mkdir -p $(OUT_DIR)/conf
-	@-test -f $(PROJECT_DIR)/conf/log.yml && cat $(PROJECT_DIR)/conf/log.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/log.yml && echo "  > $(OUT_DIR)/conf/log.yml"
-	@-test -f $(PROJECT_DIR)/conf/server.yml && cat $(PROJECT_DIR)/conf/server.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/server.yml && echo "  > $(OUT_DIR)/conf/server.yml"
-	@-test -f $(PROJECT_DIR)/conf/client.yml && cat $(PROJECT_DIR)/conf/client.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/client.yml && echo "  > $(OUT_DIR)/conf/client.yml"
-	@-test -f $(PROJECT_DIR)/conf/router_config.yml && cat $(PROJECT_DIR)/conf/router_config.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/router_config.yml && echo "  > $(OUT_DIR)/conf/router_config.yml"
-
-## docker-up: Shutdown dependency services on docker
-.PHONY: docker-up
-docker-up:
-	$(info   >  Starting dependency services with $(PROJECT_DIR)/docker/docker-compose.yml)
-	@docker-compose -f $(PROJECT_DIR)/docker/docker-compose.yml up -d
-
-## docker-down: Shutdown dependency services on docker
-.PHONY: docker-down
-docker-down:
-	$(info   >  Stopping dependency services with $(PROJECT_DIR)/docker/docker-compose.yml)
-	@docker-compose -f $(PROJECT_DIR)/docker/docker-compose.yml down
-
-## clean: Clean up the output and the binary of the application
-.PHONY: clean
-clean: stop
-	$(info   >  Cleanning up $(OUT_DIR))
-	@-rm -rf $(OUT_DIR)
-	@-rm $(PID)
-
-## start: Start the application (for server)
-.PHONY: start
-start: export CONF_PROVIDER_FILE_PATH ?= $(OUT_DIR)/conf/server.yml
-start: build
-	$(info   >  Starting application $(PROJECT_NAME), output is redirected to $(LOG_FILE))
-	@-$(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME) > $(LOG_FILE) 2>&1 & echo $$! > $(PID)
-	@cat $(PID) | sed "/^/s/^/  \>  PID: /"
-
-## run: Run the application (for client)
-.PHONY: run
-run: export CONF_CONSUMER_FILE_PATH ?= $(OUT_DIR)/conf/client.yml
-run: export CONF_ROUTER_FILE_PATH ?= $(OUT_DIR)/conf/router_config.yml
-run: build
-	$(info   >  Running application $(PROJECT_NAME), output is redirected to $(LOG_FILE))
-	@-$(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME) 2>&1 | tee $(LOG_FILE)
-
-## stop: Stop running the application (for server)
-.PHONY: stop
-stop:
-	$(info   >  Stopping the application $(PROJECT_NAME))
-	@cat $(PID) | sed "/^/s/^/  \>  Killing PID: /"
-	@-kill `cat $(PID)` 2>/dev/null || true
-
-## integration: Run integration test for this application
-.PHONY: integration
-integration: export CONF_CONSUMER_FILE_PATH ?= $(OUT_DIR)/conf/client.yml
-integration: export CONF_ROUTER_FILE_PATH ?= $(OUT_DIR)/conf/router_config.yml
-integration:
-	$(info   >  Running integration test for application $(PROJECT_NAME))
-	@go clean -testcache
-	@go test -tags integration -v $(PROJECT_DIR)/tests/...
\ No newline at end of file
diff --git a/chain/README.md b/chain/README.md
deleted file mode 100644
index 509c764..0000000
--- a/chain/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# Chain Sample
-
-### Backend
-
-Most of the samples in this project uses one consumer and one provider for simplification purpose. That is, there are only two nodes in the calling chain. This sample demonstrates how a calling chain which contains nodes more than two - three nodes at minimal, is configured. This sample contains three parts, which are:
-
-frontend -> middle -> backend
-
-1. backend: Backend services, including 'CatService', 'DogService', 'TigerService' and 'LionService'. In "backend" directory, only service providers are provided.
-2. middle: Middle services, in the middle of the calling chain, provides services 'ChineseService' and 'AmericanService', and consumes the services provided by "backend" directory. In  "middle" directory, both service providers and service consumers are provided.
-3. frontend: Frontend caller, consumes services provided by "middle" and output the result.   
-
-### Call other service in the current service
-
-**Code**
-
-```golang
-type DogService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (d *DogService) Reference() string {
-	return "DogService"
-}
-
-type TigerService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (t *TigerService) Reference() string {
-	return "TigerService"
-}
-
-func init() {
-	dog := new(DogService)
-	config.SetConsumerService(dog)
-	tiger := new(TigerService)
-	config.SetConsumerService(tiger)
-
-	config.SetProviderService(&ChineseService{
-		dog:   dog,
-		tiger: tiger,
-	})
-}
-```
-
-**Configuration**
-
-```yaml
-# reference config
-references:
-  "CatService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.CatService"
-  "DogService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.DogService"
-    
-# service config
-services:
-  "ChineseService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.ChineseService"
-  "AmericanService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.AmericanService"
-```
-
-Pls. refer to [HOWTO.md](../HOWTO.md) under the root directory to run this sample.
\ No newline at end of file
diff --git a/chain/README_zh.md b/chain/README_zh.md
deleted file mode 100644
index fe2c8e9..0000000
--- a/chain/README_zh.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# 链路调用示例
-
-### 背景
-
-为了简化起见,绝大部分的例子都是展示了一个 consumer 调用一个 provider 的场景。也就是说,这个调用链路上只有两个节点。本例展示了大于两个节点的最小链路单元 —— 三节点,dubbo-go 是如何配置和工作的。在这个例子中,由三部分组成:
-
-frontend -> middle -> backend
-
-1. backend: 后端服务,包含 CatService、DogService、TigerService 和 LionService。"backend" 目录只包含了服务的提供者。
-2. middle: 中间服务,在链路的中间,负责向前端(frontend)暴露服务 ChineseService 和 AmericanService,并调用后端(backend)服务。"middle" 目录既包含了服务的提供者,也包含了服务的调用者。
-3. frontend: 前端调用者,调用 middle 提供的服务并输出。
-
-### 在提供的服务中调用其他服务的示例
-
-**代码**
-
-```golang
-type DogService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (d *DogService) Reference() string {
-	return "DogService"
-}
-
-type TigerService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (t *TigerService) Reference() string {
-	return "TigerService"
-}
-
-func init() {
-	dog := new(DogService)
-	config.SetConsumerService(dog)
-	tiger := new(TigerService)
-	config.SetConsumerService(tiger)
-
-	config.SetProviderService(&ChineseService{
-		dog:   dog,
-		tiger: tiger,
-	})
-}
-```
-
-**配置**
-
-```yaml
-# reference config
-references:
-  "CatService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.CatService"
-  "DogService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.DogService"
-    
-# service config
-services:
-  "ChineseService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.ChineseService"
-  "AmericanService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.AmericanService"
-```
-
-
-请参阅根目录中的 [HOWTO.md](../HOWTO_zh.md) 来运行本例。
-
-
diff --git a/chain/backend/cmd/server.go b/chain/backend/cmd/server.go
deleted file mode 100644
index aa9d7df..0000000
--- a/chain/backend/cmd/server.go
+++ /dev/null
@@ -1,76 +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 main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	_ "github.com/apache/dubbo-go-samples/chain/backend/pkg"
-)
-
-import (
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/logger"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-func main() {
-	config.Load()
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/chain/backend/conf/client.yml b/chain/backend/conf/client.yml
deleted file mode 100644
index e452323..0000000
--- a/chain/backend/conf/client.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "BackEndServicesTest"
-  module: "dubbo-go backend services test"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "CatService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.CatService"
-  "DogService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.DogService"
-  "TigerService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.TigerService"
-  "LionService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.LionService"
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/chain/backend/conf/log.yml b/chain/backend/conf/log.yml
deleted file mode 100644
index 8c3f700..0000000
--- a/chain/backend/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "info"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/chain/backend/conf/server.yml b/chain/backend/conf/server.yml
deleted file mode 100644
index 4f7c330..0000000
--- a/chain/backend/conf/server.yml
+++ /dev/null
@@ -1,73 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "BackendServices"
-  module: "dubbo-go backend services"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "CatService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.CatService"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-  "DogService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.DogService"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-  "TigerService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.TigerService"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-  "LionService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.LionService"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20000
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/chain/backend/pkg/cat_service.go b/chain/backend/pkg/cat_service.go
deleted file mode 100644
index d43dffe..0000000
--- a/chain/backend/pkg/cat_service.go
+++ /dev/null
@@ -1,51 +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 pkg
-
-import (
-	"fmt"
-)
-
-import (
-	"github.com/apache/dubbo-go/config"
-)
-
-func init() {
-	config.SetProviderService(new(CatService))
-}
-
-type CatService struct {
-}
-
-func (c *CatService) GetId() (int, error) {
-	return 1, nil
-}
-
-func (c *CatService) GetName() (string, error) {
-	fmt.Println("I am a Cat!")
-	return "Cat", nil
-}
-
-func (c *CatService) Yell() (string, error) {
-	fmt.Println("Meow Meow!")
-	return "Meow Meow!", nil
-}
-
-func (c *CatService) Reference() string {
-	return "CatService"
-}
diff --git a/chain/backend/pkg/dog_service.go b/chain/backend/pkg/dog_service.go
deleted file mode 100644
index 247a534..0000000
--- a/chain/backend/pkg/dog_service.go
+++ /dev/null
@@ -1,51 +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 pkg
-
-import (
-	"fmt"
-)
-
-import (
-	"github.com/apache/dubbo-go/config"
-)
-
-func init() {
-	config.SetProviderService(new(DogService))
-}
-
-type DogService struct {
-}
-
-func (d *DogService) GetId() (int, error) {
-	return 0, nil
-}
-
-func (d *DogService) GetName() (string, error) {
-	fmt.Println("I am a Dog!")
-	return "Dog", nil
-}
-
-func (d *DogService) Yell() (string, error) {
-	fmt.Println("Woof Woof!")
-	return "Woof Woof!", nil
-}
-
-func (d *DogService) Reference() string {
-	return "DogService"
-}
diff --git a/chain/backend/pkg/lion_service.go b/chain/backend/pkg/lion_service.go
deleted file mode 100644
index dbe25ff..0000000
--- a/chain/backend/pkg/lion_service.go
+++ /dev/null
@@ -1,51 +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 pkg
-
-import (
-	"fmt"
-)
-
-import (
-	"github.com/apache/dubbo-go/config"
-)
-
-func init() {
-	config.SetProviderService(new(LionService))
-}
-
-type LionService struct {
-}
-
-func (l *LionService) GetId() (int, error) {
-	return 2, nil
-}
-
-func (l *LionService) GetName() (string, error) {
-	fmt.Println("I am a Lion!")
-	return "Lion", nil
-}
-
-func (l *LionService) Yell() (string, error) {
-	fmt.Println("Lion Lion!")
-	return "Lion Lion!", nil
-}
-
-func (l *LionService) Reference() string {
-	return "LionService"
-}
diff --git a/chain/backend/pkg/tiger_service.go b/chain/backend/pkg/tiger_service.go
deleted file mode 100644
index 9eb5673..0000000
--- a/chain/backend/pkg/tiger_service.go
+++ /dev/null
@@ -1,51 +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 pkg
-
-import (
-	"fmt"
-)
-
-import (
-	"github.com/apache/dubbo-go/config"
-)
-
-func init() {
-	config.SetProviderService(new(TigerService))
-}
-
-type TigerService struct {
-}
-
-func (t *TigerService) GetId() (int, error) {
-	return 3, nil
-}
-
-func (t *TigerService) GetName() (string, error) {
-	fmt.Println("I am a Tiger!")
-	return "Tiger", nil
-}
-
-func (t *TigerService) Yell() (string, error) {
-	fmt.Println("Tiger Tiger!")
-	return "Tiger Tiger!", nil
-}
-
-func (t *TigerService) Reference() string {
-	return "TigerService"
-}
diff --git a/chain/backend/tests/integration/main_test.go b/chain/backend/tests/integration/main_test.go
deleted file mode 100644
index 55c2706..0000000
--- a/chain/backend/tests/integration/main_test.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-import (
-	"os"
-	"testing"
-	"time"
-)
-
-var cat = new(CatService)
-var dog = new(DogService)
-var tiger = new(TigerService)
-var lion = new(LionService)
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(cat)
-	config.SetConsumerService(dog)
-	config.SetConsumerService(tiger)
-	config.SetConsumerService(lion)
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type CatService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (c *CatService) Reference() string {
-	return "CatService"
-}
-
-type DogService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (d *DogService) Reference() string {
-	return "DogService"
-}
-
-type TigerService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (t *TigerService) Reference() string {
-	return "TigerService"
-}
-
-type LionService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (l *LionService) Reference() string {
-	return "LionService"
-}
diff --git a/chain/backend/tests/integration/services_test.go b/chain/backend/tests/integration/services_test.go
deleted file mode 100644
index 888ba24..0000000
--- a/chain/backend/tests/integration/services_test.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"testing"
-)
-import (
-	"github.com/stretchr/testify/assert"
-)
-
-func TestCat(t *testing.T) {
-	name, err := cat.GetName()
-	assert.Nil(t, err)
-	assert.Equal(t, "Cat", name)
-	id, err := cat.GetId()
-	assert.Nil(t, err)
-	assert.Equal(t, 1, id)
-}
-
-func TestTiger(t *testing.T) {
-	id, err := tiger.GetId()
-	assert.Nil(t, err)
-	assert.Equal(t, 3, id)
-}
-
-func TestDog(t *testing.T) {
-	yell, err := dog.Yell()
-	assert.Nil(t, err)
-	assert.Equal(t, "Woof Woof!", yell)
-}
-
-func TestLion(t *testing.T) {
-	name, err := lion.GetName()
-	assert.Nil(t, err)
-	assert.Equal(t, "Lion", name)
-}
diff --git a/chain/docker/docker-compose.yml b/chain/docker/docker-compose.yml
deleted file mode 100644
index 8724179..0000000
--- a/chain/docker/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
diff --git a/chain/frontend/cmd/client.go b/chain/frontend/cmd/client.go
deleted file mode 100644
index e13ab55..0000000
--- a/chain/frontend/cmd/client.go
+++ /dev/null
@@ -1,56 +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 main
-
-import (
-	"fmt"
-	"time"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/chain/frontend/pkg"
-)
-
-import (
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-func main() {
-	var chinese = new(pkg.ChineseService)
-	var american = new(pkg.AmericanService)
-	config.SetConsumerService(chinese)
-	config.SetConsumerService(american)
-	config.Load()
-	time.Sleep(3 * time.Second)
-	have, _ := chinese.Have()
-	fmt.Printf("chinese.Have(): %s\n", have)
-	hear, _ := chinese.Hear()
-	fmt.Printf("chinese.Hear(): %s\n", hear)
-	have, _ = american.Have()
-	fmt.Printf("american.Have(): %s\n", have)
-	hear, _ = american.Hear()
-	fmt.Printf("american.Hear(): %s\n", hear)
-}
diff --git a/chain/frontend/conf/client.yml b/chain/frontend/conf/client.yml
deleted file mode 100644
index 6784010..0000000
--- a/chain/frontend/conf/client.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "Frontend"
-  module: "dubbo-go frontend"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "ChineseService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.ChineseService"
-  "AmericanService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.AmericanService"
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/chain/frontend/conf/log.yml b/chain/frontend/conf/log.yml
deleted file mode 100644
index 8c3f700..0000000
--- a/chain/frontend/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "info"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/chain/frontend/pkg/people.go b/chain/frontend/pkg/people.go
deleted file mode 100644
index 737bdbc..0000000
--- a/chain/frontend/pkg/people.go
+++ /dev/null
@@ -1,36 +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 pkg
-
-type ChineseService struct {
-	Have func() (string, error)
-	Hear func() (string, error)
-}
-
-func (c *ChineseService) Reference() string {
-	return "ChineseService"
-}
-
-type AmericanService struct {
-	Have func() (string, error)
-	Hear func() (string, error)
-}
-
-func (a *AmericanService) Reference() string {
-	return "AmericanService"
-}
diff --git a/chain/middle/cmd/server.go b/chain/middle/cmd/server.go
deleted file mode 100644
index 007c5a4..0000000
--- a/chain/middle/cmd/server.go
+++ /dev/null
@@ -1,76 +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 main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	_ "github.com/apache/dubbo-go-samples/chain/middle/pkg"
-)
-
-import (
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/logger"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-func main() {
-	config.Load()
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/chain/middle/conf/client.yml b/chain/middle/conf/client.yml
deleted file mode 100644
index 8c978e5..0000000
--- a/chain/middle/conf/client.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "MiddleServices"
-  module: "dubbo-go middle services"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "CatService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.CatService"
-  "DogService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.DogService"
-  "TigerService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.TigerService"
-  "LionService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.LionService"
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/chain/middle/conf/log.yml b/chain/middle/conf/log.yml
deleted file mode 100644
index 8c3f700..0000000
--- a/chain/middle/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "info"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/chain/middle/conf/server.yml b/chain/middle/conf/server.yml
deleted file mode 100644
index 13663cd..0000000
--- a/chain/middle/conf/server.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "MiddleServices"
-  module: "dubbo-go middle services"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "ChineseService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.ChineseService"
-  "AmericanService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.AmericanService"
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20001
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/chain/middle/conf/test.yml b/chain/middle/conf/test.yml
deleted file mode 100644
index ddbfd98..0000000
--- a/chain/middle/conf/test.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "MiddleServicesTest"
-  module: "dubbo-go middle services test"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "ChineseService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.ChineseService"
-  "AmericanService":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.demo.AmericanService"
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/chain/middle/pkg/american_service.go b/chain/middle/pkg/american_service.go
deleted file mode 100644
index 2b367bb..0000000
--- a/chain/middle/pkg/american_service.go
+++ /dev/null
@@ -1,78 +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 pkg
-
-import (
-	"fmt"
-)
-
-import (
-	"github.com/apache/dubbo-go/config"
-)
-
-type CatService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (c *CatService) Reference() string {
-	return "CatService"
-}
-
-type LionService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (l *LionService) Reference() string {
-	return "LionService"
-}
-
-func init() {
-	cat := new(CatService)
-	config.SetConsumerService(cat)
-	lion := new(LionService)
-	config.SetConsumerService(lion)
-
-	config.SetProviderService(&AmericanService{
-		cat:  cat,
-		lion: lion,
-	})
-}
-
-type AmericanService struct {
-	cat  *CatService
-	lion *LionService
-}
-
-func (a *AmericanService) Have() (string, error) {
-	name, _ := a.cat.GetName()
-	return "I'm American and I have a " + name, nil
-}
-
-func (a *AmericanService) Hear() (string, error) {
-	name, _ := a.lion.GetName()
-	yell, _ := a.lion.Yell()
-	return fmt.Sprintf("I'm American and I heard a %s yells like %s", name, yell), nil
-}
-
-func (a *AmericanService) Reference() string {
-	return "AmericanService"
-}
diff --git a/chain/middle/pkg/chinese_service.go b/chain/middle/pkg/chinese_service.go
deleted file mode 100644
index 4f19fca..0000000
--- a/chain/middle/pkg/chinese_service.go
+++ /dev/null
@@ -1,78 +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 pkg
-
-import (
-	"fmt"
-)
-
-import (
-	"github.com/apache/dubbo-go/config"
-)
-
-type DogService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (d *DogService) Reference() string {
-	return "DogService"
-}
-
-type TigerService struct {
-	GetId   func() (int, error)
-	GetName func() (string, error)
-	Yell    func() (string, error)
-}
-
-func (t *TigerService) Reference() string {
-	return "TigerService"
-}
-
-func init() {
-	dog := new(DogService)
-	config.SetConsumerService(dog)
-	tiger := new(TigerService)
-	config.SetConsumerService(tiger)
-
-	config.SetProviderService(&ChineseService{
-		dog:   dog,
-		tiger: tiger,
-	})
-}
-
-type ChineseService struct {
-	dog   *DogService
-	tiger *TigerService
-}
-
-func (c *ChineseService) Have() (string, error) {
-	name, _ := c.dog.GetName()
-	return "I'm Chinese and I have a " + name, nil
-}
-
-func (c *ChineseService) Hear() (string, error) {
-	name, _ := c.tiger.GetName()
-	yell, _ := c.tiger.Yell()
-	return fmt.Sprintf("I'm Chinese and I heard a %s yells like %s", name, yell), nil
-}
-
-func (c *ChineseService) Reference() string {
-	return "ChineseService"
-}
diff --git a/chain/middle/tests/integration/main_test.go b/chain/middle/tests/integration/main_test.go
deleted file mode 100644
index a45bb1a..0000000
--- a/chain/middle/tests/integration/main_test.go
+++ /dev/null
@@ -1,70 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-import (
-	"os"
-	"testing"
-	"time"
-)
-
-var (
-	chinese  = new(ChineseService)
-	american = new(AmericanService)
-)
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(chinese)
-	config.SetConsumerService(american)
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type ChineseService struct {
-	Have func() (string, error)
-	Hear func() (string, error)
-}
-
-func (c *ChineseService) Reference() string {
-	return "ChineseService"
-}
-
-type AmericanService struct {
-	Have func() (string, error)
-	Hear func() (string, error)
-}
-
-func (a *AmericanService) Reference() string {
-	return "AmericanService"
-}
diff --git a/chain/middle/tests/integration/services_test.go b/chain/middle/tests/integration/services_test.go
deleted file mode 100644
index d1c9f97..0000000
--- a/chain/middle/tests/integration/services_test.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"github.com/stretchr/testify/assert"
-)
-
-import (
-	"testing"
-)
-
-func TestChinese(t *testing.T) {
-	have, err := chinese.Have()
-	assert.Nil(t, err)
-	assert.Equal(t, "I'm Chinese and I have a Dog", have)
-	hear, err := chinese.Hear()
-	assert.Nil(t, err)
-	assert.Equal(t, "I'm Chinese and I heard a Tiger yells like Tiger Tiger!", hear)
-}
-
-func TestAmerican(t *testing.T) {
-	have, err := american.Have()
-	assert.Nil(t, err)
-	assert.Equal(t, "I'm American and I have a Cat", have)
-	hear, err := american.Hear()
-	assert.Nil(t, err)
-	assert.Equal(t, "I'm American and I heard a Lion yells like Lion Lion!", hear)
-}
diff --git a/ci.sh b/ci.sh
deleted file mode 100644
index f1a214a..0000000
--- a/ci.sh
+++ /dev/null
@@ -1,29 +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.
-
-allSamples=`find .|grep /assembly/linux/dev.sh | awk '{gsub("/assembly/linux/dev.sh","");print}'`
-currentFolder=`pwd`
-
-for singleSample in $allSamples
-do
-
-cd $singleSample
-
-sh ./assembly/linux/dev.sh
-
-cd $currentFolder
-
-done
\ No newline at end of file
diff --git a/config-api/README.md b/config-api/README.md
deleted file mode 100644
index a1b4605..0000000
--- a/config-api/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# config by api
-
-### 1. Usage
-provider side\
-go-server/cmd/server.go
-```go
-// run these codes in init function
-// and you need not add config env_vairable before run
-    providerConfig := config.NewProviderConfig(
-            config.WithProviderAppConfig(config.NewDefaultApplicationConfig()),
-            config.WithProviderProtocol("dubbo", "dubbo", "20000"),// protocol and port
-            config.WithProviderRegistry("demoZk", config.NewDefaultRegistryConfig("zookeeper")), // registry config
-            config.WithProviderServices("UserProvider", config.NewServiceConfigByAPI(
-                config.WithServiceRegistry("demoZk"), // registry key, equal to upper line
-                config.WithServiceProtocol("dubbo"), // export protocol 
-                config.WithServiceInterface("org.apache.dubbo.UserProvider"), // interface id
-                config.WithServiceLoadBalance("random"), // lb 
-                config.WithServiceWarmUpTime("100"),
-                config.WithServiceCluster("failover"),
-                config.WithServiceMethod("GetUser", "1", "random"),
-            )),
-        )
-	config.SetProviderConfig(*providerConfig) // set to providerConfig ptr
-```
-
-consumer side\
-go-client/cmd/client.go
-```go
-consumerConfig := config.NewConsumerConfig(
-		config.WithConsumerAppConfig(config.NewDefaultApplicationConfig()), // default app config
-		config.WithConsumerConnTimeout(time.Second*3), // timeout
-		config.WithConsumerRequestTimeout(time.Second*3), // timeout
-		config.WithConsumerRegistryConfig("demoZk", config.NewDefaultRegistryConfig("zookeeper")), // registry config
-		config.WithConsumerReferenceConfig("UserProvider", config.NewReferenceConfigByAPI( // set refer config
-			config.WithReferenceRegistry("demoZk"), // registry key
-			config.WithReferenceProtocol("dubbo"), // protocol 
-			config.WithReferenceInterface("org.apache.dubbo.UserProvider"),// interface name
-			config.WithReferenceMethod("GetUser", "3", "random"), // method and lb
-			config.WithReferenceCluster("failover"),
-		)),
-	)
-	config.SetConsumerConfig(*consumerConfig) // set to global consumerConfig ptr before main function run
-```
-### 2. Attention
-- default registry support\
-Now we support the api way to create provider/consumer global configure.
-
-default registry code as showed above:\
-we support default ip and port for them
-```go
-config.NewDefaultRegistryConfig("nacos")
-config.NewDefaultRegistryConfig("consul")
-config.NewDefaultRegistryConfig("zookeeper")
-```
-
-- default app config support\
-set app-relevant config by default
-```
-config.NewDefaultApplicationConfig()
-```
-- need improve\
-Now, api config is only support to create config by api, it also needs to set specific config field after read from yaml file by api.\
-There maybe future-change in config/consumer_config.go  config/provider_config.go to export more api.
-
-Pls. refer to [HOWTO.md](../HOWTO.md) under the root directory to run this sample.
\ No newline at end of file
diff --git a/config-api/README_zh.md b/config-api/README_zh.md
deleted file mode 100644
index f33f572..0000000
--- a/config-api/README_zh.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# Dubbogo 使用api进行配置初始化
-
-### 1. 使用方法
-- 服务端:
-  go-server/cmd/server.go
-
-```go
-// 在init函数中定义这些代码
-// 你不需要在环境变量中定义服务端配置文件的位置了
-    providerConfig := config.NewProviderConfig(
-            config.WithProviderAppConfig(config.NewDefaultApplicationConfig()), // 默认app配置
-            config.WithProviderProtocol("dubbo", "dubbo", "20000"),// 协议key、协议名和端口号
-            config.WithProviderRegistry("demoZk", config.NewDefaultRegistryConfig("zookeeper")), // 注册中心配置
-            config.WithProviderServices("UserProvider", config.NewServiceConfigByAPI(
-                config.WithServiceRegistry("demoZk"), // 注册中心 key, 和上面注册中心key保持一致
-                config.WithServiceProtocol("dubbo"), // 暴露协议,和上面协议key对应
-                config.WithServiceInterface("org.apache.dubbo.UserProvider"), // interface id
-                config.WithServiceLoadBalance("random"), // 负载均衡
-                config.WithServiceWarmUpTime("100"),
-                config.WithServiceCluster("failover"),
-                config.WithServiceMethod("GetUser", "1", "random"),
-            )),
-        )
-	config.SetProviderConfig(*providerConfig) // 写入providerConfig指针
-```
-
-- 客户端
-  go-client/cmd/client.go
-
-```go
-consumerConfig := config.NewConsumerConfig(
-		config.WithConsumerAppConfig(config.NewDefaultApplicationConfig()), // 默认app配置
-		config.WithConsumerConnTimeout(time.Second*3), // timeout
-		config.WithConsumerRequestTimeout(time.Second*3), // timeout
-		config.WithConsumerRegistryConfig("demoZk", config.NewDefaultRegistryConfig("zookeeper")), // 注册中心配置
-		config.WithConsumerReferenceConfig("UserProvider", config.NewReferenceConfigByAPI( // set refer config
-			config.WithReferenceRegistry("demoZk"), // registry key
-			config.WithReferenceProtocol("dubbo"), // protocol 
-			config.WithReferenceInterface("org.apache.dubbo.UserProvider"),// interface name
-			config.WithReferenceMethod("GetUser", "3", "random"), // method and lb
-			config.WithReferenceCluster("failover"),
-		)),
-	)
-	config.SetConsumerConfig(*consumerConfig) // 写入 consumerConfig 指针
-```
-### 2. 注意
-- 默认注册中心支持
-
-  现在提供根据api来快速初始化注册中心到默认ip和端口
-
-默认注册中心初始化代码:
-
-```go
-config.NewDefaultRegistryConfig("nacos")
-config.NewDefaultRegistryConfig("consul")
-config.NewDefaultRegistryConfig("zookeeper")
-```
-
-- 默认app配置
-设置默认的app配置:
-```
-config.NewDefaultApplicationConfig()
-```
-- 需要改进的地方:
-
-  现在,通过api只能进行配置初始化过程,而通过api进行配置特定字段的修改也很重要。在以后可能会在config/consumer_config.go  config/provider_config.go 文件中进行进一步支持。
-
-请参阅根目录中的 [HOWTO.md](../HOWTO_zh.md) 来运行本例。
\ No newline at end of file
diff --git a/config-api/go-client/cmd/client.go b/config-api/go-client/cmd/client.go
deleted file mode 100644
index 1427407..0000000
--- a/config-api/go-client/cmd/client.go
+++ /dev/null
@@ -1,83 +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 main
-
-import (
-	"context"
-	"os"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/config-api/go-client/pkg"
-)
-
-var userProvider = new(pkg.UserProvider)
-
-func setConfigByAPI() {
-	consumerConfig := config.NewConsumerConfig(
-		config.WithConsumerAppConfig(config.NewDefaultApplicationConfig()),
-		config.WithConsumerConnTimeout(time.Second*3),
-		config.WithConsumerRequestTimeout(time.Second*3),
-		config.WithConsumerRegistryConfig("demoZk", config.NewDefaultRegistryConfig("zookeeper")),
-		config.WithConsumerReferenceConfig("UserProvider", config.NewReferenceConfigByAPI(
-			config.WithReferenceRegistry("demoZk"),
-			config.WithReferenceProtocol("dubbo"),
-			config.WithReferenceInterface("org.apache.dubbo.UserProvider"),
-			config.WithReferenceMethod("GetUser", "3", "random"),
-			config.WithReferenceCluster("failover"),
-		)),
-	)
-	config.SetConsumerConfig(*consumerConfig)
-}
-
-func init() {
-	setConfigByAPI()
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&pkg.User{})
-}
-
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	gxlog.CInfo("\n\n\nstart to test dubbo")
-	user := &pkg.User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-	gxlog.CInfo("response result: %v\n", user)
-}
diff --git a/config-api/go-client/conf/client.yml b/config-api/go-client/conf/client.yml
deleted file mode 100644
index 308d530..0000000
--- a/config-api/go-client/conf/client.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserInfoClient"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/config-api/go-client/conf/log.yml b/config-api/go-client/conf/log.yml
deleted file mode 100644
index 2b6e93a..0000000
--- a/config-api/go-client/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "debug"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/config-api/go-client/pkg/user.go b/config-api/go-client/pkg/user.go
deleted file mode 100644
index 75c964f..0000000
--- a/config-api/go-client/pkg/user.go
+++ /dev/null
@@ -1,42 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/config-api/go-server/cmd/server.go b/config-api/go-server/cmd/server.go
deleted file mode 100644
index da98db0..0000000
--- a/config-api/go-server/cmd/server.go
+++ /dev/null
@@ -1,100 +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 main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/logger"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/config-api/go-server/pkg"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-func setConfigByAPI() {
-	providerConfig := config.NewProviderConfig(
-		config.WithProviderAppConfig(config.NewDefaultApplicationConfig()),
-		config.WithProviderProtocol("dubbo", "dubbo", "20000"),
-		config.WithProviderRegistry("demoZk", config.NewDefaultRegistryConfig("zookeeper")),
-		config.WithProviderServices("UserProvider", config.NewServiceConfigByAPI(
-			config.WithServiceRegistry("demoZk"),
-			config.WithServiceProtocol("dubbo"),
-			config.WithServiceInterface("org.apache.dubbo.UserProvider"),
-			config.WithServiceLoadBalance("random"),
-			config.WithServiceWarmUpTime("100"),
-			config.WithServiceCluster("failover"),
-			config.WithServiceMethod("GetUser", "1", "random"),
-		)),
-	)
-	config.SetProviderConfig(*providerConfig)
-}
-
-func init() {
-	setConfigByAPI()
-}
-
-// needn't to setup environment variable  before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/config-api/go-server/conf/client.yml b/config-api/go-server/conf/client.yml
deleted file mode 100644
index 11ae382..0000000
--- a/config-api/go-server/conf/client.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserInfoTest"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/config-api/go-server/conf/log.yml b/config-api/go-server/conf/log.yml
deleted file mode 100644
index 970d988..0000000
--- a/config-api/go-server/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "error"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/config-api/go-server/conf/server.yml b/config-api/go-server/conf/server.yml
deleted file mode 100644
index af90434..0000000
--- a/config-api/go-server/conf/server.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserInfoServer"
-  module: "dubbo-go user-info server"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 1
-        loadbalance: "random"
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20000
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/config-api/go-server/docker/docker-compose.yml b/config-api/go-server/docker/docker-compose.yml
deleted file mode 100644
index 8724179..0000000
--- a/config-api/go-server/docker/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
diff --git a/config-api/go-server/pkg/user.go b/config-api/go-server/pkg/user.go
deleted file mode 100644
index 2759d19..0000000
--- a/config-api/go-server/pkg/user.go
+++ /dev/null
@@ -1,60 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
-	"github.com/dubbogo/gost/log"
-)
-
-func init() {
-	config.SetProviderService(new(UserProvider))
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18, time.Now()}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/config-api/go-server/tests/integration/main_test.go b/config-api/go-server/tests/integration/main_test.go
deleted file mode 100644
index ed8d290..0000000
--- a/config-api/go-server/tests/integration/main_test.go
+++ /dev/null
@@ -1,72 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-
-
-var userProvider = new(UserProvider)
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/config-api/go-server/tests/integration/userprovider_test.go b/config-api/go-server/tests/integration/userprovider_test.go
deleted file mode 100644
index 09b09c3..0000000
--- a/config-api/go-server/tests/integration/userprovider_test.go
+++ /dev/null
@@ -1,38 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"testing"
-)
-import (
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetUser(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	assert.Nil(t, err)
-	assert.Equal(t, "A001", user.Id)
-	assert.Equal(t, "Alex Stocks", user.Name)
-	assert.Equal(t, int32(18), user.Age)
-	assert.NotNil(t, user.Time)
-}
diff --git a/configcenter/README.md b/configcenter/README.md
deleted file mode 100644
index 7f065ad..0000000
--- a/configcenter/README.md
+++ /dev/null
@@ -1,95 +0,0 @@
-# Config Center Sample
-
-### Background
-
-In Dubbo, config center takes the following two responsibilities:
-1. For externalized configuration. Central management for bootstrap configurations, that is, keep "dubbo.properties" save externally on the config center.
-2. For service governance. Keep service rule on the config center, and notify the subscribers when the rule changes.
-
-The purpose of externalized configuration is centrally managing application's configurations in one single place. There are many mature configuration management systems in the industry. Dubbo go supports some of them, including Zookeeper, Nacos and Apollo, etc.
-
-There's no difference between externalized configuration and local configuration with regarding the content and the format. Config center is more suitable to keep the common configurations such as registry center configuration, metadata center configuration, etc., so that they are centrally managed.
-
-At the same time, externalized configuration has two scope: global scope, and application scope. Global scope configurations are shared among all applications, and application scope configuration is only visible to the application it belongs to. By default, externalized configuration has higher priority than the local configuration.
-
-This sample demonstrates how to config and use externalized configuration on Zookeeper. You can refer [Dubbo Documentation](https://dubbo.apache.org/zh/docs/v2.7/user/configuration/config-center/) for more details on config center.
-
-### Example
-
-If use Zookeeper as config center, global externalized configuration and application scope configurations will be layout like below:
-
-```
-dubbo
-└── config
-    ├── dubbo
-    │   └── dubbo.properties <- global
-    ├── user-info-client     
-    │   └── dubbo.properties <- service consumer
-    └── user-info-server     
-        └── dubbo.properties <- service provider
-```
-
-##### 1. Prepare externalized configurations
-
-**Prepare global scope externalized configuration** - The default path for the global scope configuration on Zookeeper is: "/dubbo/config/dubbo/dubbo.properties". You can use the following commands to config it:
-
-```bash
-zkCli create /dubbo/config; \
-zkCli create /dubbo/config/dubbo; \
-zkCli create /dubbo/config/dubbo/dubbo.properties; \
-zkCli set /dubbo/config/dubbo/dubbo.properties \
-"dubbo.protocol.name=dubbo
-dubbo.protocol.port=20880"
-```
-
-**Prepare configuration for service provider** - Assume service provider's application name is "user-info-server", then the default path for the provider's config is "/dubbo/config/user-info-server/dubbo.properties". You can use the following commands to config it:
-
-```bash
-zkCli create /dubbo/config; \
-zkCli create /dubbo/config/user-info-server; \
-zkCli create /dubbo/config/user-info-server/dubbo.properties; \
-zkCli set /dubbo/config/user-info-server/dubbo.properties \
-"dubbo.service.org.apache.dubbo.UserProvider.cluster=failfast
-dubbo.service.org.apache.dubbo.UserProvider.protocol=myDubbo
-dubbo.protocols.myDubbo.port=22222
-dubbo.protocols.myDubbo.name=dubbo"
-```
-
-**Prepare configuration for service consumer** - Assume service consumer's application name is "user-info-client", then the default path for the consumer's config is "/dubbo/config/user-info-client/dubbo.properties". You can use the following commands to config it:
-
-```bash
-zkCli create /dubbo/config; \
-zkCli create /dubbo/config/user-info-client; \
-zkCli create /dubbo/config/user-info-client/dubbo.properties; \
-zkCli set /dubbo/config/user-info-client/dubbo.properties \
-"dubbo.service.org.apache.dubbo.UserProvider.cluster=failfast"
-```
-
-##### 2. Config config center in application
-
-The config center's configuration on the consumer side and on the provider side is similar, shown as following:
-
-```yaml
-# config center config
-config_center:
-  protocol: "zookeeper"
-  address: "127.0.0.1:2181"
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-server" # application's name, which will decide where the externalized configuration is placed.
-```
-
-##### 3. Import config center's package
-
-```go
-import (
-    _ "github.com/apache/dubbo-go/config_center/zookeeper"
-)
-```
-
-##### 4. Run this sample
-
-Pls. refer to [HOWTO.md](../HOWTO.md) under the root directory to run this sample.
-
-
diff --git a/configcenter/README_zh.md b/configcenter/README_zh.md
deleted file mode 100644
index 1cb6f8a..0000000
--- a/configcenter/README_zh.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# 配置中心示例
-
-### 背景
-
-配置中心在 Dubbo 中承担两个职责:
-
-1. 外部化配置。启动配置的集中式存储 (简单理解为 dubbo.properties 的外部化存储)
-2. 服务治理。服务治理规则的存储与通知
-
-外部化配置目的之一是实现配置的集中式管理,这部分业界已经有很多成熟的专业配置系统。Dubbo go 中对 Zookeeper、Nacos、Apollo 等做了支持。
-
-外部化配置和其他本地配置在内容和格式上并无区别,配置中心更适合将一些公共配置如注册中心、元数据中心配置等抽取以便做集中管理。
-
-同时,外部化配置有全局和应用两个级别,全局配置是所有应用共享的,应用级配置是由每个应用自己维护且只对自身可见的。并且,外部化配置的优先级默认高于本地配置。
-
-本例以如何在 Zookeeper
-上配置和使用外部化配置为例。更多的关于配置中心的描述请参阅 [Dubbo 文档](https://dubbo.apache.org/zh/docs/v2.7/user/configuration/config-center/) 。
-
-### 样例
-
-以 Zookeeper 为例,应用级别和全局的外化配置将会以以下的布局存储在 Zookeeper 上。
-
-```
-dubbo
-└── config
-    ├── dubbo
-    │   └── dubbo.properties <- 全局
-    ├── user-info-client     
-    │   └── dubbo.properties <- 服务消费者
-    └── user-info-server     
-        └── dubbo.properties <- 服务提供者
-```
-
-##### 1. 准备应用外化配置
-
-**全局配置准备** - 全局配置的默认路径为 "/dubbo/config/dubbo/dubbo.properties"。使用以下的命令来配置样例 dubbo.properties:
-
-```bash
-zkCli create /dubbo/config; \
-zkCli create /dubbo/config/dubbo; \
-zkCli create /dubbo/config/dubbo/dubbo.properties; \
-zkCli set /dubbo/config/dubbo/dubbo.properties \
-"dubbo.protocol.name=dubbo
-dubbo.protocol.port=20880"
-```
-
-**服务提供方配置** - 假设服务提供方的应用名是 "user-info-server",服务提供方应用级的配置的默认路径为 "/dubbo/config/user-info-server/dubbo.properties"
-。使用以下的命令来配置样例 dubbo.properties:
-
-```bash
-zkCli create /dubbo/config; \
-zkCli create /dubbo/config/user-info-server; \
-zkCli create /dubbo/config/user-info-server/dubbo.properties; \
-zkCli set /dubbo/config/user-info-server/dubbo.properties \
-"dubbo.service.org.apache.dubbo.UserProvider.cluster=failfast
-dubbo.service.org.apache.dubbo.UserProvider.protocol=myDubbo
-dubbo.protocols.myDubbo.port=22222
-dubbo.protocols.myDubbo.name=dubbo"
-```
-
-**服务消费方配置** - 假设服务消费方的应用名是 "user-info-client",服务提供方应用级的配置的默认路径为 "/dubbo/config/user-info-client/dubbo.properties"
-。使用以下的命令来配置样例 dubbo.properties:
-
-```bash
-zkCli create /dubbo/config; \
-zkCli create /dubbo/config/user-info-client; \
-zkCli create /dubbo/config/user-info-client/dubbo.properties; \
-zkCli set /dubbo/config/user-info-client/dubbo.properties \
-"dubbo.service.org.apache.dubbo.UserProvider.cluster=failfast"
-```
-
-##### 2. 在应用中配置配置中心
-
-服务提供方与服务消费方配置配置中心的方式是一致的,如下所示:
-
-```yaml
-# config center config
-config_center:
-  protocol: "zookeeper"
-  address: "127.0.0.1:2181"
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-server" # 应用文件名,决定应用级外化配置
-```
-
-##### 3. 在代码中引入配置中心的包
-
-```go
-import (
-    _ "github.com/apache/dubbo-go/config_center/zookeeper"
-)
-```
-
-##### 4. 运行示例
-
-请参阅根目录中的 [HOWTO.md](../HOWTO_zh.md) 来运行本例。
-
-
diff --git a/configcenter/apollo/go-client/cmd/client.go b/configcenter/apollo/go-client/cmd/client.go
deleted file mode 100644
index 77c760a..0000000
--- a/configcenter/apollo/go-client/cmd/client.go
+++ /dev/null
@@ -1,66 +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 main
-
-import (
-	"context"
-	"os"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/config_center/apollo"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/configcenter/apollo/go-client/pkg"
-)
-
-var userProvider = new(pkg.UserProvider)
-
-func init() {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&pkg.User{})
-}
-
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	gxlog.CInfo("\n\n\nstart to test dubbo")
-	user := &pkg.User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-	gxlog.CInfo("response result: %v\n", user)
-}
diff --git a/configcenter/apollo/go-client/conf/client.yml b/configcenter/apollo/go-client/conf/client.yml
deleted file mode 100644
index 5b8c6c0..0000000
--- a/configcenter/apollo/go-client/conf/client.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# config center config
-config_center:
-  protocol: apollo
-  address: 127.0.0.1:8080
-  app_id: UserInfoClient
-  cluster: dev
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-client"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/configcenter/apollo/go-client/conf/log.yml b/configcenter/apollo/go-client/conf/log.yml
deleted file mode 100644
index d0400fe..0000000
--- a/configcenter/apollo/go-client/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "debug"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/configcenter/apollo/go-client/pkg/user.go b/configcenter/apollo/go-client/pkg/user.go
deleted file mode 100644
index 75c964f..0000000
--- a/configcenter/apollo/go-client/pkg/user.go
+++ /dev/null
@@ -1,42 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/configcenter/apollo/go-server/cmd/server.go b/configcenter/apollo/go-server/cmd/server.go
deleted file mode 100644
index 065abfa..0000000
--- a/configcenter/apollo/go-server/cmd/server.go
+++ /dev/null
@@ -1,81 +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 main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/logger"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/config_center/apollo"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/configcenter/apollo/go-server/pkg"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/configcenter/apollo/go-server/conf/client.yml b/configcenter/apollo/go-server/conf/client.yml
deleted file mode 100644
index 8a1bf33..0000000
--- a/configcenter/apollo/go-server/conf/client.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# config center config
-config_center:
-  protocol: apollo
-  address: 127.0.0.1:8080
-  app_id: UserInfoTest
-  cluster: dev
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-client"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/configcenter/apollo/go-server/conf/log.yml b/configcenter/apollo/go-server/conf/log.yml
deleted file mode 100644
index a75bccb..0000000
--- a/configcenter/apollo/go-server/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "error"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/configcenter/apollo/go-server/conf/server.yml b/configcenter/apollo/go-server/conf/server.yml
deleted file mode 100644
index 5053ec5..0000000
--- a/configcenter/apollo/go-server/conf/server.yml
+++ /dev/null
@@ -1,62 +0,0 @@
-# dubbo server yaml configure file
-
-# config center config
-config_center:
-  protocol: apollo
-  address: 127.0.0.1:8080
-  app_id: UserInfoServer
-  cluster: dev
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-server"
-  module: "dubbo-go user-info server"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 1
-        loadbalance: "random"
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20000
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/configcenter/apollo/go-server/docker/docker-compose.yml b/configcenter/apollo/go-server/docker/docker-compose.yml
deleted file mode 100644
index c8ecb42..0000000
--- a/configcenter/apollo/go-server/docker/docker-compose.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
-  apollo-quick-start:
-    image: nobodyiam/apollo-quick-start
-    container_name: apollo-quick-start
-    depends_on:
-      - apollo-db
-    ports:
-      - "8080:8080"
-      - "8070:8070"
-    links:
-      - apollo-db
-
-  apollo-db:
-    image: mysql:5.7
-    container_name: apollo-db
-    environment:
-      TZ: Asia/Shanghai
-      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
-    depends_on:
-      - apollo-dbdata
-    ports:
-      - "13306:3306"
-    volumes:
-      - ./sql:/docker-entrypoint-initdb.d
-    volumes_from:
-      - apollo-dbdata
-
-  apollo-dbdata:
-    image: alpine:latest
-    container_name: apollo-dbdata
-    volumes:
-      - /var/lib/mysql
\ No newline at end of file
diff --git a/configcenter/apollo/go-server/docker/sql/apolloconfigdb.sql b/configcenter/apollo/go-server/docker/sql/apolloconfigdb.sql
deleted file mode 100644
index 890519f..0000000
--- a/configcenter/apollo/go-server/docker/sql/apolloconfigdb.sql
+++ /dev/null
@@ -1,433 +0,0 @@
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
-# Create Database
-# ------------------------------------------------------------
-CREATE DATABASE IF NOT EXISTS ApolloConfigDB DEFAULT CHARACTER SET = utf8mb4;
-
-Use ApolloConfigDB;
-
-# Dump of table app
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `App`;
-
-CREATE TABLE `App` (
-  `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
-  `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-  `Name` varchar(500) NOT NULL DEFAULT 'default' COMMENT '应用名',
-  `OrgId` varchar(32) NOT NULL DEFAULT 'default' COMMENT '部门Id',
-  `OrgName` varchar(64) NOT NULL DEFAULT 'default' COMMENT '部门名字',
-  `OwnerName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerName',
-  `OwnerEmail` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerEmail',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `AppId` (`AppId`(191)),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`),
-  KEY `IX_Name` (`Name`(191))
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用表';
-
-
-
-# Dump of table appnamespace
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `AppNamespace`;
-
-CREATE TABLE `AppNamespace` (
-  `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
-  `Name` varchar(32) NOT NULL DEFAULT '' COMMENT 'namespace名字,注意,需要全局唯一',
-  `AppId` varchar(64) NOT NULL DEFAULT '' COMMENT 'app id',
-  `Format` varchar(32) NOT NULL DEFAULT 'properties' COMMENT 'namespace的format类型',
-  `IsPublic` bit(1) NOT NULL DEFAULT b'0' COMMENT 'namespace是否为公共',
-  `Comment` varchar(64) NOT NULL DEFAULT '' COMMENT '注释',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT '' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `IX_AppId` (`AppId`),
-  KEY `Name_AppId` (`Name`,`AppId`),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用namespace定义';
-
-
-
-# Dump of table audit
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Audit`;
-
-CREATE TABLE `Audit` (
-  `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
-  `EntityName` varchar(50) NOT NULL DEFAULT 'default' COMMENT '表名',
-  `EntityId` int(10) unsigned DEFAULT NULL COMMENT '记录ID',
-  `OpName` varchar(50) NOT NULL DEFAULT 'default' COMMENT '操作类型',
-  `Comment` varchar(500) DEFAULT NULL COMMENT '备注',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='日志审计表';
-
-
-
-# Dump of table cluster
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Cluster`;
-
-CREATE TABLE `Cluster` (
-  `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
-  `Name` varchar(32) NOT NULL DEFAULT '' COMMENT '集群名字',
-  `AppId` varchar(64) NOT NULL DEFAULT '' COMMENT 'App id',
-  `ParentClusterId` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '父cluster',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT '' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `IX_AppId_Name` (`AppId`,`Name`),
-  KEY `IX_ParentClusterId` (`ParentClusterId`),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='集群';
-
-
-
-# Dump of table commit
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Commit`;
-
-CREATE TABLE `Commit` (
-  `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
-  `ChangeSets` longtext NOT NULL COMMENT '修改变更集',
-  `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-  `ClusterName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ClusterName',
-  `NamespaceName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'namespaceName',
-  `Comment` varchar(500) DEFAULT NULL COMMENT '备注',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`),
-  KEY `AppId` (`AppId`(191)),
-  KEY `ClusterName` (`ClusterName`(191)),
-  KEY `NamespaceName` (`NamespaceName`(191))
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='commit 历史表';
-
-# Dump of table grayreleaserule
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `GrayReleaseRule`;
-
-CREATE TABLE `GrayReleaseRule` (
-  `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
-  `AppId` varchar(64) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-  `ClusterName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'Cluster Name',
-  `NamespaceName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'Namespace Name',
-  `BranchName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'branch name',
-  `Rules` varchar(16000) DEFAULT '[]' COMMENT '灰度规则',
-  `ReleaseId` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '灰度对应的release',
-  `BranchStatus` tinyint(2) DEFAULT '1' COMMENT '灰度分支状态: 0:删除分支,1:正在使用的规则 2:全量发布',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`),
-  KEY `IX_Namespace` (`AppId`,`ClusterName`,`NamespaceName`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='灰度规则表';
-
-
-# Dump of table instance
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Instance`;
-
-CREATE TABLE `Instance` (
-  `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-  `AppId` varchar(64) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-  `ClusterName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'ClusterName',
-  `DataCenter` varchar(64) NOT NULL DEFAULT 'default' COMMENT 'Data Center Name',
-  `Ip` varchar(32) NOT NULL DEFAULT '' COMMENT 'instance ip',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  UNIQUE KEY `IX_UNIQUE_KEY` (`AppId`,`ClusterName`,`Ip`,`DataCenter`),
-  KEY `IX_IP` (`Ip`),
-  KEY `IX_DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='使用配置的应用实例';
-
-
-
-# Dump of table instanceconfig
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `InstanceConfig`;
-
-CREATE TABLE `InstanceConfig` (
-  `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-  `InstanceId` int(11) unsigned DEFAULT NULL COMMENT 'Instance Id',
-  `ConfigAppId` varchar(64) NOT NULL DEFAULT 'default' COMMENT 'Config App Id',
-  `ConfigClusterName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'Config Cluster Name',
-  `ConfigNamespaceName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'Config Namespace Name',
-  `ReleaseKey` varchar(64) NOT NULL DEFAULT '' COMMENT '发布的Key',
-  `ReleaseDeliveryTime` timestamp NULL DEFAULT NULL COMMENT '配置获取时间',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  UNIQUE KEY `IX_UNIQUE_KEY` (`InstanceId`,`ConfigAppId`,`ConfigNamespaceName`),
-  KEY `IX_ReleaseKey` (`ReleaseKey`),
-  KEY `IX_DataChange_LastTime` (`DataChange_LastTime`),
-  KEY `IX_Valid_Namespace` (`ConfigAppId`,`ConfigClusterName`,`ConfigNamespaceName`,`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用实例的配置信息';
-
-
-
-# Dump of table item
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Item`;
-
-CREATE TABLE `Item` (
-  `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-  `NamespaceId` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '集群NamespaceId',
-  `Key` varchar(128) NOT NULL DEFAULT 'default' COMMENT '配置项Key',
-  `Value` longtext NOT NULL COMMENT '配置项值',
-  `Comment` varchar(1024) DEFAULT '' COMMENT '注释',
-  `LineNum` int(10) unsigned DEFAULT '0' COMMENT '行号',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `IX_GroupId` (`NamespaceId`),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置项目';
-
-
-
-# Dump of table namespace
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Namespace`;
-
-CREATE TABLE `Namespace` (
-  `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
-  `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-  `ClusterName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'Cluster Name',
-  `NamespaceName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'Namespace Name',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `AppId_ClusterName_NamespaceName` (`AppId`(191),`ClusterName`(191),`NamespaceName`(191)),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`),
-  KEY `IX_NamespaceName` (`NamespaceName`(191))
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='命名空间';
-
-
-
-# Dump of table namespacelock
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `NamespaceLock`;
-
-CREATE TABLE `NamespaceLock` (
-  `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
-  `NamespaceId` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '集群NamespaceId',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT 'default' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  `IsDeleted` bit(1) DEFAULT b'0' COMMENT '软删除',
-  PRIMARY KEY (`Id`),
-  UNIQUE KEY `IX_NamespaceId` (`NamespaceId`),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='namespace的编辑锁';
-
-
-
-# Dump of table release
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Release`;
-
-CREATE TABLE `Release` (
-  `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
-  `ReleaseKey` varchar(64) NOT NULL DEFAULT '' COMMENT '发布的Key',
-  `Name` varchar(64) NOT NULL DEFAULT 'default' COMMENT '发布名字',
-  `Comment` varchar(256) DEFAULT NULL COMMENT '发布说明',
-  `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-  `ClusterName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ClusterName',
-  `NamespaceName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'namespaceName',
-  `Configurations` longtext NOT NULL COMMENT '发布配置',
-  `IsAbandoned` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否废弃',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `AppId_ClusterName_GroupName` (`AppId`(191),`ClusterName`(191),`NamespaceName`(191)),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`),
-  KEY `IX_ReleaseKey` (`ReleaseKey`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发布';
-
-
-# Dump of table releasehistory
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `ReleaseHistory`;
-
-CREATE TABLE `ReleaseHistory` (
-  `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-  `AppId` varchar(64) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-  `ClusterName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'ClusterName',
-  `NamespaceName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'namespaceName',
-  `BranchName` varchar(32) NOT NULL DEFAULT 'default' COMMENT '发布分支名',
-  `ReleaseId` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '关联的Release Id',
-  `PreviousReleaseId` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '前一次发布的ReleaseId',
-  `Operation` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '发布类型,0: 普通发布,1: 回滚,2: 灰度发布,3: 灰度规则更新,4: 灰度合并回主分支发布,5: 主分支发布灰度自动发布,6: 主分支回滚灰度自动发布,7: 放弃灰度',
-  `OperationContext` longtext NOT NULL COMMENT '发布上下文信息',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `IX_Namespace` (`AppId`,`ClusterName`,`NamespaceName`,`BranchName`),
-  KEY `IX_ReleaseId` (`ReleaseId`),
-  KEY `IX_DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发布历史';
-
-
-# Dump of table releasemessage
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `ReleaseMessage`;
-
-CREATE TABLE `ReleaseMessage` (
-  `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
-  `Message` varchar(1024) NOT NULL DEFAULT '' COMMENT '发布的消息内容',
-  `DataChange_LastTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`),
-  KEY `IX_Message` (`Message`(191))
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发布消息';
-
-
-
-# Dump of table serverconfig
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `ServerConfig`;
-
-CREATE TABLE `ServerConfig` (
-  `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-  `Key` varchar(64) NOT NULL DEFAULT 'default' COMMENT '配置项Key',
-  `Cluster` varchar(32) NOT NULL DEFAULT 'default' COMMENT '配置对应的集群,default为不针对特定的集群',
-  `Value` varchar(2048) NOT NULL DEFAULT 'default' COMMENT '配置项值',
-  `Comment` varchar(1024) DEFAULT '' COMMENT '注释',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `IX_Key` (`Key`),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置服务自身配置';
-
-# Dump of table accesskey
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `AccessKey`;
-
-CREATE TABLE `AccessKey` (
-  `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
-  `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-  `Secret` varchar(128) NOT NULL DEFAULT '' COMMENT 'Secret',
-  `IsEnabled` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: enabled, 0: disabled',
-  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-  `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `DataChange_LastModifiedBy` varchar(32) NOT NULL DEFAULT '' COMMENT '最后修改人邮箱前缀',
-  `DataChange_LastTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-  PRIMARY KEY (`Id`),
-  KEY `AppId` (`AppId`(191)),
-  KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='访问密钥';
-
-# Config
-# ------------------------------------------------------------
-INSERT INTO `ServerConfig` (`Key`, `Cluster`, `Value`, `Comment`)
-VALUES
-    ('eureka.service.url', 'default', 'http://localhost:8080/eureka/', 'Eureka服务Url,多个service以英文逗号分隔'),
-    ('namespace.lock.switch', 'default', 'false', '一次发布只能有一个人修改开关'),
-    ('item.value.length.limit', 'default', '20000', 'item value最大长度限制'),
-    ('config-service.cache.enabled', 'default', 'false', 'ConfigService是否开启缓存,开启后能提高性能,但是会增大内存消耗!'),
-    ('item.key.length.limit', 'default', '128', 'item key 最大长度限制');
-
-# Sample Data
-# ------------------------------------------------------------
-INSERT INTO `App` (`AppId`, `Name`, `OrgId`, `OrgName`, `OwnerName`, `OwnerEmail`)
-VALUES
-	('SampleApp', 'Sample App', 'TEST1', '样例部门1', 'apollo', 'apollo@acme.com');
-
-INSERT INTO `AppNamespace` (`Name`, `AppId`, `Format`, `IsPublic`, `Comment`)
-VALUES
-	('application', 'SampleApp', 'properties', 0, 'default app namespace');
-
-INSERT INTO `Cluster` (`Name`, `AppId`)
-VALUES
-	('default', 'SampleApp');
-
-INSERT INTO `Namespace` (`Id`, `AppId`, `ClusterName`, `NamespaceName`)
-VALUES
-	(1, 'SampleApp', 'default', 'application');
-
-
-INSERT INTO `Item` (`NamespaceId`, `Key`, `Value`, `Comment`, `LineNum`)
-VALUES
-	(1, 'timeout', '100', 'sample timeout配置', 1);
-
-INSERT INTO `Release` (`ReleaseKey`, `Name`, `Comment`, `AppId`, `ClusterName`, `NamespaceName`, `Configurations`)
-VALUES
-	('20161009155425-d3a0749c6e20bc15', '20161009155424-release', 'Sample发布', 'SampleApp', 'default', 'application', '{\"timeout\":\"100\"}');
-
-INSERT INTO `ReleaseHistory` (`AppId`, `ClusterName`, `NamespaceName`, `BranchName`, `ReleaseId`, `PreviousReleaseId`, `Operation`, `OperationContext`, `DataChange_CreatedBy`, `DataChange_LastModifiedBy`)
-VALUES
-  ('SampleApp', 'default', 'application', 'default', 1, 0, 0, '{}', 'apollo', 'apollo');
-
-INSERT INTO `ReleaseMessage` (`Message`)
-VALUES
-	('SampleApp+default+application');
-
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
\ No newline at end of file
diff --git a/configcenter/apollo/go-server/docker/sql/apolloportaldb.sql b/configcenter/apollo/go-server/docker/sql/apolloportaldb.sql
deleted file mode 100644
index adbe664..0000000
--- a/configcenter/apollo/go-server/docker/sql/apolloportaldb.sql
+++ /dev/null
@@ -1,368 +0,0 @@
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
-# Create Database
-# ------------------------------------------------------------
-CREATE DATABASE IF NOT EXISTS ApolloPortalDB DEFAULT CHARACTER SET = utf8mb4;
-
-Use ApolloPortalDB;
-
-# Dump of table app
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `App`;
-
-CREATE TABLE `App` (
-                       `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
-                       `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-                       `Name` varchar(500) NOT NULL DEFAULT 'default' COMMENT '应用名',
-                       `OrgId` varchar(32) NOT NULL DEFAULT 'default' COMMENT '部门Id',
-                       `OrgName` varchar(64) NOT NULL DEFAULT 'default' COMMENT '部门名字',
-                       `OwnerName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerName',
-                       `OwnerEmail` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerEmail',
-                       `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                       `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-                       `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                       `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                       `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                       PRIMARY KEY (`Id`),
-                       KEY `AppId` (`AppId`(191)),
-                       KEY `DataChange_LastTime` (`DataChange_LastTime`),
-                       KEY `IX_Name` (`Name`(191))
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用表';
-
-
-
-# Dump of table appnamespace
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `AppNamespace`;
-
-CREATE TABLE `AppNamespace` (
-                                `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
-                                `Name` varchar(32) NOT NULL DEFAULT '' COMMENT 'namespace名字,注意,需要全局唯一',
-                                `AppId` varchar(64) NOT NULL DEFAULT '' COMMENT 'app id',
-                                `Format` varchar(32) NOT NULL DEFAULT 'properties' COMMENT 'namespace的format类型',
-                                `IsPublic` bit(1) NOT NULL DEFAULT b'0' COMMENT 'namespace是否为公共',
-                                `Comment` varchar(64) NOT NULL DEFAULT '' COMMENT '注释',
-                                `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                                `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT '' COMMENT '创建人邮箱前缀',
-                                `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                                `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                                `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                                PRIMARY KEY (`Id`),
-                                KEY `IX_AppId` (`AppId`),
-                                KEY `Name_AppId` (`Name`,`AppId`),
-                                KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用namespace定义';
-
-
-
-# Dump of table consumer
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Consumer`;
-
-CREATE TABLE `Consumer` (
-                            `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                            `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-                            `Name` varchar(500) NOT NULL DEFAULT 'default' COMMENT '应用名',
-                            `OrgId` varchar(32) NOT NULL DEFAULT 'default' COMMENT '部门Id',
-                            `OrgName` varchar(64) NOT NULL DEFAULT 'default' COMMENT '部门名字',
-                            `OwnerName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerName',
-                            `OwnerEmail` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerEmail',
-                            `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                            `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-                            `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                            `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                            `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                            PRIMARY KEY (`Id`),
-                            KEY `AppId` (`AppId`(191)),
-                            KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='开放API消费者';
-
-
-
-# Dump of table consumeraudit
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `ConsumerAudit`;
-
-CREATE TABLE `ConsumerAudit` (
-                                 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                                 `ConsumerId` int(11) unsigned DEFAULT NULL COMMENT 'Consumer Id',
-                                 `Uri` varchar(1024) NOT NULL DEFAULT '' COMMENT '访问的Uri',
-                                 `Method` varchar(16) NOT NULL DEFAULT '' COMMENT '访问的Method',
-                                 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                                 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                                 PRIMARY KEY (`Id`),
-                                 KEY `IX_DataChange_LastTime` (`DataChange_LastTime`),
-                                 KEY `IX_ConsumerId` (`ConsumerId`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='consumer审计表';
-
-
-
-# Dump of table consumerrole
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `ConsumerRole`;
-
-CREATE TABLE `ConsumerRole` (
-                                `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                                `ConsumerId` int(11) unsigned DEFAULT NULL COMMENT 'Consumer Id',
-                                `RoleId` int(10) unsigned DEFAULT NULL COMMENT 'Role Id',
-                                `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                                `DataChange_CreatedBy` varchar(32) DEFAULT '' COMMENT '创建人邮箱前缀',
-                                `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                                `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                                `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                                PRIMARY KEY (`Id`),
-                                KEY `IX_DataChange_LastTime` (`DataChange_LastTime`),
-                                KEY `IX_RoleId` (`RoleId`),
-                                KEY `IX_ConsumerId_RoleId` (`ConsumerId`,`RoleId`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='consumer和role的绑定表';
-
-
-
-# Dump of table consumertoken
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `ConsumerToken`;
-
-CREATE TABLE `ConsumerToken` (
-                                 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                                 `ConsumerId` int(11) unsigned DEFAULT NULL COMMENT 'ConsumerId',
-                                 `Token` varchar(128) NOT NULL DEFAULT '' COMMENT 'token',
-                                 `Expires` datetime NOT NULL DEFAULT '2099-01-01 00:00:00' COMMENT 'token失效时间',
-                                 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                                 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-                                 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                                 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                                 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                                 PRIMARY KEY (`Id`),
-                                 UNIQUE KEY `IX_Token` (`Token`),
-                                 KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='consumer token表';
-
-# Dump of table favorite
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Favorite`;
-
-CREATE TABLE `Favorite` (
-                            `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
-                            `UserId` varchar(32) NOT NULL DEFAULT 'default' COMMENT '收藏的用户',
-                            `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
-                            `Position` int(32) NOT NULL DEFAULT '10000' COMMENT '收藏顺序',
-                            `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                            `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-                            `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                            `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                            `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                            PRIMARY KEY (`Id`),
-                            KEY `AppId` (`AppId`(191)),
-                            KEY `IX_UserId` (`UserId`),
-                            KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4 COMMENT='应用收藏表';
-
-# Dump of table permission
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Permission`;
-
-CREATE TABLE `Permission` (
-                              `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                              `PermissionType` varchar(32) NOT NULL DEFAULT '' COMMENT '权限类型',
-                              `TargetId` varchar(256) NOT NULL DEFAULT '' COMMENT '权限对象类型',
-                              `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                              `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT '' COMMENT '创建人邮箱前缀',
-                              `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                              `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                              `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                              PRIMARY KEY (`Id`),
-                              KEY `IX_TargetId_PermissionType` (`TargetId`(191),`PermissionType`),
-                              KEY `IX_DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='permission表';
-
-
-
-# Dump of table role
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Role`;
-
-CREATE TABLE `Role` (
-                        `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                        `RoleName` varchar(256) NOT NULL DEFAULT '' COMMENT 'Role name',
-                        `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                        `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-                        `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                        `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                        `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                        PRIMARY KEY (`Id`),
-                        KEY `IX_RoleName` (`RoleName`(191)),
-                        KEY `IX_DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
-
-
-
-# Dump of table rolepermission
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `RolePermission`;
-
-CREATE TABLE `RolePermission` (
-                                  `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                                  `RoleId` int(10) unsigned DEFAULT NULL COMMENT 'Role Id',
-                                  `PermissionId` int(10) unsigned DEFAULT NULL COMMENT 'Permission Id',
-                                  `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                                  `DataChange_CreatedBy` varchar(32) DEFAULT '' COMMENT '创建人邮箱前缀',
-                                  `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                                  `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                                  `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                                  PRIMARY KEY (`Id`),
-                                  KEY `IX_DataChange_LastTime` (`DataChange_LastTime`),
-                                  KEY `IX_RoleId` (`RoleId`),
-                                  KEY `IX_PermissionId` (`PermissionId`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色和权限的绑定表';
-
-
-
-# Dump of table serverconfig
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `ServerConfig`;
-
-CREATE TABLE `ServerConfig` (
-                                `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                                `Key` varchar(64) NOT NULL DEFAULT 'default' COMMENT '配置项Key',
-                                `Value` varchar(2048) NOT NULL DEFAULT 'default' COMMENT '配置项值',
-                                `Comment` varchar(1024) DEFAULT '' COMMENT '注释',
-                                `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                                `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
-                                `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                                `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                                `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                                PRIMARY KEY (`Id`),
-                                KEY `IX_Key` (`Key`),
-                                KEY `DataChange_LastTime` (`DataChange_LastTime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置服务自身配置';
-
-
-
-# Dump of table userrole
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `UserRole`;
-
-CREATE TABLE `UserRole` (
-                            `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                            `UserId` varchar(128) DEFAULT '' COMMENT '用户身份标识',
-                            `RoleId` int(10) unsigned DEFAULT NULL COMMENT 'Role Id',
-                            `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
-                            `DataChange_CreatedBy` varchar(32) DEFAULT '' COMMENT '创建人邮箱前缀',
-                            `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-                            `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
-                            `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
-                            PRIMARY KEY (`Id`),
-                            KEY `IX_DataChange_LastTime` (`DataChange_LastTime`),
-                            KEY `IX_RoleId` (`RoleId`),
-                            KEY `IX_UserId_RoleId` (`UserId`,`RoleId`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户和role的绑定表';
-
-# Dump of table Users
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Users`;
-
-CREATE TABLE `Users` (
-                         `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                         `Username` varchar(64) NOT NULL DEFAULT 'default' COMMENT '用户名',
-                         `Password` varchar(64) NOT NULL DEFAULT 'default' COMMENT '密码',
-                         `Email` varchar(64) NOT NULL DEFAULT 'default' COMMENT '邮箱地址',
-                         `Enabled` tinyint(4) DEFAULT NULL COMMENT '是否有效',
-                         PRIMARY KEY (`Id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
-
-
-# Dump of table Authorities
-# ------------------------------------------------------------
-
-DROP TABLE IF EXISTS `Authorities`;
-
-CREATE TABLE `Authorities` (
-                               `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
-                               `Username` varchar(64) NOT NULL,
-                               `Authority` varchar(50) NOT NULL,
-                               PRIMARY KEY (`Id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-
-# Config
-# ------------------------------------------------------------
-INSERT INTO `ServerConfig` (`Key`, `Value`, `Comment`)
-VALUES
-('apollo.portal.envs', 'dev', '可支持的环境列表'),
-('organizations', '[{\"orgId\":\"TEST1\",\"orgName\":\"样例部门1\"},{\"orgId\":\"TEST2\",\"orgName\":\"样例部门2\"}]', '部门列表'),
-('superAdmin', 'apollo', 'Portal超级管理员'),
-('api.readTimeout', '10000', 'http接口read timeout'),
-('consumer.token.salt', 'someSalt', 'consumer token salt'),
-('admin.createPrivateNamespace.switch', 'true', '是否允许项目管理员创建私有namespace'),
-('configView.memberOnly.envs', 'dev', '只对项目成员显示配置信息的环境列表,多个env以英文逗号分隔'),
-('apollo.portal.meta.servers', '{}', '各环境Meta Service列表');
-
-INSERT INTO `Users` (`Username`, `Password`, `Email`, `Enabled`)
-VALUES
-('apollo', '$2a$10$7r20uS.BQ9uBpf3Baj3uQOZvMVvB1RN3PYoKE94gtz2.WAOuiiwXS', 'apollo@acme.com', 1);
-
-INSERT INTO `Authorities` (`Username`, `Authority`) VALUES ('apollo', 'ROLE_user');
-
-# Sample Data
-# ------------------------------------------------------------
-INSERT INTO `App` (`AppId`, `Name`, `OrgId`, `OrgName`, `OwnerName`, `OwnerEmail`)
-VALUES
-('SampleApp', 'Sample App', 'TEST1', '样例部门1', 'apollo', 'apollo@acme.com');
-
-INSERT INTO `AppNamespace` (`Name`, `AppId`, `Format`, `IsPublic`, `Comment`)
-VALUES
-('application', 'SampleApp', 'properties', 0, 'default app namespace');
-
-INSERT INTO `Permission` (`Id`, `PermissionType`, `TargetId`)
-VALUES
-(1, 'CreateCluster', 'SampleApp'),
-(2, 'CreateNamespace', 'SampleApp'),
-(3, 'AssignRole', 'SampleApp'),
-(4, 'ModifyNamespace', 'SampleApp+application'),
-(5, 'ReleaseNamespace', 'SampleApp+application');
-
-INSERT INTO `Role` (`Id`, `RoleName`)
-VALUES
-(1, 'Master+SampleApp'),
-(2, 'ModifyNamespace+SampleApp+application'),
-(3, 'ReleaseNamespace+SampleApp+application');
-
-INSERT INTO `RolePermission` (`RoleId`, `PermissionId`)
-VALUES
-(1, 1),
-(1, 2),
-(1, 3),
-(2, 4),
-(3, 5);
-
-INSERT INTO `UserRole` (`UserId`, `RoleId`)
-VALUES
-('apollo', 1),
-('apollo', 2),
-('apollo', 3);
-
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
\ No newline at end of file
diff --git a/configcenter/apollo/go-server/pkg/user.go b/configcenter/apollo/go-server/pkg/user.go
deleted file mode 100644
index 2759d19..0000000
--- a/configcenter/apollo/go-server/pkg/user.go
+++ /dev/null
@@ -1,60 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
-	"github.com/dubbogo/gost/log"
-)
-
-func init() {
-	config.SetProviderService(new(UserProvider))
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18, time.Now()}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/configcenter/apollo/go-server/tests/integration/main_test.go b/configcenter/apollo/go-server/tests/integration/main_test.go
deleted file mode 100644
index ed006cd..0000000
--- a/configcenter/apollo/go-server/tests/integration/main_test.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/config_center/apollo"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-var userProvider = new(UserProvider)
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/configcenter/apollo/go-server/tests/integration/userprovider_test.go b/configcenter/apollo/go-server/tests/integration/userprovider_test.go
deleted file mode 100644
index 625a907..0000000
--- a/configcenter/apollo/go-server/tests/integration/userprovider_test.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"testing"
-)
-
-import (
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetUser(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	assert.Nil(t, err)
-	assert.Equal(t, "A001", user.Id)
-	assert.Equal(t, "Alex Stocks", user.Name)
-	assert.Equal(t, int32(18), user.Age)
-	assert.NotNil(t, user.Time)
-}
diff --git a/configcenter/nacos/go-client/cmd/client.go b/configcenter/nacos/go-client/cmd/client.go
deleted file mode 100644
index bc2c501..0000000
--- a/configcenter/nacos/go-client/cmd/client.go
+++ /dev/null
@@ -1,66 +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 main
-
-import (
-	"context"
-	"os"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/config_center/nacos"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/configcenter/nacos/go-client/pkg"
-)
-
-var userProvider = new(pkg.UserProvider)
-
-func init() {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&pkg.User{})
-}
-
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	gxlog.CInfo("\n\n\nstart to test dubbo")
-	user := &pkg.User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-	gxlog.CInfo("response result: %v\n", user)
-}
diff --git a/configcenter/nacos/go-client/conf/client.yml b/configcenter/nacos/go-client/conf/client.yml
deleted file mode 100644
index 623d92d..0000000
--- a/configcenter/nacos/go-client/conf/client.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# config center config
-config_center:
-  protocol: "nacos"
-  address: "127.0.0.1:8848"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-client"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/configcenter/nacos/go-client/conf/log.yml b/configcenter/nacos/go-client/conf/log.yml
deleted file mode 100644
index d0400fe..0000000
--- a/configcenter/nacos/go-client/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "debug"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/configcenter/nacos/go-client/pkg/user.go b/configcenter/nacos/go-client/pkg/user.go
deleted file mode 100644
index 75c964f..0000000
--- a/configcenter/nacos/go-client/pkg/user.go
+++ /dev/null
@@ -1,42 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/configcenter/nacos/go-server/cmd/server.go b/configcenter/nacos/go-server/cmd/server.go
deleted file mode 100644
index e522d04..0000000
--- a/configcenter/nacos/go-server/cmd/server.go
+++ /dev/null
@@ -1,79 +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 main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/logger"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/config_center/nacos"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/configcenter/nacos/go-server/pkg"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/configcenter/nacos/go-server/conf/client.yml b/configcenter/nacos/go-server/conf/client.yml
deleted file mode 100644
index 623d92d..0000000
--- a/configcenter/nacos/go-server/conf/client.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# config center config
-config_center:
-  protocol: "nacos"
-  address: "127.0.0.1:8848"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-client"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/configcenter/nacos/go-server/conf/log.yml b/configcenter/nacos/go-server/conf/log.yml
deleted file mode 100644
index a75bccb..0000000
--- a/configcenter/nacos/go-server/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "error"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/configcenter/nacos/go-server/conf/server.yml b/configcenter/nacos/go-server/conf/server.yml
deleted file mode 100644
index dbea78e..0000000
--- a/configcenter/nacos/go-server/conf/server.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-# dubbo server yaml configure file
-
-# config center config
-config_center:
-  protocol: "nacos"
-  address: "127.0.0.1:8848"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-server"
-  module: "dubbo-go user-info server"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 1
-        loadbalance: "random"
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20000
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/configcenter/nacos/go-server/docker/docker-compose.yml b/configcenter/nacos/go-server/docker/docker-compose.yml
deleted file mode 100644
index 83e1311..0000000
--- a/configcenter/nacos/go-server/docker/docker-compose.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
-  nacos:
-    image: nacos/nacos-server:latest
-    container_name: nacos-standalone
-    environment:
-      - PREFER_HOST_MODE=hostname
-      - MODE=standalone
-    ports:
-      - "8848:8848"
\ No newline at end of file
diff --git a/configcenter/nacos/go-server/pkg/user.go b/configcenter/nacos/go-server/pkg/user.go
deleted file mode 100644
index 2759d19..0000000
--- a/configcenter/nacos/go-server/pkg/user.go
+++ /dev/null
@@ -1,60 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
-	"github.com/dubbogo/gost/log"
-)
-
-func init() {
-	config.SetProviderService(new(UserProvider))
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18, time.Now()}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/configcenter/nacos/go-server/tests/integration/main_test.go b/configcenter/nacos/go-server/tests/integration/main_test.go
deleted file mode 100644
index 0de5a14..0000000
--- a/configcenter/nacos/go-server/tests/integration/main_test.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/config_center/nacos"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-var userProvider = new(UserProvider)
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/configcenter/nacos/go-server/tests/integration/userprovider_test.go b/configcenter/nacos/go-server/tests/integration/userprovider_test.go
deleted file mode 100644
index 625a907..0000000
--- a/configcenter/nacos/go-server/tests/integration/userprovider_test.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"testing"
-)
-
-import (
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetUser(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	assert.Nil(t, err)
-	assert.Equal(t, "A001", user.Id)
-	assert.Equal(t, "Alex Stocks", user.Name)
-	assert.Equal(t, int32(18), user.Age)
-	assert.NotNil(t, user.Time)
-}
diff --git a/configcenter/zookeeper/go-client/cmd/client.go b/configcenter/zookeeper/go-client/cmd/client.go
deleted file mode 100644
index 45b619d..0000000
--- a/configcenter/zookeeper/go-client/cmd/client.go
+++ /dev/null
@@ -1,66 +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 main
-
-import (
-	"context"
-	"os"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/config_center/zookeeper"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/configcenter/zookeeper/go-client/pkg"
-)
-
-var userProvider = new(pkg.UserProvider)
-
-func init() {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&pkg.User{})
-}
-
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	gxlog.CInfo("\n\n\nstart to test dubbo")
-	user := &pkg.User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-	gxlog.CInfo("response result: %v\n", user)
-}
diff --git a/configcenter/zookeeper/go-client/conf/client.yml b/configcenter/zookeeper/go-client/conf/client.yml
deleted file mode 100644
index b9716cd..0000000
--- a/configcenter/zookeeper/go-client/conf/client.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# config center config
-config_center:
-  protocol: "zookeeper"
-  address: "127.0.0.1:2181"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-client"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/configcenter/zookeeper/go-client/conf/log.yml b/configcenter/zookeeper/go-client/conf/log.yml
deleted file mode 100644
index d0400fe..0000000
--- a/configcenter/zookeeper/go-client/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "debug"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/configcenter/zookeeper/go-client/pkg/user.go b/configcenter/zookeeper/go-client/pkg/user.go
deleted file mode 100644
index 75c964f..0000000
--- a/configcenter/zookeeper/go-client/pkg/user.go
+++ /dev/null
@@ -1,42 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/configcenter/zookeeper/go-server/cmd/server.go b/configcenter/zookeeper/go-server/cmd/server.go
deleted file mode 100644
index 9e0422e..0000000
--- a/configcenter/zookeeper/go-server/cmd/server.go
+++ /dev/null
@@ -1,79 +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 main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/logger"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/config_center/zookeeper"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/configcenter/zookeeper/go-server/pkg"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/configcenter/zookeeper/go-server/conf/client.yml b/configcenter/zookeeper/go-server/conf/client.yml
deleted file mode 100644
index 407189e..0000000
--- a/configcenter/zookeeper/go-server/conf/client.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# config center config
-config_center:
-  protocol: "zookeeper"
-  address: "127.0.0.1:2181"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-client"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/configcenter/zookeeper/go-server/conf/log.yml b/configcenter/zookeeper/go-server/conf/log.yml
deleted file mode 100644
index a75bccb..0000000
--- a/configcenter/zookeeper/go-server/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "error"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/configcenter/zookeeper/go-server/conf/server.yml b/configcenter/zookeeper/go-server/conf/server.yml
deleted file mode 100644
index 2a81a1c..0000000
--- a/configcenter/zookeeper/go-server/conf/server.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-# dubbo server yaml configure file
-
-# config center config
-config_center:
-  protocol: "zookeeper"
-  address: "127.0.0.1:2181"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "user-info-server"
-  module: "dubbo-go user-info server"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 1
-        loadbalance: "random"
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20000
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/configcenter/zookeeper/go-server/docker/docker-compose.yml b/configcenter/zookeeper/go-server/docker/docker-compose.yml
deleted file mode 100644
index 386a42e..0000000
--- a/configcenter/zookeeper/go-server/docker/docker-compose.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
\ No newline at end of file
diff --git a/configcenter/zookeeper/go-server/pkg/user.go b/configcenter/zookeeper/go-server/pkg/user.go
deleted file mode 100644
index 2759d19..0000000
--- a/configcenter/zookeeper/go-server/pkg/user.go
+++ /dev/null
@@ -1,60 +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 pkg
-
-import (
-	"context"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
-	"github.com/dubbogo/gost/log"
-)
-
-func init() {
-	config.SetProviderService(new(UserProvider))
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18, time.Now()}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/configcenter/zookeeper/go-server/tests/integration/main_test.go b/configcenter/zookeeper/go-server/tests/integration/main_test.go
deleted file mode 100644
index 83577b6..0000000
--- a/configcenter/zookeeper/go-server/tests/integration/main_test.go
+++ /dev/null
@@ -1,70 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/config_center/zookeeper"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-var userProvider = new(UserProvider)
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/configcenter/zookeeper/go-server/tests/integration/userprovider_test.go b/configcenter/zookeeper/go-server/tests/integration/userprovider_test.go
deleted file mode 100644
index 625a907..0000000
--- a/configcenter/zookeeper/go-server/tests/integration/userprovider_test.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"testing"
-)
-
-import (
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetUser(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	assert.Nil(t, err)
-	assert.Equal(t, "A001", user.Id)
-	assert.Equal(t, "Alex Stocks", user.Name)
-	assert.Equal(t, int32(18), user.Age)
-	assert.NotNil(t, user.Time)
-}
diff --git a/context/README.md b/context/README.md
deleted file mode 100644
index c13da25..0000000
--- a/context/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# Dubbo-go context Usage 
-### 1. Introduction
-
-Context in server end can be used to read specific field that dubbo-go framework provided by default.\
-It can also used to transfer base-type of golang, even 
-
-### 2. How to get dubbo-go default field
-You can get dubbo attachment in this way:
-```go
-ctxAtta := ctx.Value(constant.DubboCtxKey("attachment")).(map[string]interface{})
-	rsp := ContextContent{
-		Path:          ctxAtta["path"].(string),
-		InterfaceName: ctxAtta["interface"].(string),
-		DubboVersion:  ctxAtta["dubbo"].(string),
-		LocalAddr:     ctxAtta["local-addr"].(string),
-		RemoteAddr:    ctxAtta["remote-addr"].(string),
-	}
-```
-
-### 3. Transfer value you want from client to server
-Client end\
-As demo in go-client/cliemt.go shows
-```go
-    // create requset context
-    rspContent := &pkg.ContextContent{}
-
-    // create attachment, which must be map[string]interface{}
-	atta := make(map[string]interface{})
-    // add fields you like
-	atta["string-value"] = "string-demo"
-	atta["int-value"] = 1231242
-    // make sure the UserDefined Pkg is registered to hessian2
-	atta["user-defined-value"] = pkg.ContextContent{InterfaceName: "test.interface.name"}
-
-    // invoke with your context
-	reqContext := context.WithValue(context.Background(), constant.DubboCtxKey("attachment"), atta)
-	err := userProvider.GetContext(reqContext, []interface{}{"A001"}, rspContent)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-	gxlog.CInfo("response result: %+v\n", rspContent)
-```
-Server end:\
-As demo in go-server/server.go shows
-```go
-    // get attachment from ctx
-    ctxAtta := ctx.Value(constant.DubboCtxKey("attachment")).(map[string]interface{})
-    
-    // get user defined struct from attachment
-	userDefinedval := ctxAtta["user-defined-value"].(*ContextContent)
-    
-    // get value you sent
-	intValue := ctxAtta["int-value"].(int64),
-```
-
-Pls. refer to [HOWTO.md](../HOWTO.md) under the root directory to run this sample.
\ No newline at end of file
diff --git a/context/README_zh.md b/context/README_zh.md
deleted file mode 100644
index fa0cb05..0000000
--- a/context/README_zh.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# Dubbo-go context 使用demo 
-### 1. 介绍
-
-可以在服务端使用context读取dubbo-go框架默认提供的字段。
-
-也可以使用ctx从客户端传递用户希望传递的字段到服务端。
-
-### 2. 如何获取dubbogo提供的默认字段
-你可以获取dubbo attachement 字段:
-```go
-ctxAtta := ctx.Value(constant.DubboCtxKey("attachment")).(map[string]interface{})
-	rsp := ContextContent{
-		Path:          ctxAtta["path"].(string),
-		InterfaceName: ctxAtta["interface"].(string),
-		DubboVersion:  ctxAtta["dubbo"].(string),
-		LocalAddr:     ctxAtta["local-addr"].(string),
-		RemoteAddr:    ctxAtta["remote-addr"].(string),
-	}
-```
-
-### 3. 从客户端通过context传递你想要的字段
-- 客户端
-  如样例 go-client/cliemt.go 所展示:
-
-```go
-    // 创建request
-    rspContent := &pkg.ContextContent{}
-
-    // 创建 attachment, 类型必须为 map[string]interface{}
-	atta := make(map[string]interface{})
-    // 添加你想传递的字段
-	atta["string-value"] = "string-demo"
-	atta["int-value"] = 1231242
-    // 需要保证你想传递的结构体提前被注册在了hessian2上
-	atta["user-defined-value"] = pkg.ContextContent{InterfaceName: "test.interface.name"}
-
-    // 使用构建好字段的context作为request context
-	reqContext := context.WithValue(context.Background(), constant.DubboCtxKey("attachment"), atta)
-	err := userProvider.GetContext(reqContext, []interface{}{"A001"}, rspContent)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-	gxlog.CInfo("response result: %+v\n", rspContent)
-```
-- 服务端:
-  如样例在 go-server/server.go 所展示
-
-```go
-    // 从ctx 获取 attachment
-    ctxAtta := ctx.Value(constant.DubboCtxKey("attachment")).(map[string]interface{})
-    
-    // 从ctx获取用户自定义结构体
-	userDefinedval := ctxAtta["user-defined-value"].(*ContextContent)
-    
-    // 获取特定字段值
-	intValue := ctxAtta["int-value"].(int64),
-```
-
-请参阅根目录中的 [HOWTO.md](../HOWTO_zh.md) 来运行本例。
-
-
diff --git a/context/go-client/cmd/client.go b/context/go-client/cmd/client.go
deleted file mode 100644
index 484c1da..0000000
--- a/context/go-client/cmd/client.go
+++ /dev/null
@@ -1,71 +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 main
-
-import (
-	"context"
-	"os"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/constant"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/context/go-client/pkg"
-)
-
-var userProvider = new(pkg.UserProvider)
-
-func init() {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&pkg.ContextContent{})
-}
-
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.ContextContent{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	gxlog.CInfo("\n\n\nstart to test dubbo")
-	rspContent := &pkg.ContextContent{}
-	atta := make(map[string]interface{})
-	atta["string-value"] = "string-demo"
-	atta["int-value"] = 1231242
-	atta["user-defined-value"] = pkg.ContextContent{InterfaceName: "test.interface.name"}
-	reqContext := context.WithValue(context.Background(), constant.DubboCtxKey("attachment"), atta)
-	err := userProvider.GetContext(reqContext, []interface{}{"A001"}, rspContent)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-	gxlog.CInfo("response result: %+v\n", rspContent)
-}
diff --git a/context/go-client/conf/client.yml b/context/go-client/conf/client.yml
deleted file mode 100644
index 6af64f6..0000000
--- a/context/go-client/conf/client.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserInfoClient"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetContext"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/context/go-client/conf/log.yml b/context/go-client/conf/log.yml
deleted file mode 100644
index 2b6e93a..0000000
--- a/context/go-client/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "debug"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/context/go-client/pkg/user.go b/context/go-client/pkg/user.go
deleted file mode 100644
index 32d6eac..0000000
--- a/context/go-client/pkg/user.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 pkg
-
-import (
-	"context"
-)
-
-type ContextContent struct {
-	Path              string
-	InterfaceName     string
-	DubboVersion      string
-	LocalAddr         string
-	RemoteAddr        string
-	UserDefinedStrVal string
-	CtxStrVal         string
-	CtxIntVal         int64
-}
-
-type UserProvider struct {
-	GetContext func(ctx context.Context, req []interface{}, rsp *ContextContent) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (ContextContent) JavaClassName() string {
-	return "org.apache.dubbo.ContextContent"
-}
diff --git a/context/go-server/cmd/server.go b/context/go-server/cmd/server.go
deleted file mode 100644
index 086f46c..0000000
--- a/context/go-server/cmd/server.go
+++ /dev/null
@@ -1,78 +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 main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	"github.com/apache/dubbo-go/common/logger"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/context/go-server/pkg"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.ContextContent{})
-	config.Load()
-
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/context/go-server/conf/client.yml b/context/go-server/conf/client.yml
deleted file mode 100644
index 3e547b4..0000000
--- a/context/go-server/conf/client.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserInfoTest"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetContext"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/context/go-server/conf/log.yml b/context/go-server/conf/log.yml
deleted file mode 100644
index 970d988..0000000
--- a/context/go-server/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "error"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/context/go-server/conf/server.yml b/context/go-server/conf/server.yml
deleted file mode 100644
index 55354ee..0000000
--- a/context/go-server/conf/server.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserInfoServer"
-  module: "dubbo-go user-info server"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-      - name: "GetContext"
-        retries: 1
-        loadbalance: "random"
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20000
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/context/go-server/docker/docker-compose.yml b/context/go-server/docker/docker-compose.yml
deleted file mode 100644
index 8724179..0000000
--- a/context/go-server/docker/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
diff --git a/context/go-server/pkg/user.go b/context/go-server/pkg/user.go
deleted file mode 100644
index b943959..0000000
--- a/context/go-server/pkg/user.go
+++ /dev/null
@@ -1,76 +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 pkg
-
-import (
-	"context"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/common/constant"
-	"github.com/apache/dubbo-go/config"
-	"github.com/dubbogo/gost/log"
-)
-
-func init() {
-	config.SetProviderService(new(UserProvider))
-	// ------for hessian2------
-	hessian.RegisterPOJO(&ContextContent{})
-}
-
-type ContextContent struct {
-	Path              string
-	InterfaceName     string
-	DubboVersion      string
-	LocalAddr         string
-	RemoteAddr        string
-	UserDefinedStrVal string
-	CtxStrVal         string
-	CtxIntVal         int64
-}
-
-type UserProvider struct {
-}
-
-func (u *UserProvider) GetContext(ctx context.Context, req []interface{}) (*ContextContent, error) {
-	gxlog.CInfo("req:%#v", req)
-	ctxAtta := ctx.Value(constant.DubboCtxKey("attachment")).(map[string]interface{})
-	userDefinedval := ctxAtta["user-defined-value"].(*ContextContent)
-	gxlog.CInfo("get user defined struct:%#v", userDefinedval)
-	rsp := ContextContent{
-		Path:              ctxAtta["path"].(string),
-		InterfaceName:     ctxAtta["interface"].(string),
-		DubboVersion:      ctxAtta["dubbo"].(string),
-		LocalAddr:         ctxAtta["local-addr"].(string),
-		RemoteAddr:        ctxAtta["remote-addr"].(string),
-		UserDefinedStrVal: userDefinedval.InterfaceName,
-		CtxIntVal:         ctxAtta["int-value"].(int64),
-		CtxStrVal:         ctxAtta["string-value"].(string),
-	}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u ContextContent) JavaClassName() string {
-	return "org.apache.dubbo.ContextContent"
-}
diff --git a/context/go-server/tests/integration/main_test.go b/context/go-server/tests/integration/main_test.go
deleted file mode 100644
index 26a0918..0000000
--- a/context/go-server/tests/integration/main_test.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-var userProvider = new(UserProvider)
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&ContextContent{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type ContextContent struct {
-	Path              string
-	InterfaceName     string
-	DubboVersion      string
-	LocalAddr         string
-	RemoteAddr        string
-	UserDefinedStrVal string
-	CtxStrVal         string
-	CtxIntVal         int64
-}
-
-type UserProvider struct {
-	GetContext func(ctx context.Context, req []interface{}, rsp *ContextContent) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (ContextContent) JavaClassName() string {
-	return "org.apache.dubbo.ContextContent"
-}
diff --git a/context/go-server/tests/integration/userprovider_test.go b/context/go-server/tests/integration/userprovider_test.go
deleted file mode 100644
index 2618866..0000000
--- a/context/go-server/tests/integration/userprovider_test.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// +build integration
-
-/*
- * 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 integration
-
-import (
-	"context"
-	"testing"
-)
-import (
-	"github.com/apache/dubbo-go/common/constant"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetUser(t *testing.T) {
-	rspContext := &ContextContent{}
-
-	// add field that client wants to send
-	atta := make(map[string]interface{})
-	atta["string-value"] = "string-demo"
-	atta["int-value"] = 1231242
-	atta["user-defined-value"] = ContextContent{InterfaceName: "test.interface.name"}
-	reqContext := context.WithValue(context.Background(), constant.DubboCtxKey("attachment"), atta)
-
-	// invoke with reqContext
-	err := userProvider.GetContext(reqContext, []interface{}{"A001"}, rspContext)
-
-	// assert dubbo-go fields
-	assert.Nil(t, err)
-	assert.Equal(t, "org.apache.dubbo.UserProvider", rspContext.InterfaceName)
-	assert.Equal(t, "org.apache.dubbo.UserProvider", rspContext.Path)
-	assert.NotNil(t, rspContext.LocalAddr)
-	assert.NotNil(t, rspContext.RemoteAddr)
-	assert.NotNil(t, rspContext.DubboVersion)
-
-	// assert user defined fields
-	assert.Equal(t, "test.interface.name", rspContext.UserDefinedStrVal)
-	assert.Equal(t, "string-demo", rspContext.CtxStrVal)
-	assert.Equal(t, int64(1231242), rspContext.CtxIntVal)
-}
diff --git a/direct/README.md b/direct/README.md
deleted file mode 100644
index e9d49dc..0000000
--- a/direct/README.md
+++ /dev/null
@@ -1,170 +0,0 @@
-# Direct Example
-
-### Backend
-
-In the development and testing environment, it is often necessary to bypass the registry and test the designated service provider, which may require point-to-point direct connection. The point-to-point direct connection method will be based on the service interface and ignore the list of providers in the registry. Interface A is configured point-to-point and does not affect interface B to get the list from the registry.
-
-This example provides the `Consumer` point-to-point direct connection `Provider` based on Dubbo-Go to complete service calls to help better understand the connectivity of Dubbo-Go.
-
-### Introduction
-
-```
-├── go-client     
-│   ├── cmd       
-│   ├── conf      
-│   └── pkg         
-└── go-server     
-    ├── cmd       
-    ├── conf      
-    ├── docker     
-    ├── pkg
-    └── tests
-        └── integration
-```
-
-- go-server: The Service Provider
-- go-client: The Service Consumer
-
-#### Provider
-Direct example code description:
-
-1. Configure the Dubbo protocol, registry, service information, See [server.yml](go-server/conf/server.yml)
-
-```yaml
-services:
-  "UserProvider":
-    registry: "demoZk"
-    protocol : "dubbo"
-    interface : "org.apache.dubbo.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 1
-      loadbalance: "random"
-```
-
-2. Startup: Register the service
-
-```go
-hessian.RegisterPOJO(&pkg.User{})
-config.Load()
-initSignal()
-```
-
-- Based on the `hessian` serialization protocol, using [apache/dubbo-go-hessian2](https://github.com/apache/dubbo-go-hessian2) RegisterPOJO register a POJO
-- Dubbo Init: Registration service, See [apache/dubbo-go/../config_loader.go](https://github.com/apache/dubbo-go/blob/master/config/config_loader.go)
-    - init router
-    - init the global event dispatcher
-    - start the metadata report if config set
-    - reference config
-    - service config
-    - init the shutdown callback
-- Init Signal :
-  
-    ```go
-    func initSignal() {
-        signals := make(chan os.Signal, 1)
-        // It is not possible to block SIGKILL or syscall.SIGSTOP
-        signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-        for {
-            sig := <-signals
-            logger.Infof("get signal %s", sig.String())
-            switch sig {
-            case syscall.SIGHUP:
-                // reload()
-            default:
-                time.AfterFunc(time.Duration(survivalTimeout), func() {
-                    logger.Warnf("app exit now by force...")
-                    os.Exit(1)
-                })
-    
-                // The program exits normally or timeout forcibly exits.
-                fmt.Println("provider app exit now...")
-                return
-            }
-        }
-    }
-    ```
-
-#### Consumer
-
-1. Set up the `dubbo service` you need to subscribe to at the beginning of the program startup.
-   Make sure that the configuration file [client.yml](go-client/conf/client.yml) has been configured with the relevant information of the subscription service, and the service properties can be customized to override the configuration of the Provider's properties.
-   Retain minimum configuration `application` and `references` verification point-to-point direct connection effect, no need to configure the registry.
-
-```go
-var userProvider = new(pkg.UserProvider)
-
-func init() {
-    config.SetConsumerService(userProvider)
-    hessian.RegisterPOJO(&pkg.User{})
-}
-```
-
-```yaml
-application:
-  organization: "dubbo.io"
-  name: "UserInfoClient"
-  module: "dubbo-go user-info client"
-  version: "0.0.1"
-  environment: "dev"
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
... 59122 lines suppressed ...

[dubbo-go-samples] 14/18: Add 1.5 branch ci

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7be826d9d56e8196576d9025e8a74c8946bf6da9
Author: Laurence <45...@users.noreply.github.com>
AuthorDate: Mon Jul 26 09:39:22 2021 +0800

    Add 1.5 branch ci
---
 .github/workflows/github-actions.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml
index 6847e75..b8f2554 100644
--- a/.github/workflows/github-actions.yml
+++ b/.github/workflows/github-actions.yml
@@ -2,7 +2,7 @@ name: CI
 
 on:
   push:
-    branches: [master, develop]
+    branches: [master, develop, 1.5]
   pull_request:
     branches: "*"
 

[dubbo-go-samples] 05/18: Merge pull request #114 from zhaoyunxing92/1.5.7-rc

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d1942d6673f4d7e32fd61907f1b5e1f36ad5e4df
Merge: af15597 fff662e
Author: Laurence <45...@users.noreply.github.com>
AuthorDate: Sun May 16 20:41:18 2021 +0800

    Merge pull request #114 from zhaoyunxing92/1.5.7-rc
    
    up:修改方法名称

 filter/custom/go-server/pkg/custom_filter.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

[dubbo-go-samples] 18/18: fix generic invocation bug (#210)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b36976b2a4ee65b11d99ea2cc9a4d6ba04bd58e3
Author: alchemy-lee <27...@qq.com>
AuthorDate: Fri Aug 27 09:53:45 2021 +0800

    fix generic invocation bug (#210)
---
 generic/go-client/cmd/client.go | 26 ++++++++++++++++++++++++--
 generic/go-server/pkg/user.go   |  9 +++++++++
 2 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/generic/go-client/cmd/client.go b/generic/go-client/cmd/client.go
index 0d9d4f3..8a8d003 100644
--- a/generic/go-client/cmd/client.go
+++ b/generic/go-client/cmd/client.go
@@ -37,6 +37,7 @@ import (
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 
+	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/dubbogo/gost/log"
 )
 
@@ -66,6 +67,8 @@ func main() {
 	callGetUser()
 	gxlog.CInfo("\n\ncall queryUser")
 	callQueryUser()
+	gxlog.CInfo("\n\ncall getAllUsers")
+	callGetAllUsers()
 	initSignal()
 }
 
@@ -100,7 +103,7 @@ func callGetUser() {
 		[]interface{}{
 			"GetUser",
 			[]string{"java.lang.String"},
-			[]interface{}{"A003"},
+			[]hessian.Object{"A003"},
 		},
 	)
 	if err != nil {
@@ -110,6 +113,7 @@ func callGetUser() {
 	gxlog.CInfo("success!")
 
 }
+
 func callQueryUser() {
 	gxlog.CInfo("\n\n\nstart to generic invoke")
 	user := pkg.User{
@@ -123,7 +127,25 @@ func callQueryUser() {
 		[]interface{}{
 			"queryUser",
 			[]string{"org.apache.dubbo.User"},
-			[]interface{}{user},
+			[]hessian.Object{user},
+		},
+	)
+	if err != nil {
+		panic(err)
+	}
+	gxlog.CInfo("res: %+v\n", resp)
+	gxlog.CInfo("success!")
+
+}
+
+func callGetAllUsers() {
+	gxlog.CInfo("\n\n\nstart to generic invoke")
+	resp, err := referenceConfig.GetRPCService().(*config.GenericService).Invoke(
+		context.TODO(),
+		[]interface{}{
+			"GetAllUsers",
+			[]hessian.Object{},
+			[]hessian.Object{},
 		},
 	)
 	if err != nil {
diff --git a/generic/go-server/pkg/user.go b/generic/go-server/pkg/user.go
index dd62f6d..1fa56d0 100644
--- a/generic/go-server/pkg/user.go
+++ b/generic/go-server/pkg/user.go
@@ -59,6 +59,15 @@ func (u *UserProvider) QueryUser(ctx context.Context, user *User) (*User, error)
 	return &rsp, nil
 }
 
+func (u *UserProvider) GetAllUsers(ctx context.Context) ([]*User, error) {
+	rsp := []*User{
+		{"A001", "Alex Stocks", 18, time.Now()},
+		{"A002", "Alchemy Lee", 12, time.Now()},
+	}
+	gxlog.CInfo("rsp:%#v", rsp)
+	return rsp, nil
+}
+
 func (u *UserProvider) MethodMapper() map[string]string {
 	return map[string]string{
 		"QueryUser": "queryUser",

[dubbo-go-samples] 10/18: Feature/1.5 seata test (#166)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit bb2883ce524043729ebcc2286d3c9f8833fd14db
Author: phil <ph...@foxmail.com>
AuthorDate: Tue Jul 13 13:20:19 2021 +0800

    Feature/1.5 seata test (#166)
    
    * update: test pass by tesing
    
    * update: mysql init sql auto
    
    Co-authored-by: yuefengbo <yu...@meituan.com>
---
 .run/seata/seata_client_app.run.xml                |  2 +-
 .run/seata/seata_order-svc_app.run.xml             |  2 +-
 .run/seata/seata_product-svc_app.run.xml           |  2 +-
 seata/client/app/client.go                         | 17 +++---
 seata/client/app/svc/svc.go                        |  1 +
 seata/docker/docker-compose.yml                    | 34 ++++++++++++
 seata/docker/mysql/script/seata.sql                | 62 ++++++++++++++++++++++
 .../mysql/script}/seata_order.sql                  |  0
 .../mysql/script}/seata_product.sql                |  0
 seata/order-svc/app/dao/dao.go                     |  5 +-
 seata/order-svc/app/order_svc.go                   |  1 +
 seata/order-svc/app/server.go                      | 19 ++++---
 seata/product-svc/app/dao/dao.go                   |  1 +
 seata/product-svc/app/product_svc.go               |  1 +
 seata/product-svc/app/server.go                    | 19 ++++---
 15 files changed, 131 insertions(+), 35 deletions(-)

diff --git a/.run/seata/seata_client_app.run.xml b/.run/seata/seata_client_app.run.xml
index c34da8c..97941d0 100644
--- a/.run/seata/seata_client_app.run.xml
+++ b/.run/seata/seata_client_app.run.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="seata/client/app" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="seata/client/app" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="seata">
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <envs>
diff --git a/.run/seata/seata_order-svc_app.run.xml b/.run/seata/seata_order-svc_app.run.xml
index def3fd7..f12d2bf 100644
--- a/.run/seata/seata_order-svc_app.run.xml
+++ b/.run/seata/seata_order-svc_app.run.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="seata/order-svc/app" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="seata/order-svc/app" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="seata">
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <envs>
diff --git a/.run/seata/seata_product-svc_app.run.xml b/.run/seata/seata_product-svc_app.run.xml
index 7fcfc16..264f05f 100644
--- a/.run/seata/seata_product-svc_app.run.xml
+++ b/.run/seata/seata_product-svc_app.run.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="seata/product-svc/app" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="seata/product-svc/app" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="seata">
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <envs>
diff --git a/seata/client/app/client.go b/seata/client/app/client.go
index 451fdbf..2a7809e 100644
--- a/seata/client/app/client.go
+++ b/seata/client/app/client.go
@@ -27,24 +27,23 @@ import (
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/seata/client/app/svc"
-)
-
-import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/transaction-wg/seata-golang/pkg/client"
 	config2 "github.com/transaction-wg/seata-golang/pkg/client/config"
 	"github.com/transaction-wg/seata-golang/pkg/client/tm"
+)
 
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
+import (
+	"github.com/apache/dubbo-go-samples/seata/client/app/svc"
 )
 
 const (
diff --git a/seata/client/app/svc/svc.go b/seata/client/app/svc/svc.go
index 5a53342..8d219d1 100644
--- a/seata/client/app/svc/svc.go
+++ b/seata/client/app/svc/svc.go
@@ -25,6 +25,7 @@ import (
 import (
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/config"
+
 	context2 "github.com/transaction-wg/seata-golang/pkg/client/context"
 	"github.com/transaction-wg/seata-golang/pkg/client/tm"
 )
diff --git a/seata/docker/docker-compose.yml b/seata/docker/docker-compose.yml
new file mode 100644
index 0000000..d5dca01
--- /dev/null
+++ b/seata/docker/docker-compose.yml
@@ -0,0 +1,34 @@
+version: '3.1'
+services:
+  # mysql
+  mysql:
+    image: mysql:5.7
+    container_name: mysqlt
+    privileged: true  # 授权
+    command: --default-authentication-plugin=mysql_native_password --default-time-zone='+08:00' # 指定使用插件
+    volumes:
+      - ./mysql/script:/docker-entrypoint-initdb.d
+    ports:
+      - 3306:3306
+    environment:
+      MYSQL_ROOT_PASSWORD: '123456' # root用户密码
+  # seata
+  seata:
+    image: seataio/seata-server:latest
+    container_name: seatat
+    hostname: seata-server
+    ports:
+      - 8091:8091
+    environment:
+      - SEATA_PORT=8091
+    expose:
+      - 8091
+  # nacos
+  nacos:
+    image: nacos/nacos-server:2.0.0
+    container_name: nacost
+#    network_mode: host
+    ports:
+      - 8848:8848
+    environment:
+      - MODE=standalone #启动模式是独立模式
\ No newline at end of file
diff --git a/seata/docker/mysql/script/seata.sql b/seata/docker/mysql/script/seata.sql
new file mode 100644
index 0000000..cfbe50e
--- /dev/null
+++ b/seata/docker/mysql/script/seata.sql
@@ -0,0 +1,62 @@
+-- -------------------------------- The script used when storeMode is 'db' --------------------------------
+
+CREATE database if NOT EXISTS `seata` default character set utf8mb4 collate utf8mb4_unicode_ci;
+USE `seata`;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+-- the table to store GlobalSession data
+CREATE TABLE IF NOT EXISTS `global_table`
+(
+    `xid`                       VARCHAR(128) NOT NULL,
+    `transaction_id`            BIGINT,
+    `status`                    TINYINT      NOT NULL,
+    `application_id`            VARCHAR(32),
+    `transaction_service_group` VARCHAR(32),
+    `transaction_name`          VARCHAR(128),
+    `timeout`                   INT,
+    `begin_time`                BIGINT,
+    `application_data`          VARCHAR(2000),
+    `gmt_create`                DATETIME,
+    `gmt_modified`              DATETIME,
+    PRIMARY KEY (`xid`),
+    KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
+    KEY `idx_transaction_id` (`transaction_id`)
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+-- the table to store BranchSession data
+CREATE TABLE IF NOT EXISTS `branch_table`
+(
+    `branch_id`         BIGINT       NOT NULL,
+    `xid`               VARCHAR(128) NOT NULL,
+    `transaction_id`    BIGINT,
+    `resource_group_id` VARCHAR(32),
+    `resource_id`       VARCHAR(256),
+    `branch_type`       VARCHAR(8),
+    `status`            TINYINT,
+    `client_id`         VARCHAR(64),
+    `application_data`  VARCHAR(2000),
+    `gmt_create`        DATETIME(6),
+    `gmt_modified`      DATETIME(6),
+    PRIMARY KEY (`branch_id`),
+    KEY `idx_xid` (`xid`)
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+-- the table to store lock data
+CREATE TABLE IF NOT EXISTS `lock_table`
+(
+    `row_key`        VARCHAR(128) NOT NULL,
+    `xid`            VARCHAR(96),
+    `transaction_id` BIGINT,
+    `branch_id`      BIGINT       NOT NULL,
+    `resource_id`    VARCHAR(256),
+    `table_name`     VARCHAR(32),
+    `pk`             VARCHAR(36),
+    `gmt_create`     DATETIME,
+    `gmt_modified`   DATETIME,
+    PRIMARY KEY (`row_key`),
+    KEY `idx_branch_id` (`branch_id`)
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
diff --git a/seata/scripts/seata_order.sql b/seata/docker/mysql/script/seata_order.sql
similarity index 100%
rename from seata/scripts/seata_order.sql
rename to seata/docker/mysql/script/seata_order.sql
diff --git a/seata/scripts/seata_product.sql b/seata/docker/mysql/script/seata_product.sql
similarity index 100%
rename from seata/scripts/seata_product.sql
rename to seata/docker/mysql/script/seata_product.sql
diff --git a/seata/order-svc/app/dao/dao.go b/seata/order-svc/app/dao/dao.go
index a216fae..ece4584 100644
--- a/seata/order-svc/app/dao/dao.go
+++ b/seata/order-svc/app/dao/dao.go
@@ -18,15 +18,14 @@
 package dao
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
 	"time"
 )
 
 import (
+	hessian "github.com/apache/dubbo-go-hessian2"
+
 	"github.com/bwmarrin/snowflake"
-)
 
-import (
 	"github.com/transaction-wg/seata-golang/pkg/client/at/exec"
 	"github.com/transaction-wg/seata-golang/pkg/client/context"
 )
diff --git a/seata/order-svc/app/order_svc.go b/seata/order-svc/app/order_svc.go
index 1cbc4bc..100136d 100644
--- a/seata/order-svc/app/order_svc.go
+++ b/seata/order-svc/app/order_svc.go
@@ -23,6 +23,7 @@ import (
 
 import (
 	"github.com/apache/dubbo-go/common/constant"
+
 	context2 "github.com/transaction-wg/seata-golang/pkg/client/context"
 )
 
diff --git a/seata/order-svc/app/server.go b/seata/order-svc/app/server.go
index c45c1a1..95b71b0 100644
--- a/seata/order-svc/app/server.go
+++ b/seata/order-svc/app/server.go
@@ -27,24 +27,23 @@ import (
 )
 
 import (
-	dao2 "github.com/apache/dubbo-go-samples/seata/order-svc/app/dao"
-)
-
-import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
+	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/transaction-wg/seata-golang/pkg/client"
 	"github.com/transaction-wg/seata-golang/pkg/client/at/exec"
 	config2 "github.com/transaction-wg/seata-golang/pkg/client/config"
+)
 
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
+import (
+	dao2 "github.com/apache/dubbo-go-samples/seata/order-svc/app/dao"
 )
 
 const (
diff --git a/seata/product-svc/app/dao/dao.go b/seata/product-svc/app/dao/dao.go
index 5e5fe4f..a9f5e89 100644
--- a/seata/product-svc/app/dao/dao.go
+++ b/seata/product-svc/app/dao/dao.go
@@ -19,6 +19,7 @@ package dao
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
+
 	"github.com/transaction-wg/seata-golang/pkg/client/at/exec"
 	"github.com/transaction-wg/seata-golang/pkg/client/context"
 )
diff --git a/seata/product-svc/app/product_svc.go b/seata/product-svc/app/product_svc.go
index 9d97211..d32c518 100644
--- a/seata/product-svc/app/product_svc.go
+++ b/seata/product-svc/app/product_svc.go
@@ -23,6 +23,7 @@ import (
 
 import (
 	"github.com/apache/dubbo-go/common/constant"
+
 	context2 "github.com/transaction-wg/seata-golang/pkg/client/context"
 )
 
diff --git a/seata/product-svc/app/server.go b/seata/product-svc/app/server.go
index f39b1ac..68db9be 100644
--- a/seata/product-svc/app/server.go
+++ b/seata/product-svc/app/server.go
@@ -27,24 +27,23 @@ import (
 )
 
 import (
-	dao2 "github.com/apache/dubbo-go-samples/seata/product-svc/app/dao"
-)
-
-import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
+	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/transaction-wg/seata-golang/pkg/client"
 	"github.com/transaction-wg/seata-golang/pkg/client/at/exec"
 	config2 "github.com/transaction-wg/seata-golang/pkg/client/config"
+)
 
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
+import (
+	dao2 "github.com/apache/dubbo-go-samples/seata/product-svc/app/dao"
 )
 
 const (

[dubbo-go-samples] 12/18: up:add nacos registry (#178)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 44cb1ee7a97ac1d2ad96b6d7b199c4cc9345c6b2
Author: 赵云兴 <23...@qq.com>
AuthorDate: Sat Jul 24 20:16:27 2021 +0800

    up:add nacos registry (#178)
---
 .run/registry/registry-nacos-client.run.xml | 15 +++++++++++++++
 .run/registry/registry-nacos-server.run.xml | 15 +++++++++++++++
 registry/nacos/go-client/conf/client.yml    |  1 +
 3 files changed, 31 insertions(+)

diff --git a/.run/registry/registry-nacos-client.run.xml b/.run/registry/registry-nacos-client.run.xml
new file mode 100644
index 0000000..094dec2
--- /dev/null
+++ b/.run/registry/registry-nacos-client.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="registry-nacos-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="registry">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/nacos/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/registry/nacos/go-client/conf/client.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/nacos/go-client/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/registry/nacos/go-client/cmd/client.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/registry/registry-nacos-server.run.xml b/.run/registry/registry-nacos-server.run.xml
new file mode 100644
index 0000000..6a72568
--- /dev/null
+++ b/.run/registry/registry-nacos-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="registry-nacos-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="registry">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/registry/nacos/go-server/conf/server.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/nacos/go-server/conf/log.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/nacos/go-server/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/registry/nacos/go-server/cmd/server.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/registry/nacos/go-client/conf/client.yml b/registry/nacos/go-client/conf/client.yml
index 5936848..5e61240 100644
--- a/registry/nacos/go-client/conf/client.yml
+++ b/registry/nacos/go-client/conf/client.yml
@@ -31,6 +31,7 @@ references:
     methods:
       - name: "GetUser"
         retries: 3
+        timeout: 10s
 
 # protocol config
 protocol_conf:

[dubbo-go-samples] 13/18: fix game integrate error & del useless file (#184)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f2ba74554f0d2f84047eb33b589323c50bf66f60
Author: 氕氘氚 <cj...@163.com>
AuthorDate: Sun Jul 25 22:35:17 2021 +0800

    fix game integrate error & del useless file (#184)
---
 .run/game/game-go-game-test.run.xml                |  17 -----------------
 .run/game/game-go-gate-test.run.xml                |  17 -----------------
 game/go-server-game/pkg/consumer.go                |   4 ++--
 game/go-server-game/tests/integration/main_test.go |   4 ++--
 game/go-server-gate/tests/integration/main_test.go |   4 ++--
 game/website/.DS_Store                             | Bin 6148 -> 0 bytes
 general/dubbo3/.DS_Store                           | Bin 6148 -> 0 bytes
 general/dubbo3/pb/.DS_Store                        | Bin 6148 -> 0 bytes
 start_integrate_test.sh                            |   6 +++---
 9 files changed, 9 insertions(+), 43 deletions(-)

diff --git a/.run/game/game-go-game-test.run.xml b/.run/game/game-go-game-test.run.xml
deleted file mode 100644
index 4e851e5..0000000
--- a/.run/game/game-go-game-test.run.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="game-go-game-test" type="GoTestRunConfiguration" factoryName="Go Test" folderName="game">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$/game" />
-    <useCustomBuildTags value="true" />
-    <envs>
-      <env name="CONF_CONSUMER_FILE_PATH" value="go-server-game/conf/test_client.yml" />
-      <env name="APP_LOG_CONF_FILE" value="go-server-game/conf/log.yml" />
-    </envs>
-    <framework value="gotest" />
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/game/go-server-game/tests/integration" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/game/game-go-gate-test.run.xml b/.run/game/game-go-gate-test.run.xml
deleted file mode 100644
index d943826..0000000
--- a/.run/game/game-go-gate-test.run.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="game-go-gate-test" type="GoTestRunConfiguration" factoryName="Go Test" folderName="game">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$/game" />
-    <useCustomBuildTags value="true" />
-    <envs>
-      <env name="CONF_CONSUMER_FILE_PATH" value="go-server-gate/conf/test_client.yml" />
-      <env name="APP_LOG_CONF_FILE" value="go-server-gate/conf/log.yml" />
-    </envs>
-    <framework value="gotest" />
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/game/go-server-gate/tests/integration" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/game/go-server-game/pkg/consumer.go b/game/go-server-game/pkg/consumer.go
index c879fae..a6dba8f 100644
--- a/game/go-server-game/pkg/consumer.go
+++ b/game/go-server-game/pkg/consumer.go
@@ -1,7 +1,7 @@
 package pkg
 
 import (
-	"github.com/apache/dubbo-go-samples/game/pkg/consumer/gate"
+	"github.com/apache/dubbo-go-samples/game/go-server-gate/pkg"
 )
 
-var GateBasketball = new(gate.BasketballService)
+var GateBasketball = new(pkg.BasketballService)
diff --git a/game/go-server-game/tests/integration/main_test.go b/game/go-server-game/tests/integration/main_test.go
index 9459f1a..187f8c5 100644
--- a/game/go-server-game/tests/integration/main_test.go
+++ b/game/go-server-game/tests/integration/main_test.go
@@ -20,11 +20,11 @@ import (
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/game/pkg/consumer/game"
+	"github.com/apache/dubbo-go-samples/game/go-server-game/pkg"
 	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
-var gameProvider = new(game.BasketballService)
+var gameProvider = new(pkg.BasketballService)
 
 func TestMain(m *testing.M) {
     config.SetConsumerService(gameProvider)
diff --git a/game/go-server-gate/tests/integration/main_test.go b/game/go-server-gate/tests/integration/main_test.go
index 88bf8d3..d782b3e 100644
--- a/game/go-server-gate/tests/integration/main_test.go
+++ b/game/go-server-gate/tests/integration/main_test.go
@@ -20,11 +20,11 @@ import (
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/game/pkg/consumer/gate"
+	"github.com/apache/dubbo-go-samples/game/go-server-gate/pkg"
 	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
-var gateProvider = new(gate.BasketballService)
+var gateProvider = new(pkg.BasketballService)
 
 func TestMain(m *testing.M) {
     config.SetConsumerService(gateProvider)
diff --git a/game/website/.DS_Store b/game/website/.DS_Store
deleted file mode 100644
index 8c27301..0000000
Binary files a/game/website/.DS_Store and /dev/null differ
diff --git a/general/dubbo3/.DS_Store b/general/dubbo3/.DS_Store
deleted file mode 100644
index b85adcb..0000000
Binary files a/general/dubbo3/.DS_Store and /dev/null differ
diff --git a/general/dubbo3/pb/.DS_Store b/general/dubbo3/pb/.DS_Store
deleted file mode 100644
index e7e3e36..0000000
Binary files a/general/dubbo3/pb/.DS_Store and /dev/null differ
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index add9bdc..edeedc7 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -29,8 +29,8 @@ array+=("filter/tpslimit/go-server")
 array+=("filter/sentinel/go-server")
 
 # game
-#array+=("game/go-server-game") # Bug
-#array+=("game/go-server-gate") # Bug
+array+=("game/go-server-game")
+array+=("game/go-server-gate")
 
 # general
 array+=("general/dubbo/go-server")
@@ -55,7 +55,7 @@ array+=("metric/go-server")
 #array+=("multi-zone") # Unsupported
 
 # registry
-array=("registry/etcd/go-server") # M1 ignore
+array+=("registry/etcd/go-server") # M1 ignore
 array+=("registry/nacos/go-server")
 #array+=("registry/servicediscovery/consul/go-server") # M1 ignore & Bug
 array+=("registry/servicediscovery/etcd/go-server") # M1 ignore

[dubbo-go-samples] 17/18: Update dubbo-go version to 1.5.7-rc2 (#207)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0f2bab060a0033ad0ba4347dc9021cb3be44bd5e
Author: XavierNiu <a...@nxw.name>
AuthorDate: Wed Aug 25 08:33:20 2021 +0800

    Update dubbo-go version to 1.5.7-rc2 (#207)
    
    * update dubbo-go version to 1.5.7-rc2
    
    * fix conflict
    
    * update seata-golang
---
 .gitignore |  5 ++++-
 go.mod     |  7 +++----
 go.sum     | 21 +++++++++++++++++++--
 3 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/.gitignore b/.gitignore
index bd2f65a..b0cdc4f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
+.DS_Store
+.idea
+
 # Binaries for programs and plugins
 *.exe
 *.exe~
@@ -31,4 +34,4 @@ coverage.txt
 # maven
 .classpath
 .project
-.settings/
\ No newline at end of file
+.settings/
diff --git a/go.mod b/go.mod
index 24c4327..4056d2c 100644
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ require (
 	github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 // indirect
 	github.com/alibaba/sentinel-golang v1.0.2
 	github.com/apache/dubbo-getty v1.4.3
-	github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210718162019-04842e84aa85
+	github.com/apache/dubbo-go v1.5.7-rc2
 	github.com/apache/dubbo-go-hessian2 v1.9.2
 	github.com/bwmarrin/snowflake v0.3.0
 	github.com/coreos/bbolt v1.3.3 // indirect
@@ -18,7 +18,6 @@ require (
 	github.com/gophercloud/gophercloud v0.3.0 // indirect
 	github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
 	github.com/hashicorp/golang-lru v0.5.3 // indirect
-	github.com/imdario/mergo v0.3.9 // indirect
 	github.com/linode/linodego v0.10.0 // indirect
 	github.com/miekg/dns v1.1.27 // indirect
 	github.com/mitchellh/hashstructure v1.0.0 // indirect
@@ -29,10 +28,10 @@ require (
 	github.com/pkg/errors v0.9.1
 	github.com/prometheus/client_golang v1.9.0
 	github.com/stretchr/testify v1.7.0
-	github.com/transaction-wg/seata-golang v1.0.0-rc2
+	github.com/transaction-wg/seata-golang v1.0.1
 	github.com/uber/jaeger-client-go v2.22.1+incompatible
 	github.com/uber/jaeger-lib v2.2.0+incompatible // indirect
-	google.golang.org/grpc v1.36.0
+	google.golang.org/grpc v1.38.0
 	google.golang.org/protobuf v1.25.0 // indirect
 )
 
diff --git a/go.sum b/go.sum
index 9c8bd92..fcbc3e6 100644
--- a/go.sum
+++ b/go.sum
@@ -13,6 +13,7 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl
 cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
 cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
 github.com/Azure/azure-sdk-for-go v40.3.0+incompatible h1:NthZg3psrLxvQLN6rVm07pZ9mv2wvGNaBNGQ3fnPvLE=
 github.com/Azure/azure-sdk-for-go v40.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
 github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
@@ -85,8 +86,8 @@ github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDH
 github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 github.com/apache/dubbo-getty v1.4.3 h1:PCKpryDasKOxwT5MBC6MIMO+0NLOaHF6Xco9YXQw7HI=
 github.com/apache/dubbo-getty v1.4.3/go.mod h1:ansXgKxxyhCOiQL29nO5ce1MDcEKmCyZuNR9oMs3hek=
-github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210718162019-04842e84aa85 h1:Hx/OX//3oUuR1JEjzL7mp2mutCZYSZFwfxZWWwcSxIw=
-github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210718162019-04842e84aa85/go.mod h1:8DZ/QA8Z+KEnUhHDAJwdiO7M5xBkRt4Aq9k9vl9uOA8=
+github.com/apache/dubbo-go v1.5.7-rc2 h1:ZpnnJ9j9agZCmz6MfVOnWHo+Z07y22uTvPaHs+frKQA=
+github.com/apache/dubbo-go v1.5.7-rc2/go.mod h1:8DZ/QA8Z+KEnUhHDAJwdiO7M5xBkRt4Aq9k9vl9uOA8=
 github.com/apache/dubbo-go-hessian2 v1.9.1/go.mod h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
 github.com/apache/dubbo-go-hessian2 v1.9.2 h1:XuI8KvENSfKiAhiCBS4RNihmQDoPNmGWKT3gTui0p9A=
 github.com/apache/dubbo-go-hessian2 v1.9.2/go.mod h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
@@ -204,6 +205,7 @@ github.com/dubbogo/go-zookeeper v1.0.3 h1:UkuY+rBsxdT7Bs63QAzp9z7XqQ53W1j8E5rwl8
 github.com/dubbogo/go-zookeeper v1.0.3/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c=
 github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8=
 github.com/dubbogo/gost v1.10.1/go.mod h1:+mQGS51XQEUWZP2JeGZTxJwipjRKtJO7Tr+FOg+72rI=
+github.com/dubbogo/gost v1.11.11/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI=
 github.com/dubbogo/gost v1.11.14 h1:9lfcdILOmqTOVAW1fPHa5uf1NrD6jlIOBe4vf8576yQ=
 github.com/dubbogo/gost v1.11.14/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI=
 github.com/dubbogo/jsonparser v1.0.1/go.mod h1:tYAtpctvSP/tWw4MeelsowSPgXQRVHHWbqL6ynps8jU=
@@ -281,6 +283,7 @@ github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4Hmx
 github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
 github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA=
 github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
+github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
 github.com/go-test/deep v1.0.2 h1:onZX1rnHT3Wv6cqNgYyFOOlgVKJrksuCMCRvJStbMYw=
@@ -498,6 +501,7 @@ github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJ
 github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
 github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg=
 github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
+github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
 github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
 github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ=
@@ -635,6 +639,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRW
 github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
 github.com/nacos-group/nacos-sdk-go v1.0.8 h1:8pEm05Cdav9sQgJSv5kyvlgfz0SzFUUGI3pWX6SiSnM=
 github.com/nacos-group/nacos-sdk-go v1.0.8/go.mod h1:hlAPn3UdzlxIlSILAyOXKxjFSvDJ9oLzTJ9hLAK1KzA=
+github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk=
 github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
 github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
 github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
@@ -667,8 +672,11 @@ github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt
 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
 github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
+github.com/opentrx/mysql v1.0.0-pre h1:Svl0pDOk88ZO7eyoeT3hGHj234WyP1nA0dxoxmshpqs=
+github.com/opentrx/mysql v1.0.0-pre/go.mod h1:8HOov/z9FcRy14FWAnyvUrabpARx2lXQEjlNutz0zD4=
 github.com/opentrx/mysql v1.0.1 h1:sUhhtRg98pVdrmrYEBLIH/6wDTxAKXG+//5u8WWh410=
 github.com/opentrx/mysql v1.0.1/go.mod h1:5TJKnpNIV+yrdxEM+LJXvWgf6bJAdT99lUY7KAwzCc8=
+github.com/opentrx/seata-golang/v2 v2.0.0-rc1/go.mod h1:jRggiZzDQzC8QzTeb4lswbHufB7lOsBD6IHqKz2+DEM=
 github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU=
 github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
 github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
@@ -857,8 +865,12 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4
 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3 h1:kF/7m/ZU+0D4Jj5eZ41Zm3IH/J8OElK1Qtd7tVKAwLk=
 github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlpd3qS71vYtakd2hmdpqhJ9nwv6mD6A30bQ1BPBFE=
+github.com/transaction-wg/seata-golang v0.2.1-alpha h1:YT0jWEc0XxN53E9xb/N8eKQ0yi9LVwXc0YBeaIe236g=
+github.com/transaction-wg/seata-golang v0.2.1-alpha/go.mod h1:L9vMoZxvLX4BuXQ13vFPCwFfXRLP0Bhr97z+6jm49Dw=
 github.com/transaction-wg/seata-golang v1.0.0-rc2 h1:UqHOmerrib8+87B6E8Tiq1ufwy6RTKIWOZBB4+N1lEs=
 github.com/transaction-wg/seata-golang v1.0.0-rc2/go.mod h1:L9vMoZxvLX4BuXQ13vFPCwFfXRLP0Bhr97z+6jm49Dw=
+github.com/transaction-wg/seata-golang v1.0.1 h1:21IqQeDnoElnzx4GPznJjZLzluWWOFmY5j1h1uuS8t4=
+github.com/transaction-wg/seata-golang v1.0.1/go.mod h1:AsopoxlIdkv7EukRGloQDxgcMvTTVMyU3lyv/cFIHjw=
 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8=
 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
 github.com/uber/jaeger-client-go v2.22.1+incompatible h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM=
@@ -872,6 +884,7 @@ github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLY
 github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
 github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
 github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
+github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
 github.com/vmware/govmomi v0.18.0 h1:f7QxSmP7meCtoAmiKZogvVbLInT+CZx6Px6K5rYsJZo=
 github.com/vmware/govmomi v0.18.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU=
 github.com/willf/bitset v1.1.10 h1:NotGKqX0KwQ72NUzqrjZq5ipPNDQex9lo3WpaS8L2sc=
@@ -913,6 +926,7 @@ go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+
 go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
 go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=
 go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
+go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
 go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
 go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
 go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
@@ -922,6 +936,7 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
 go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
 go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM=
 go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
+go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -1209,6 +1224,7 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -1243,4 +1259,5 @@ vimagination.zapto.org/byteio v0.0.0-20200222190125-d27cba0f0b10/go.mod h1:fl9OF
 vimagination.zapto.org/memio v0.0.0-20200222190306-588ebc67b97d h1:Mp6WiHHuiwHaknxTdxJ8pvC9/B4pOgW1PamKGexG7Fs=
 vimagination.zapto.org/memio v0.0.0-20200222190306-588ebc67b97d/go.mod h1:zHGDKp2tyvF4IAfLti4pKYqCJucXYmmKMb3UMrCHK/4=
 xorm.io/builder v0.3.6/go.mod h1:LEFAPISnRzG+zxaxj2vPicRwz67BdhFreKg8yv8/TgU=
+xorm.io/builder v0.3.9/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE=
 xorm.io/core v0.7.2-0.20190928055935-90aeac8d08eb/go.mod h1:jJfd0UAEzZ4t87nbQYtVjmqpIODugN6PD2D9E+dJvdM=

[dubbo-go-samples] 02/18: up:修改dubbo-go版本

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 62acd57d067246a025c145c6eb86ac66c111105e
Merge: c89e24a fc4f6db
Author: zhaoyunxing92 <23...@qq.com>
AuthorDate: Sun May 16 19:57:15 2021 +0800

    up:修改dubbo-go版本

 .../2.6/src/main/java/org/apache/dubbo/Gender.java |  46 +--
 .../2.6/src/main/java/org/apache/dubbo/User.java   | 166 ++++----
 .../main/java/org/apache/dubbo/UserProvider.java   |  54 +--
 .../2.7/src/main/java/org/apache/dubbo/Gender.java |  46 +--
 .../2.7/src/main/java/org/apache/dubbo/User.java   | 166 ++++----
 .../main/java/org/apache/dubbo/UserProvider.java   |  54 +--
 .../2.6/src/main/java/org/apache/dubbo/Gender.java |  46 +--
 .../2.6/src/main/java/org/apache/dubbo/User.java   | 190 ++++-----
 .../main/java/org/apache/dubbo/UserProvider.java   | 100 ++---
 .../org/apache/dubbo/UserProviderAnotherImpl.java  | 286 ++++++-------
 .../java/org/apache/dubbo/UserProviderImpl.java    | 230 +++++------
 .../resources/META-INF/spring/dubbo.provider.xml   |  72 ++--
 .../2.6/src/main/resources/log4j.properties        |  40 +-
 .../2.7/src/main/java/org/apache/dubbo/Gender.java |  46 +--
 .../2.7/src/main/java/org/apache/dubbo/User.java   | 190 ++++-----
 .../main/java/org/apache/dubbo/UserProvider.java   | 100 ++---
 .../org/apache/dubbo/UserProviderAnotherImpl.java  | 286 ++++++-------
 .../java/org/apache/dubbo/UserProviderImpl.java    | 230 +++++------
 .../resources/META-INF/spring/dubbo.provider.xml   |  72 ++--
 .../2.7/src/main/resources/log4j.properties        |  40 +-
 general/grpc/stream/go-client/profiles/dev/log.yml |  56 +--
 .../grpc/stream/go-client/profiles/release/log.yml |  56 +--
 .../grpc/stream/go-client/profiles/test/log.yml    |  56 +--
 general/grpc/stream/go-server/profiles/dev/log.yml |  56 +--
 .../grpc/stream/go-server/profiles/release/log.yml |  56 +--
 .../grpc/stream/go-server/profiles/test/log.yml    |  56 +--
 general/grpc/unary/go-client/profiles/dev/log.yml  |  56 +--
 .../grpc/unary/go-client/profiles/release/log.yml  |  56 +--
 general/grpc/unary/go-client/profiles/test/log.yml |  56 +--
 general/grpc/unary/go-server/profiles/dev/log.yml  |  56 +--
 .../grpc/unary/go-server/profiles/release/log.yml  |  56 +--
 general/grpc/unary/go-server/profiles/test/log.yml |  56 +--
 general/jsonrpc/go-client/profiles/dev/log.yml     |  56 +--
 general/jsonrpc/go-client/profiles/release/log.yml |  56 +--
 general/jsonrpc/go-client/profiles/test/log.yml    |  56 +--
 general/jsonrpc/go-server/profiles/dev/log.yml     |  56 +--
 general/jsonrpc/go-server/profiles/release/log.yml |  56 +--
 general/jsonrpc/go-server/profiles/test/log.yml    |  56 +--
 .../java-client/src/main/assembly/assembly.xml     |  76 ++--
 .../src/main/assembly/conf/dubbo.properties        |  26 +-
 .../src/main/java/com/ikurento/user/Gender.java    |  46 +--
 .../src/main/java/com/ikurento/user/User.java      | 166 ++++----
 .../main/java/com/ikurento/user/UserProvider.java  |  50 +--
 .../src/main/resources/META-INF/spring/service.xml |  76 ++--
 .../src/main/resources/dubbo.properties            |  26 +-
 .../java-server/src/main/assembly/assembly.xml     |  88 ++--
 .../src/main/assembly/conf/dubbo.properties        |  28 +-
 .../src/main/assembly/conf/log4j.properties        |  40 +-
 .../src/main/java/com/ikurento/user/Gender.java    |  46 +--
 .../src/main/java/com/ikurento/user/User.java      | 190 ++++-----
 .../main/java/com/ikurento/user/UserProvider.java  |  92 ++---
 .../com/ikurento/user/UserProviderAnotherImpl.java | 268 ++++++------
 .../java/com/ikurento/user/UserProviderImpl.java   | 222 +++++-----
 .../resources/META-INF/spring/dubbo.provider.xml   |  78 ++--
 .../src/main/resources/log4j.properties            |  40 +-
 .../2.6/src/main/java/org/apache/dubbo/Gender.java |  46 +--
 .../2.6/src/main/java/org/apache/dubbo/User.java   | 190 ++++-----
 .../main/java/org/apache/dubbo/UserProvider.java   | 100 ++---
 .../org/apache/dubbo/UserProviderAnotherImpl.java  | 286 ++++++-------
 .../java/org/apache/dubbo/UserProviderImpl.java    | 230 +++++------
 .../resources/META-INF/spring/dubbo.provider.xml   |  72 ++--
 .../2.6/src/main/resources/log4j.properties        |  40 +-
 .../2.7/src/main/java/org/apache/dubbo/Gender.java |  46 +--
 .../2.7/src/main/java/org/apache/dubbo/User.java   | 190 ++++-----
 .../main/java/org/apache/dubbo/UserProvider.java   | 100 ++---
 .../org/apache/dubbo/UserProviderAnotherImpl.java  | 286 ++++++-------
 .../java/org/apache/dubbo/UserProviderImpl.java    | 230 +++++------
 .../resources/META-INF/spring/dubbo.provider.xml   |  72 ++--
 .../2.7/src/main/resources/log4j.properties        |  40 +-
 go.mod                                             |   1 +
 integrate_test.sh                                  |   0
 registry/kubernetes/README.md                      |  56 +--
 seata/client/profiles/dev/log.yml                  |  56 +--
 seata/client/profiles/release/log.yml              |  56 +--
 seata/client/profiles/test/log.yml                 |  56 +--
 seata/order-svc/profiles/dev/log.yml               |  56 +--
 seata/order-svc/profiles/release/log.yml           |  56 +--
 seata/order-svc/profiles/test/log.yml              |  56 +--
 seata/product-svc/profiles/dev/log.yml             |  56 +--
 seata/product-svc/profiles/release/log.yml         |  56 +--
 seata/product-svc/profiles/test/log.yml            |  56 +--
 tracing/dubbo/go-client/profiles/dev/log.yml       |  56 +--
 tracing/dubbo/go-client/profiles/release/log.yml   |  56 +--
 tracing/dubbo/go-client/profiles/test/log.yml      |  56 +--
 tracing/dubbo/go-server/profiles/dev/log.yml       |  56 +--
 tracing/dubbo/go-server/profiles/release/log.yml   |  56 +--
 tracing/dubbo/go-server/profiles/test/log.yml      |  56 +--
 tracing/dubbo/java-client/pom.xml                  | 460 ++++++++++-----------
 .../java-client/src/main/assembly/assembly.xml     |  84 ++--
 .../src/main/java/com/ikurento/user/User.java      | 152 +++----
 .../main/java/com/ikurento/user/UserProvider.java  |  36 +-
 .../src/main/resources/META-INF/spring/service.xml |  54 +--
 .../src/main/resources/dubbo.properties            |  26 +-
 .../java-server/src/main/assembly/assembly.xml     |  86 ++--
 .../src/main/java/com/ikurento/user/User.java      | 172 ++++----
 .../main/java/com/ikurento/user/UserProvider.java  |  48 +--
 .../java/com/ikurento/user/UserProviderImpl.java   |  60 +--
 .../resources/META-INF/spring/dubbo.provider.xml   |  66 +--
 .../src/main/resources/dubbo.properties            |  28 +-
 .../src/main/resources/log4j.properties            |  40 +-
 tracing/jsonrpc/go-client/profiles/dev/log.yml     |  56 +--
 tracing/jsonrpc/go-client/profiles/release/log.yml |  56 +--
 tracing/jsonrpc/go-client/profiles/test/log.yml    |  56 +--
 tracing/jsonrpc/go-server/profiles/dev/log.yml     |  56 +--
 tracing/jsonrpc/go-server/profiles/release/log.yml |  56 +--
 tracing/jsonrpc/go-server/profiles/test/log.yml    |  56 +--
 106 files changed, 4750 insertions(+), 4749 deletions(-)

diff --cc general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Gender.java
index 7b503cc,0000000..a016781
mode 100644,000000..100644
--- a/general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Gender.java
+++ b/general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Gender.java
@@@ -1,23 -1,0 +1,23 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- public enum  Gender {
-     MAN,
-     WOMAN
- }
++/*
++ * 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 org.apache.dubbo;
++
++public enum  Gender {
++    MAN,
++    WOMAN
++}
diff --cc general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/User.java
index 1d950db,0000000..0514219
mode 100644,000000..100644
--- a/general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/User.java
+++ b/general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/User.java
@@@ -1,83 -1,0 +1,83 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import java.util.Date;
- 
- public class User {
- 
-     private String id;
- 
-     private String name;
- 
-     private int age;
- 
-     private Date time = new Date();
- 
-     private Gender sex = Gender.MAN;
- 
-     public User() {
-     }
- 
- 
-     public User(String id, String name, int age) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-     }
- 
-     public String getId() {
-         return id;
-     }
- 
-     public void setId(String id) {
-         this.id = id;
-     }
- 
-     public String getName() {
-         return name;
-     }
- 
-     public void setName(String name) {
-         this.name = name;
-     }
- 
-     public int getAge() {
-         return age;
-     }
- 
-     public void setAge(int age) {
-         this.age = age;
-     }
- 
-     public Date getTime() {
-         return time;
-     }
- 
-     public void setTime(Date time) {
-         this.time = time;
-     }
- 
-     public Gender getSex() {
-         return sex;
-     }
- 
-     public void setSex(Gender sex) {
-         this.sex = sex;
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import java.util.Date;
++
++public class User {
++
++    private String id;
++
++    private String name;
++
++    private int age;
++
++    private Date time = new Date();
++
++    private Gender sex = Gender.MAN;
++
++    public User() {
++    }
++
++
++    public User(String id, String name, int age) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++    }
++
++    public String getId() {
++        return id;
++    }
++
++    public void setId(String id) {
++        this.id = id;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public Date getTime() {
++        return time;
++    }
++
++    public void setTime(Date time) {
++        this.time = time;
++    }
++
++    public Gender getSex() {
++        return sex;
++    }
++
++    public void setSex(Gender sex) {
++        this.sex = sex;
++    }
++}
diff --cc general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/UserProvider.java
index d4bbb84,0000000..1c8af6b
mode 100644,000000..100644
--- a/general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/UserProvider.java
+++ b/general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/UserProvider.java
@@@ -1,27 -1,0 +1,27 @@@
- /*
-  * Licensed 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 org.apache.dubbo;
- 
- import java.util.List;
- 
- public interface UserProvider {
- 	User GetUser(String userId);
- 	User GetErr(String userId) throws Exception;
- 	User GetUser1(String userId) throws Exception;
-     User getUser(int usercode);
- 	User getUser(int usercode, String name);
-     void GetUser3();
- 	List<User> GetUsers(List<String> userIdList);
- 	User GetUser0(String userId, String name);
- }
++/*
++ * Licensed 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 org.apache.dubbo;
++
++import java.util.List;
++
++public interface UserProvider {
++	User GetUser(String userId);
++	User GetErr(String userId) throws Exception;
++	User GetUser1(String userId) throws Exception;
++    User getUser(int usercode);
++	User getUser(int usercode, String name);
++    void GetUser3();
++	List<User> GetUsers(List<String> userIdList);
++	User GetUser0(String userId, String name);
++}
diff --cc general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Gender.java
index 7b503cc,0000000..a016781
mode 100644,000000..100644
--- a/general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Gender.java
+++ b/general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Gender.java
@@@ -1,23 -1,0 +1,23 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- public enum  Gender {
-     MAN,
-     WOMAN
- }
++/*
++ * 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 org.apache.dubbo;
++
++public enum  Gender {
++    MAN,
++    WOMAN
++}
diff --cc general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/User.java
index 1d950db,0000000..0514219
mode 100644,000000..100644
--- a/general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/User.java
+++ b/general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/User.java
@@@ -1,83 -1,0 +1,83 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import java.util.Date;
- 
- public class User {
- 
-     private String id;
- 
-     private String name;
- 
-     private int age;
- 
-     private Date time = new Date();
- 
-     private Gender sex = Gender.MAN;
- 
-     public User() {
-     }
- 
- 
-     public User(String id, String name, int age) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-     }
- 
-     public String getId() {
-         return id;
-     }
- 
-     public void setId(String id) {
-         this.id = id;
-     }
- 
-     public String getName() {
-         return name;
-     }
- 
-     public void setName(String name) {
-         this.name = name;
-     }
- 
-     public int getAge() {
-         return age;
-     }
- 
-     public void setAge(int age) {
-         this.age = age;
-     }
- 
-     public Date getTime() {
-         return time;
-     }
- 
-     public void setTime(Date time) {
-         this.time = time;
-     }
- 
-     public Gender getSex() {
-         return sex;
-     }
- 
-     public void setSex(Gender sex) {
-         this.sex = sex;
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import java.util.Date;
++
++public class User {
++
++    private String id;
++
++    private String name;
++
++    private int age;
++
++    private Date time = new Date();
++
++    private Gender sex = Gender.MAN;
++
++    public User() {
++    }
++
++
++    public User(String id, String name, int age) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++    }
++
++    public String getId() {
++        return id;
++    }
++
++    public void setId(String id) {
++        this.id = id;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public Date getTime() {
++        return time;
++    }
++
++    public void setTime(Date time) {
++        this.time = time;
++    }
++
++    public Gender getSex() {
++        return sex;
++    }
++
++    public void setSex(Gender sex) {
++        this.sex = sex;
++    }
++}
diff --cc general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/UserProvider.java
index d4bbb84,0000000..1c8af6b
mode 100644,000000..100644
--- a/general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/UserProvider.java
+++ b/general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/UserProvider.java
@@@ -1,27 -1,0 +1,27 @@@
- /*
-  * Licensed 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 org.apache.dubbo;
- 
- import java.util.List;
- 
- public interface UserProvider {
- 	User GetUser(String userId);
- 	User GetErr(String userId) throws Exception;
- 	User GetUser1(String userId) throws Exception;
-     User getUser(int usercode);
- 	User getUser(int usercode, String name);
-     void GetUser3();
- 	List<User> GetUsers(List<String> userIdList);
- 	User GetUser0(String userId, String name);
- }
++/*
++ * Licensed 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 org.apache.dubbo;
++
++import java.util.List;
++
++public interface UserProvider {
++	User GetUser(String userId);
++	User GetErr(String userId) throws Exception;
++	User GetUser1(String userId) throws Exception;
++    User getUser(int usercode);
++	User getUser(int usercode, String name);
++    void GetUser3();
++	List<User> GetUsers(List<String> userIdList);
++	User GetUser0(String userId, String name);
++}
diff --cc general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
index 7b503cc,0000000..a016781
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
+++ b/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
@@@ -1,23 -1,0 +1,23 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- public enum  Gender {
-     MAN,
-     WOMAN
- }
++/*
++ * 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 org.apache.dubbo;
++
++public enum  Gender {
++    MAN,
++    WOMAN
++}
diff --cc general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/User.java
index 7fcfa38,0000000..039a883
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/User.java
+++ b/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/User.java
@@@ -1,95 -1,0 +1,95 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import java.io.Serializable;
- import java.util.Date;
- 
- public class User implements Serializable  {
- 
-     private String id;
- 
-     private String name;
- 
-     private int age;
- 
-     private Date time = new Date();
- 
-     private Gender sex = Gender.MAN;
- 
-     public User() {
-     }
- 
-     public User(String id, String name, int age) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-     }
- 
-     public User(String id, String name, int age, Date time, Gender sex) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-         this.time = time;
-         this.sex = sex;
-     }
- 
-     public String getId() {
-         return id;
-     }
- 
-     public void setId(String id) {
-         this.id = id;
-     }
- 
-     public String getName() {
-         return name;
-     }
- 
-     public void setName(String name) {
-         this.name = name;
-     }
- 
-     public int getAge() {
-         return age;
-     }
- 
-     public void setAge(int age) {
-         this.age = age;
-     }
- 
-     public Date getTime() {
-         return time;
-     }
- 
-     public void setTime(Date time) {
-         this.time = time;
-     }
- 
-     public Gender getSex() {
-         return sex;
-     }
- 
-     public void setSex(Gender sex) {
-         this.sex = sex;
-     }
- 
-     public String toString() {
-         return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time + ", gender:" + sex + "}";
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import java.io.Serializable;
++import java.util.Date;
++
++public class User implements Serializable  {
++
++    private String id;
++
++    private String name;
++
++    private int age;
++
++    private Date time = new Date();
++
++    private Gender sex = Gender.MAN;
++
++    public User() {
++    }
++
++    public User(String id, String name, int age) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++    }
++
++    public User(String id, String name, int age, Date time, Gender sex) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++        this.time = time;
++        this.sex = sex;
++    }
++
++    public String getId() {
++        return id;
++    }
++
++    public void setId(String id) {
++        this.id = id;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public Date getTime() {
++        return time;
++    }
++
++    public void setTime(Date time) {
++        this.time = time;
++    }
++
++    public Gender getSex() {
++        return sex;
++    }
++
++    public void setSex(Gender sex) {
++        this.sex = sex;
++    }
++
++    public String toString() {
++        return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time + ", gender:" + sex + "}";
++    }
++}
diff --cc general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
index 1c13f05,0000000..5cd6ffe
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
+++ b/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
@@@ -1,50 -1,0 +1,50 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import java.util.List;
- import java.util.Map;
- 
- public interface UserProvider {
- 
-     boolean isLimit(Gender gender, String name);
- 
-     User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
- 
-     List<User> GetUsers(List<String> userIdList);
- 
-     void GetUser3();
- 
-     User GetUser0(String userId, String name);
- 
- 	User GetErr(String userId) throws Exception;
- 
-     Map<String, User> GetUserMap(List<String> userIdList);
- 
-     User getUser(int usercode);
- 
-     User getUser(int usercode, String name);
- 
-     User queryUser(User user);
- 
-     Map<String, User> queryAll();
- 
-     int Calc(int a, int b);
- 
-     Response<Integer> Sum(int a, int b);
- }
++/*
++ * 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 org.apache.dubbo;
++
++import java.util.List;
++import java.util.Map;
++
++public interface UserProvider {
++
++    boolean isLimit(Gender gender, String name);
++
++    User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
++
++    List<User> GetUsers(List<String> userIdList);
++
++    void GetUser3();
++
++    User GetUser0(String userId, String name);
++
++	User GetErr(String userId) throws Exception;
++
++    Map<String, User> GetUserMap(List<String> userIdList);
++
++    User getUser(int usercode);
++
++    User getUser(int usercode, String name);
++
++    User queryUser(User user);
++
++    Map<String, User> queryAll();
++
++    int Calc(int a, int b);
++
++    Response<Integer> Sum(int a, int b);
++}
diff --cc general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
index cc6170e,0000000..3e2f9f2
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
+++ b/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
@@@ -1,143 -1,0 +1,143 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- import java.util.*;
- 
- public class UserProviderAnotherImpl implements UserProvider {
-     // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
-     private static final Logger logger = LoggerFactory.getLogger("userLogger"); // Output to com.dubbogo.user-server.log
- 
-     private Map<String, User> userMap = new HashMap<String, User>();
- 
-     public UserProviderAnotherImpl() {
-         // userMap.put("001", new User("001", "other-zhangsan", 18, new Date(1998-1900, 1, 2, 3, 4, 5), Gender.MAN));
-         userMap.put("001", new User("001", "other-zhangsan", 18, new Date(0x12345678), Gender.MAN));
-         userMap.put("002", new User("002", "other-lisi", 20, new Date(1996-1900, 1, 2, 3, 4, 5), Gender.MAN));
-         userMap.put("003", new User("003", "other-lily", 23, new Date(1993-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
-         userMap.put("004", new User("004", "other-lisa", 32, new Date(1985-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
-     }
- 
-     public boolean isLimit(Gender gender, String name) {
-         logger.info(String.format("input gender=%sand name=%s", gender, name));
-         return Gender.MAN == gender;
-     }
- 
-     public User GetUser(String userId) {
-         logger.info("input userId = " + userId);
-         return new User(userId, "Joe", 48);
-     }
- 
-     public User GetUser0(String userId, String name) {
-         return new User(userId, name, 48);
-     }
- 
-     public void GetUser3() {
-         logger.info("this is GetUser3 of another");
-     }
- 
-     public User GetErr(String userId) throws Exception {
-         throw new Exception("exception");
-     }
- 
-     public List<User> GetUsers(ArrayList<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     public Map<String, User> GetUserMap(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         Map<String, User> map = new HashMap<String, User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 map.put(id, userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return map;
-     }
- 
-     public List<User> GetUsers(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     // @Override
-     public User getUser(int userCode) {
-         logger.info("input userCode = " + userCode);
-         return new User(String.valueOf(userCode), "userCode get", 48);
-     }
- 
-     public User getUser(int usercode, String name) {
-         return new User(String.valueOf(usercode), name, 18);
-     }
- 
-     public User queryUser(User user) {
-         logger.info("input com.dubbogo.user = " + user);
-         return new User(user.getId(), "get:" + user.getName(), user.getAge() + 18);
-     }
- 
-     public Map<String, User> queryAll() {
-         logger.info("input");
-         Map<String, User> map = new HashMap<String, User>();
-         map.put("001", new User("001", "Joe", 18));
-         map.put("002", new User("002", "Wen", 20));
- 
-         return map;
-     }
- 
-     public int Calc(int a,int b) {
-         return a + b + 100;
-     }
- 
-     public Response<Integer> Sum(int a,int b) {
-         return Response.ok(a+b);
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++import java.util.*;
++
++public class UserProviderAnotherImpl implements UserProvider {
++    // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
++    private static final Logger logger = LoggerFactory.getLogger("userLogger"); // Output to com.dubbogo.user-server.log
++
++    private Map<String, User> userMap = new HashMap<String, User>();
++
++    public UserProviderAnotherImpl() {
++        // userMap.put("001", new User("001", "other-zhangsan", 18, new Date(1998-1900, 1, 2, 3, 4, 5), Gender.MAN));
++        userMap.put("001", new User("001", "other-zhangsan", 18, new Date(0x12345678), Gender.MAN));
++        userMap.put("002", new User("002", "other-lisi", 20, new Date(1996-1900, 1, 2, 3, 4, 5), Gender.MAN));
++        userMap.put("003", new User("003", "other-lily", 23, new Date(1993-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
++        userMap.put("004", new User("004", "other-lisa", 32, new Date(1985-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
++    }
++
++    public boolean isLimit(Gender gender, String name) {
++        logger.info(String.format("input gender=%sand name=%s", gender, name));
++        return Gender.MAN == gender;
++    }
++
++    public User GetUser(String userId) {
++        logger.info("input userId = " + userId);
++        return new User(userId, "Joe", 48);
++    }
++
++    public User GetUser0(String userId, String name) {
++        return new User(userId, name, 48);
++    }
++
++    public void GetUser3() {
++        logger.info("this is GetUser3 of another");
++    }
++
++    public User GetErr(String userId) throws Exception {
++        throw new Exception("exception");
++    }
++
++    public List<User> GetUsers(ArrayList<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    public Map<String, User> GetUserMap(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        Map<String, User> map = new HashMap<String, User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                map.put(id, userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return map;
++    }
++
++    public List<User> GetUsers(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    // @Override
++    public User getUser(int userCode) {
++        logger.info("input userCode = " + userCode);
++        return new User(String.valueOf(userCode), "userCode get", 48);
++    }
++
++    public User getUser(int usercode, String name) {
++        return new User(String.valueOf(usercode), name, 18);
++    }
++
++    public User queryUser(User user) {
++        logger.info("input com.dubbogo.user = " + user);
++        return new User(user.getId(), "get:" + user.getName(), user.getAge() + 18);
++    }
++
++    public Map<String, User> queryAll() {
++        logger.info("input");
++        Map<String, User> map = new HashMap<String, User>();
++        map.put("001", new User("001", "Joe", 18));
++        map.put("002", new User("002", "Wen", 20));
++
++        return map;
++    }
++
++    public int Calc(int a,int b) {
++        return a + b + 100;
++    }
++
++    public Response<Integer> Sum(int a,int b) {
++        return Response.ok(a+b);
++    }
++}
diff --cc general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
index bdb9651,0000000..1a4bb59
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
+++ b/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
@@@ -1,115 -1,0 +1,115 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- import java.util.*;
- 
- public class UserProviderImpl implements UserProvider {
-     // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
-     private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); // Output to com.dubbogo.user-server.log
-     Map<String, User> userMap = new HashMap<String, User>();
- 
-     public UserProviderImpl() {
-         userMap.put("A001", new User("A001", "demo-zhangsan", 18));
-         userMap.put("A002", new User("A002", "demo-lisi", 20));
-         userMap.put("A003", new User("A003", "demo-lily", 23));
-         userMap.put("A004", new User("A004", "demo-lisa", 32));
-     }
- 
-     public boolean isLimit(Gender gender, String name) {
-         return Gender.WOMAN == gender;
-     }
- 
-     public User GetUser(String userId) {
-         return new User(userId, "zhangsan", 18);
-     }
- 
-     public User GetErr(String userId) throws Exception {
-         throw new Exception("exception");
-     }
- 
-     public User GetUser0(String userId, String name) {
-             return new User(userId, name, 18);
-     }
- 
-     public List<User> GetUsers(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         LOG.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             LOG.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     public void GetUser3() {
-         LOG.info("this is GetUser3 of impl");
-     }
- 
-     public Map<String, User> GetUserMap(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         Map<String, User> map = new HashMap<String, User>();
-         LOG.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             LOG.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 map.put(id, userMap.get(id));
-                 LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return map;
-     }
- 
-     public User queryUser(User user) {
-         return new User(user.getId(), "hello:" +user.getName(), user.getAge() + 18);
-     }
- 
-     public Map<String, User> queryAll() {
-         return userMap;
-     }
- 
- 
-     public User getUser(int userCode) {
-         return new User(String.valueOf(userCode), "userCode get", 48);
-     }
- 
-     public User getUser(int usercode, String name) {
-         return new User(String.valueOf(usercode), name, 38);
-     }
- 
-     public int Calc(int a,int b) {
-         return a + b;
-     }
- 
-      public Response<Integer> Sum(int a,int b) {
-         return Response.ok(a+b);
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++import java.util.*;
++
++public class UserProviderImpl implements UserProvider {
++    // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
++    private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); // Output to com.dubbogo.user-server.log
++    Map<String, User> userMap = new HashMap<String, User>();
++
++    public UserProviderImpl() {
++        userMap.put("A001", new User("A001", "demo-zhangsan", 18));
++        userMap.put("A002", new User("A002", "demo-lisi", 20));
++        userMap.put("A003", new User("A003", "demo-lily", 23));
++        userMap.put("A004", new User("A004", "demo-lisa", 32));
++    }
++
++    public boolean isLimit(Gender gender, String name) {
++        return Gender.WOMAN == gender;
++    }
++
++    public User GetUser(String userId) {
++        return new User(userId, "zhangsan", 18);
++    }
++
++    public User GetErr(String userId) throws Exception {
++        throw new Exception("exception");
++    }
++
++    public User GetUser0(String userId, String name) {
++            return new User(userId, name, 18);
++    }
++
++    public List<User> GetUsers(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        LOG.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            LOG.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    public void GetUser3() {
++        LOG.info("this is GetUser3 of impl");
++    }
++
++    public Map<String, User> GetUserMap(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        Map<String, User> map = new HashMap<String, User>();
++        LOG.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            LOG.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                map.put(id, userMap.get(id));
++                LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return map;
++    }
++
++    public User queryUser(User user) {
++        return new User(user.getId(), "hello:" +user.getName(), user.getAge() + 18);
++    }
++
++    public Map<String, User> queryAll() {
++        return userMap;
++    }
++
++
++    public User getUser(int userCode) {
++        return new User(String.valueOf(userCode), "userCode get", 48);
++    }
++
++    public User getUser(int usercode, String name) {
++        return new User(String.valueOf(usercode), name, 38);
++    }
++
++    public int Calc(int a,int b) {
++        return a + b;
++    }
++
++     public Response<Integer> Sum(int a,int b) {
++        return Response.ok(a+b);
++    }
++}
diff --cc general/dubbo/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
index cd63653,0000000..efad8af
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
+++ b/general/dubbo/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
@@@ -1,36 -1,0 +1,36 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- 
- <beans xmlns="http://www.springframework.org/schema/beans"
- 	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- 	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- 	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
- 
- 	<!-- 应用名 -->
- 	<dubbo:application name="user-info-server"/>
- 	<!-- 连接到哪个本地注册中心 -->
- 	<dubbo:registry id="dubbogo"  address="zookeeper://127.0.0.1:2181" />
- 	<!-- 用dubbo协议在20880端口暴露服务 -->
- 	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
- 	<!-- 声明需要暴露的服务接口 -->
- 	<dubbo:service id="aaa" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="demoService"/>
- 	<dubbo:service id="bbb" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" version="2.0"/>
- 	<dubbo:service id="ccc" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" group="as" version="2.0"/>
- 
- 	<bean id="demoService" class="org.apache.dubbo.UserProviderImpl" />
- 	<bean id="otherService" class="org.apache.dubbo.UserProviderAnotherImpl"/>
- 
- </beans>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++
++<beans xmlns="http://www.springframework.org/schema/beans"
++	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
++	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
++	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
++	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
++
++	<!-- 应用名 -->
++	<dubbo:application name="user-info-server"/>
++	<!-- 连接到哪个本地注册中心 -->
++	<dubbo:registry id="dubbogo"  address="zookeeper://127.0.0.1:2181" />
++	<!-- 用dubbo协议在20880端口暴露服务 -->
++	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
++	<!-- 声明需要暴露的服务接口 -->
++	<dubbo:service id="aaa" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="demoService"/>
++	<dubbo:service id="bbb" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" version="2.0"/>
++	<dubbo:service id="ccc" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" group="as" version="2.0"/>
++
++	<bean id="demoService" class="org.apache.dubbo.UserProviderImpl" />
++	<bean id="otherService" class="org.apache.dubbo.UserProviderAnotherImpl"/>
++
++</beans>
diff --cc general/dubbo/java-server/2.6/src/main/resources/log4j.properties
index 13c8049,0000000..806e33d
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.6/src/main/resources/log4j.properties
+++ b/general/dubbo/java-server/2.6/src/main/resources/log4j.properties
@@@ -1,20 -1,0 +1,20 @@@
- ## Logger configure file for myproject
- log.dir=logs/
- datestamp=yyyy-MM-dd/HH:mm:ss.SSS
- 
- log4j.rootLogger=DEBUG, file, console
- 
- log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.file.threshold=DEBUG
- log4j.appender.file.File=${log.dir}/log4j.log
- log4j.appender.file.DatePattern=-yyyyMMddHH
- log4j.appender.file.ImmediateFlush=true
- log4j.appender.file.Append=true
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
- log4j.appender.console=org.apache.log4j.ConsoleAppender
- log4j.appender.console.Threshold=DEBUG
- log4j.appender.console.layout=org.apache.log4j.PatternLayout
- log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
++## Logger configure file for myproject
++log.dir=logs/
++datestamp=yyyy-MM-dd/HH:mm:ss.SSS
++
++log4j.rootLogger=DEBUG, file, console
++
++log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
++log4j.appender.file.threshold=DEBUG
++log4j.appender.file.File=${log.dir}/log4j.log
++log4j.appender.file.DatePattern=-yyyyMMddHH
++log4j.appender.file.ImmediateFlush=true
++log4j.appender.file.Append=true
++log4j.appender.file.layout=org.apache.log4j.PatternLayout
++log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
++log4j.appender.console=org.apache.log4j.ConsoleAppender
++log4j.appender.console.Threshold=DEBUG
++log4j.appender.console.layout=org.apache.log4j.PatternLayout
++log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
diff --cc general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
index 7b503cc,0000000..a016781
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
+++ b/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
@@@ -1,23 -1,0 +1,23 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- public enum  Gender {
-     MAN,
-     WOMAN
- }
++/*
++ * 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 org.apache.dubbo;
++
++public enum  Gender {
++    MAN,
++    WOMAN
++}
diff --cc general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/User.java
index 7fcfa38,0000000..039a883
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/User.java
+++ b/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/User.java
@@@ -1,95 -1,0 +1,95 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import java.io.Serializable;
- import java.util.Date;
- 
- public class User implements Serializable  {
- 
-     private String id;
- 
-     private String name;
- 
-     private int age;
- 
-     private Date time = new Date();
- 
-     private Gender sex = Gender.MAN;
- 
-     public User() {
-     }
- 
-     public User(String id, String name, int age) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-     }
- 
-     public User(String id, String name, int age, Date time, Gender sex) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-         this.time = time;
-         this.sex = sex;
-     }
- 
-     public String getId() {
-         return id;
-     }
- 
-     public void setId(String id) {
-         this.id = id;
-     }
- 
-     public String getName() {
-         return name;
-     }
- 
-     public void setName(String name) {
-         this.name = name;
-     }
- 
-     public int getAge() {
-         return age;
-     }
- 
-     public void setAge(int age) {
-         this.age = age;
-     }
- 
-     public Date getTime() {
-         return time;
-     }
- 
-     public void setTime(Date time) {
-         this.time = time;
-     }
- 
-     public Gender getSex() {
-         return sex;
-     }
- 
-     public void setSex(Gender sex) {
-         this.sex = sex;
-     }
- 
-     public String toString() {
-         return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time + ", gender:" + sex + "}";
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import java.io.Serializable;
++import java.util.Date;
++
++public class User implements Serializable  {
++
++    private String id;
++
++    private String name;
++
++    private int age;
++
++    private Date time = new Date();
++
++    private Gender sex = Gender.MAN;
++
++    public User() {
++    }
++
++    public User(String id, String name, int age) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++    }
++
++    public User(String id, String name, int age, Date time, Gender sex) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++        this.time = time;
++        this.sex = sex;
++    }
++
++    public String getId() {
++        return id;
++    }
++
++    public void setId(String id) {
++        this.id = id;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public Date getTime() {
++        return time;
++    }
++
++    public void setTime(Date time) {
++        this.time = time;
++    }
++
++    public Gender getSex() {
++        return sex;
++    }
++
++    public void setSex(Gender sex) {
++        this.sex = sex;
++    }
++
++    public String toString() {
++        return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time + ", gender:" + sex + "}";
++    }
++}
diff --cc general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
index 1c13f05,0000000..5cd6ffe
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
+++ b/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
@@@ -1,50 -1,0 +1,50 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import java.util.List;
- import java.util.Map;
- 
- public interface UserProvider {
- 
-     boolean isLimit(Gender gender, String name);
- 
-     User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
- 
-     List<User> GetUsers(List<String> userIdList);
- 
-     void GetUser3();
- 
-     User GetUser0(String userId, String name);
- 
- 	User GetErr(String userId) throws Exception;
- 
-     Map<String, User> GetUserMap(List<String> userIdList);
- 
-     User getUser(int usercode);
- 
-     User getUser(int usercode, String name);
- 
-     User queryUser(User user);
- 
-     Map<String, User> queryAll();
- 
-     int Calc(int a, int b);
- 
-     Response<Integer> Sum(int a, int b);
- }
++/*
++ * 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 org.apache.dubbo;
++
++import java.util.List;
++import java.util.Map;
++
++public interface UserProvider {
++
++    boolean isLimit(Gender gender, String name);
++
++    User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
++
++    List<User> GetUsers(List<String> userIdList);
++
++    void GetUser3();
++
++    User GetUser0(String userId, String name);
++
++	User GetErr(String userId) throws Exception;
++
++    Map<String, User> GetUserMap(List<String> userIdList);
++
++    User getUser(int usercode);
++
++    User getUser(int usercode, String name);
++
++    User queryUser(User user);
++
++    Map<String, User> queryAll();
++
++    int Calc(int a, int b);
++
++    Response<Integer> Sum(int a, int b);
++}
diff --cc general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
index cc6170e,0000000..3e2f9f2
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
+++ b/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
@@@ -1,143 -1,0 +1,143 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- import java.util.*;
- 
- public class UserProviderAnotherImpl implements UserProvider {
-     // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
-     private static final Logger logger = LoggerFactory.getLogger("userLogger"); // Output to com.dubbogo.user-server.log
- 
-     private Map<String, User> userMap = new HashMap<String, User>();
- 
-     public UserProviderAnotherImpl() {
-         // userMap.put("001", new User("001", "other-zhangsan", 18, new Date(1998-1900, 1, 2, 3, 4, 5), Gender.MAN));
-         userMap.put("001", new User("001", "other-zhangsan", 18, new Date(0x12345678), Gender.MAN));
-         userMap.put("002", new User("002", "other-lisi", 20, new Date(1996-1900, 1, 2, 3, 4, 5), Gender.MAN));
-         userMap.put("003", new User("003", "other-lily", 23, new Date(1993-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
-         userMap.put("004", new User("004", "other-lisa", 32, new Date(1985-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
-     }
- 
-     public boolean isLimit(Gender gender, String name) {
-         logger.info(String.format("input gender=%sand name=%s", gender, name));
-         return Gender.MAN == gender;
-     }
- 
-     public User GetUser(String userId) {
-         logger.info("input userId = " + userId);
-         return new User(userId, "Joe", 48);
-     }
- 
-     public User GetUser0(String userId, String name) {
-         return new User(userId, name, 48);
-     }
- 
-     public void GetUser3() {
-         logger.info("this is GetUser3 of another");
-     }
- 
-     public User GetErr(String userId) throws Exception {
-         throw new Exception("exception");
-     }
- 
-     public List<User> GetUsers(ArrayList<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     public Map<String, User> GetUserMap(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         Map<String, User> map = new HashMap<String, User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 map.put(id, userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return map;
-     }
- 
-     public List<User> GetUsers(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     // @Override
-     public User getUser(int userCode) {
-         logger.info("input userCode = " + userCode);
-         return new User(String.valueOf(userCode), "userCode get", 48);
-     }
- 
-     public User getUser(int usercode, String name) {
-         return new User(String.valueOf(usercode), name, 18);
-     }
- 
-     public User queryUser(User user) {
-         logger.info("input com.dubbogo.user = " + user);
-         return new User(user.getId(), "get:" + user.getName(), user.getAge() + 18);
-     }
- 
-     public Map<String, User> queryAll() {
-         logger.info("input");
-         Map<String, User> map = new HashMap<String, User>();
-         map.put("001", new User("001", "Joe", 18));
-         map.put("002", new User("002", "Wen", 20));
- 
-         return map;
-     }
- 
-     public int Calc(int a,int b) {
-         return a + b + 100;
-     }
- 
-     public Response<Integer> Sum(int a,int b) {
-         return Response.ok(a+b);
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++import java.util.*;
++
++public class UserProviderAnotherImpl implements UserProvider {
++    // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
++    private static final Logger logger = LoggerFactory.getLogger("userLogger"); // Output to com.dubbogo.user-server.log
++
++    private Map<String, User> userMap = new HashMap<String, User>();
++
++    public UserProviderAnotherImpl() {
++        // userMap.put("001", new User("001", "other-zhangsan", 18, new Date(1998-1900, 1, 2, 3, 4, 5), Gender.MAN));
++        userMap.put("001", new User("001", "other-zhangsan", 18, new Date(0x12345678), Gender.MAN));
++        userMap.put("002", new User("002", "other-lisi", 20, new Date(1996-1900, 1, 2, 3, 4, 5), Gender.MAN));
++        userMap.put("003", new User("003", "other-lily", 23, new Date(1993-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
++        userMap.put("004", new User("004", "other-lisa", 32, new Date(1985-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
++    }
++
++    public boolean isLimit(Gender gender, String name) {
++        logger.info(String.format("input gender=%sand name=%s", gender, name));
++        return Gender.MAN == gender;
++    }
++
++    public User GetUser(String userId) {
++        logger.info("input userId = " + userId);
++        return new User(userId, "Joe", 48);
++    }
++
++    public User GetUser0(String userId, String name) {
++        return new User(userId, name, 48);
++    }
++
++    public void GetUser3() {
++        logger.info("this is GetUser3 of another");
++    }
++
++    public User GetErr(String userId) throws Exception {
++        throw new Exception("exception");
++    }
++
++    public List<User> GetUsers(ArrayList<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    public Map<String, User> GetUserMap(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        Map<String, User> map = new HashMap<String, User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                map.put(id, userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return map;
++    }
++
++    public List<User> GetUsers(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    // @Override
++    public User getUser(int userCode) {
++        logger.info("input userCode = " + userCode);
++        return new User(String.valueOf(userCode), "userCode get", 48);
++    }
++
++    public User getUser(int usercode, String name) {
++        return new User(String.valueOf(usercode), name, 18);
++    }
++
++    public User queryUser(User user) {
++        logger.info("input com.dubbogo.user = " + user);
++        return new User(user.getId(), "get:" + user.getName(), user.getAge() + 18);
++    }
++
++    public Map<String, User> queryAll() {
++        logger.info("input");
++        Map<String, User> map = new HashMap<String, User>();
++        map.put("001", new User("001", "Joe", 18));
++        map.put("002", new User("002", "Wen", 20));
++
++        return map;
++    }
++
++    public int Calc(int a,int b) {
++        return a + b + 100;
++    }
++
++    public Response<Integer> Sum(int a,int b) {
++        return Response.ok(a+b);
++    }
++}
diff --cc general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
index bdb9651,0000000..1a4bb59
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
+++ b/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
@@@ -1,115 -1,0 +1,115 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- import java.util.*;
- 
- public class UserProviderImpl implements UserProvider {
-     // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
-     private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); // Output to com.dubbogo.user-server.log
-     Map<String, User> userMap = new HashMap<String, User>();
- 
-     public UserProviderImpl() {
-         userMap.put("A001", new User("A001", "demo-zhangsan", 18));
-         userMap.put("A002", new User("A002", "demo-lisi", 20));
-         userMap.put("A003", new User("A003", "demo-lily", 23));
-         userMap.put("A004", new User("A004", "demo-lisa", 32));
-     }
- 
-     public boolean isLimit(Gender gender, String name) {
-         return Gender.WOMAN == gender;
-     }
- 
-     public User GetUser(String userId) {
-         return new User(userId, "zhangsan", 18);
-     }
- 
-     public User GetErr(String userId) throws Exception {
-         throw new Exception("exception");
-     }
- 
-     public User GetUser0(String userId, String name) {
-             return new User(userId, name, 18);
-     }
- 
-     public List<User> GetUsers(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         LOG.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             LOG.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     public void GetUser3() {
-         LOG.info("this is GetUser3 of impl");
-     }
- 
-     public Map<String, User> GetUserMap(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         Map<String, User> map = new HashMap<String, User>();
-         LOG.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             LOG.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 map.put(id, userMap.get(id));
-                 LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return map;
-     }
- 
-     public User queryUser(User user) {
-         return new User(user.getId(), "hello:" +user.getName(), user.getAge() + 18);
-     }
- 
-     public Map<String, User> queryAll() {
-         return userMap;
-     }
- 
- 
-     public User getUser(int userCode) {
-         return new User(String.valueOf(userCode), "userCode get", 48);
-     }
- 
-     public User getUser(int usercode, String name) {
-         return new User(String.valueOf(usercode), name, 38);
-     }
- 
-     public int Calc(int a,int b) {
-         return a + b;
-     }
- 
-      public Response<Integer> Sum(int a,int b) {
-         return Response.ok(a+b);
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++import java.util.*;
++
++public class UserProviderImpl implements UserProvider {
++    // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
++    private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); // Output to com.dubbogo.user-server.log
++    Map<String, User> userMap = new HashMap<String, User>();
++
++    public UserProviderImpl() {
++        userMap.put("A001", new User("A001", "demo-zhangsan", 18));
++        userMap.put("A002", new User("A002", "demo-lisi", 20));
++        userMap.put("A003", new User("A003", "demo-lily", 23));
++        userMap.put("A004", new User("A004", "demo-lisa", 32));
++    }
++
++    public boolean isLimit(Gender gender, String name) {
++        return Gender.WOMAN == gender;
++    }
++
++    public User GetUser(String userId) {
++        return new User(userId, "zhangsan", 18);
++    }
++
++    public User GetErr(String userId) throws Exception {
++        throw new Exception("exception");
++    }
++
++    public User GetUser0(String userId, String name) {
++            return new User(userId, name, 18);
++    }
++
++    public List<User> GetUsers(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        LOG.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            LOG.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    public void GetUser3() {
++        LOG.info("this is GetUser3 of impl");
++    }
++
++    public Map<String, User> GetUserMap(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        Map<String, User> map = new HashMap<String, User>();
++        LOG.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            LOG.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                map.put(id, userMap.get(id));
++                LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return map;
++    }
++
++    public User queryUser(User user) {
++        return new User(user.getId(), "hello:" +user.getName(), user.getAge() + 18);
++    }
++
++    public Map<String, User> queryAll() {
++        return userMap;
++    }
++
++
++    public User getUser(int userCode) {
++        return new User(String.valueOf(userCode), "userCode get", 48);
++    }
++
++    public User getUser(int usercode, String name) {
++        return new User(String.valueOf(usercode), name, 38);
++    }
++
++    public int Calc(int a,int b) {
++        return a + b;
++    }
++
++     public Response<Integer> Sum(int a,int b) {
++        return Response.ok(a+b);
++    }
++}
diff --cc general/dubbo/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
index cd63653,0000000..efad8af
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
+++ b/general/dubbo/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
@@@ -1,36 -1,0 +1,36 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- 
- <beans xmlns="http://www.springframework.org/schema/beans"
- 	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- 	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- 	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
- 
- 	<!-- 应用名 -->
- 	<dubbo:application name="user-info-server"/>
- 	<!-- 连接到哪个本地注册中心 -->
- 	<dubbo:registry id="dubbogo"  address="zookeeper://127.0.0.1:2181" />
- 	<!-- 用dubbo协议在20880端口暴露服务 -->
- 	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
- 	<!-- 声明需要暴露的服务接口 -->
- 	<dubbo:service id="aaa" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="demoService"/>
- 	<dubbo:service id="bbb" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" version="2.0"/>
- 	<dubbo:service id="ccc" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" group="as" version="2.0"/>
- 
- 	<bean id="demoService" class="org.apache.dubbo.UserProviderImpl" />
- 	<bean id="otherService" class="org.apache.dubbo.UserProviderAnotherImpl"/>
- 
- </beans>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++
++<beans xmlns="http://www.springframework.org/schema/beans"
++	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
++	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
++	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
++	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
++
++	<!-- 应用名 -->
++	<dubbo:application name="user-info-server"/>
++	<!-- 连接到哪个本地注册中心 -->
++	<dubbo:registry id="dubbogo"  address="zookeeper://127.0.0.1:2181" />
++	<!-- 用dubbo协议在20880端口暴露服务 -->
++	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
++	<!-- 声明需要暴露的服务接口 -->
++	<dubbo:service id="aaa" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="demoService"/>
++	<dubbo:service id="bbb" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" version="2.0"/>
++	<dubbo:service id="ccc" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" group="as" version="2.0"/>
++
++	<bean id="demoService" class="org.apache.dubbo.UserProviderImpl" />
++	<bean id="otherService" class="org.apache.dubbo.UserProviderAnotherImpl"/>
++
++</beans>
diff --cc general/dubbo/java-server/2.7/src/main/resources/log4j.properties
index 13c8049,0000000..806e33d
mode 100644,000000..100644
--- a/general/dubbo/java-server/2.7/src/main/resources/log4j.properties
+++ b/general/dubbo/java-server/2.7/src/main/resources/log4j.properties
@@@ -1,20 -1,0 +1,20 @@@
- ## Logger configure file for myproject
- log.dir=logs/
- datestamp=yyyy-MM-dd/HH:mm:ss.SSS
- 
- log4j.rootLogger=DEBUG, file, console
- 
- log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.file.threshold=DEBUG
- log4j.appender.file.File=${log.dir}/log4j.log
- log4j.appender.file.DatePattern=-yyyyMMddHH
- log4j.appender.file.ImmediateFlush=true
- log4j.appender.file.Append=true
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
- log4j.appender.console=org.apache.log4j.ConsoleAppender
- log4j.appender.console.Threshold=DEBUG
- log4j.appender.console.layout=org.apache.log4j.PatternLayout
- log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
++## Logger configure file for myproject
++log.dir=logs/
++datestamp=yyyy-MM-dd/HH:mm:ss.SSS
++
++log4j.rootLogger=DEBUG, file, console
++
++log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
++log4j.appender.file.threshold=DEBUG
++log4j.appender.file.File=${log.dir}/log4j.log
++log4j.appender.file.DatePattern=-yyyyMMddHH
++log4j.appender.file.ImmediateFlush=true
++log4j.appender.file.Append=true
++log4j.appender.file.layout=org.apache.log4j.PatternLayout
++log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
++log4j.appender.console=org.apache.log4j.ConsoleAppender
++log4j.appender.console.Threshold=DEBUG
++log4j.appender.console.layout=org.apache.log4j.PatternLayout
++log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
diff --cc general/grpc/stream/go-client/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/general/grpc/stream/go-client/profiles/dev/log.yml
+++ b/general/grpc/stream/go-client/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/stream/go-client/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/general/grpc/stream/go-client/profiles/release/log.yml
+++ b/general/grpc/stream/go-client/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/stream/go-client/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/general/grpc/stream/go-client/profiles/test/log.yml
+++ b/general/grpc/stream/go-client/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/stream/go-server/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/general/grpc/stream/go-server/profiles/dev/log.yml
+++ b/general/grpc/stream/go-server/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/stream/go-server/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/general/grpc/stream/go-server/profiles/release/log.yml
+++ b/general/grpc/stream/go-server/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/stream/go-server/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/general/grpc/stream/go-server/profiles/test/log.yml
+++ b/general/grpc/stream/go-server/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/unary/go-client/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/general/grpc/unary/go-client/profiles/dev/log.yml
+++ b/general/grpc/unary/go-client/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/unary/go-client/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/general/grpc/unary/go-client/profiles/release/log.yml
+++ b/general/grpc/unary/go-client/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/unary/go-client/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/general/grpc/unary/go-client/profiles/test/log.yml
+++ b/general/grpc/unary/go-client/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/unary/go-server/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/general/grpc/unary/go-server/profiles/dev/log.yml
+++ b/general/grpc/unary/go-server/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/unary/go-server/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/general/grpc/unary/go-server/profiles/release/log.yml
+++ b/general/grpc/unary/go-server/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/grpc/unary/go-server/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/general/grpc/unary/go-server/profiles/test/log.yml
+++ b/general/grpc/unary/go-server/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/jsonrpc/go-client/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/general/jsonrpc/go-client/profiles/dev/log.yml
+++ b/general/jsonrpc/go-client/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/jsonrpc/go-client/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/general/jsonrpc/go-client/profiles/release/log.yml
+++ b/general/jsonrpc/go-client/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/jsonrpc/go-client/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/general/jsonrpc/go-client/profiles/test/log.yml
+++ b/general/jsonrpc/go-client/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/jsonrpc/go-server/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/general/jsonrpc/go-server/profiles/dev/log.yml
+++ b/general/jsonrpc/go-server/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/jsonrpc/go-server/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/general/jsonrpc/go-server/profiles/release/log.yml
+++ b/general/jsonrpc/go-server/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/jsonrpc/go-server/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/general/jsonrpc/go-server/profiles/test/log.yml
+++ b/general/jsonrpc/go-server/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc general/jsonrpc/java-client/src/main/assembly/assembly.xml
index 47757d1,0000000..40c34d8
mode 100644,000000..100644
--- a/general/jsonrpc/java-client/src/main/assembly/assembly.xml
+++ b/general/jsonrpc/java-client/src/main/assembly/assembly.xml
@@@ -1,39 -1,0 +1,39 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- 
- <assembly>
- 	<id>assembly</id>
- 	<formats>
- 		<format>tar.gz</format>
- 	</formats>
- 	<includeBaseDirectory>true</includeBaseDirectory>
- 	<fileSets>
- 		<fileSet>
- 			<directory>${project.build.directory}/dubbo/META-INF/assembly/bin</directory>
- 			<outputDirectory>bin</outputDirectory>
- 			<fileMode>0755</fileMode>
- 		</fileSet>
- 		<fileSet>
- 			<directory>src/main/assembly/conf</directory>
- 			<outputDirectory>conf</outputDirectory>
- 			<fileMode>0644</fileMode>
- 		</fileSet>
- 	</fileSets>
- 	<dependencySets>
- 		<dependencySet>
- 			<outputDirectory>lib</outputDirectory>
- 		</dependencySet>
- 	</dependencySets>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++
++<assembly>
++	<id>assembly</id>
++	<formats>
++		<format>tar.gz</format>
++	</formats>
++	<includeBaseDirectory>true</includeBaseDirectory>
++	<fileSets>
++		<fileSet>
++			<directory>${project.build.directory}/dubbo/META-INF/assembly/bin</directory>
++			<outputDirectory>bin</outputDirectory>
++			<fileMode>0755</fileMode>
++		</fileSet>
++		<fileSet>
++			<directory>src/main/assembly/conf</directory>
++			<outputDirectory>conf</outputDirectory>
++			<fileMode>0644</fileMode>
++		</fileSet>
++	</fileSets>
++	<dependencySets>
++		<dependencySet>
++			<outputDirectory>lib</outputDirectory>
++		</dependencySet>
++	</dependencySets>
 +</assembly>
diff --cc general/jsonrpc/java-client/src/main/assembly/conf/dubbo.properties
index fc7b9ae,0000000..73da0df
mode 100644,000000..100644
--- a/general/jsonrpc/java-client/src/main/assembly/conf/dubbo.properties
+++ b/general/jsonrpc/java-client/src/main/assembly/conf/dubbo.properties
@@@ -1,13 -1,0 +1,13 @@@
- ### dubboע���������� ###
- dubbo.container = log4j,spring
- dubbo.application.name = user-info-client
- dubbo.application.owner = AlexStocks
- dubbo.application.environment  =  product
- dubbo.registry.address = zookeeper://127.0.0.1:2181
- dubbo.monitor.protocol = zookeeper
- dubbo.consumer.timeout = 10000
- dubbo.provider.timeout = 10000
- dubbo.protocol.name = jsonrpc
- 
- dubbo.log4j.file = logs/client.log
- dubbo.log4j.level = WARN
++### dubboע���������� ###
++dubbo.container = log4j,spring
++dubbo.application.name = user-info-client
++dubbo.application.owner = AlexStocks
++dubbo.application.environment  =  product
++dubbo.registry.address = zookeeper://127.0.0.1:2181
++dubbo.monitor.protocol = zookeeper
++dubbo.consumer.timeout = 10000
++dubbo.provider.timeout = 10000
++dubbo.protocol.name = jsonrpc
++
++dubbo.log4j.file = logs/client.log
++dubbo.log4j.level = WARN
diff --cc general/jsonrpc/java-client/src/main/java/com/ikurento/user/Gender.java
index e606be7,0000000..e74a5d4
mode 100644,000000..100644
--- a/general/jsonrpc/java-client/src/main/java/com/ikurento/user/Gender.java
+++ b/general/jsonrpc/java-client/src/main/java/com/ikurento/user/Gender.java
@@@ -1,23 -1,0 +1,23 @@@
- /*
-  * 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 com.ikurento.user;
- 
- public enum  Gender {
-     MAN,
-     WOMAN
- }
++/*
++ * 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 com.ikurento.user;
++
++public enum  Gender {
++    MAN,
++    WOMAN
++}
diff --cc general/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java
index 7f228b3,0000000..68556cc
mode 100644,000000..100644
--- a/general/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java
+++ b/general/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java
@@@ -1,83 -1,0 +1,83 @@@
- /*
-  * 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 com.ikurento.user;
- 
- import java.util.Date;
- 
- public class User {
- 
-     private String id;
- 
-     private String name;
- 
-     private int age;
- 
-     private Date time = new Date();
- 
-     private Gender sex = Gender.MAN;
- 
-     public User() {
-     }
- 
- 
-     public User(String id, String name, int age) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-     }
- 
-     public String getId() {
-         return id;
-     }
- 
-     public void setId(String id) {
-         this.id = id;
-     }
- 
-     public String getName() {
-         return name;
-     }
- 
-     public void setName(String name) {
-         this.name = name;
-     }
- 
-     public int getAge() {
-         return age;
-     }
- 
-     public void setAge(int age) {
-         this.age = age;
-     }
- 
-     public Date getTime() {
-         return time;
-     }
- 
-     public void setTime(Date time) {
-         this.time = time;
-     }
- 
-     public Gender getSex() {
-         return sex;
-     }
- 
-     public void setSex(Gender sex) {
-         this.sex = sex;
-     }
- }
++/*
++ * 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 com.ikurento.user;
++
++import java.util.Date;
++
++public class User {
++
++    private String id;
++
++    private String name;
++
++    private int age;
++
++    private Date time = new Date();
++
++    private Gender sex = Gender.MAN;
++
++    public User() {
++    }
++
++
++    public User(String id, String name, int age) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++    }
++
++    public String getId() {
++        return id;
++    }
++
++    public void setId(String id) {
++        this.id = id;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public Date getTime() {
++        return time;
++    }
++
++    public void setTime(Date time) {
++        this.time = time;
++    }
++
++    public Gender getSex() {
++        return sex;
++    }
++
++    public void setSex(Gender sex) {
++        this.sex = sex;
++    }
++}
diff --cc general/jsonrpc/java-client/src/main/java/com/ikurento/user/UserProvider.java
index 5518577,0000000..70fdcb0
mode 100644,000000..100644
--- a/general/jsonrpc/java-client/src/main/java/com/ikurento/user/UserProvider.java
+++ b/general/jsonrpc/java-client/src/main/java/com/ikurento/user/UserProvider.java
@@@ -1,25 -1,0 +1,25 @@@
- /*
-  * Licensed 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 com.ikurento.user;
- 
- import java.util.List;
- 
- public interface UserProvider {
- 	User GetUser(String userId);
-     User getUser(int usercode);
-     void GetUser3();
- 	List<User> GetUsers(List<String> userIdList);
- 	User GetUser0(String userId, String name);
- }
++/*
++ * Licensed 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 com.ikurento.user;
++
++import java.util.List;
++
++public interface UserProvider {
++	User GetUser(String userId);
++    User getUser(int usercode);
++    void GetUser3();
++	List<User> GetUsers(List<String> userIdList);
++	User GetUser0(String userId, String name);
++}
diff --cc general/jsonrpc/java-client/src/main/resources/META-INF/spring/service.xml
index 854d513,0000000..c7d82c4
mode 100644,000000..100644
--- a/general/jsonrpc/java-client/src/main/resources/META-INF/spring/service.xml
+++ b/general/jsonrpc/java-client/src/main/resources/META-INF/spring/service.xml
@@@ -1,38 -1,0 +1,38 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- <beans xmlns="http://www.springframework.org/schema/beans"
- 	xmlns:context="http://www.springframework.org/schema/context"
- 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- 	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- 	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
- 
- 	<bean class="com.ikurento.user.Consumer" init-method="start">
- 		<!-- 声明这个类 要使用的服务名-->
- 		<property name="userProvider" ref="userProvider" />
- 		<property name="userProvider1" ref="userProvider1" />
- 		<property name="userProvider2" ref="userProvider2" />
- 	</bean>
- 
- 	<!-- App config -->
- 	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- 		<property name="locations">
- 			<list>
- 				<value>classpath:dubbo.properties</value>
- 			</list>
- 		</property>
- 	</bean>
- 
- </beans>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++<beans xmlns="http://www.springframework.org/schema/beans"
++	xmlns:context="http://www.springframework.org/schema/context"
++	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
++	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
++	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
++	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
++
++	<bean class="com.ikurento.user.Consumer" init-method="start">
++		<!-- 声明这个类 要使用的服务名-->
++		<property name="userProvider" ref="userProvider" />
++		<property name="userProvider1" ref="userProvider1" />
++		<property name="userProvider2" ref="userProvider2" />
++	</bean>
++
++	<!-- App config -->
++	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
++		<property name="locations">
++			<list>
++				<value>classpath:dubbo.properties</value>
++			</list>
++		</property>
++	</bean>
++
++</beans>
diff --cc general/jsonrpc/java-client/src/main/resources/dubbo.properties
index fc7b9ae,0000000..73da0df
mode 100644,000000..100644
--- a/general/jsonrpc/java-client/src/main/resources/dubbo.properties
+++ b/general/jsonrpc/java-client/src/main/resources/dubbo.properties
@@@ -1,13 -1,0 +1,13 @@@
- ### dubboע���������� ###
- dubbo.container = log4j,spring
- dubbo.application.name = user-info-client
- dubbo.application.owner = AlexStocks
- dubbo.application.environment  =  product
- dubbo.registry.address = zookeeper://127.0.0.1:2181
- dubbo.monitor.protocol = zookeeper
- dubbo.consumer.timeout = 10000
- dubbo.provider.timeout = 10000
- dubbo.protocol.name = jsonrpc
- 
- dubbo.log4j.file = logs/client.log
- dubbo.log4j.level = WARN
++### dubboע���������� ###
++dubbo.container = log4j,spring
++dubbo.application.name = user-info-client
++dubbo.application.owner = AlexStocks
++dubbo.application.environment  =  product
++dubbo.registry.address = zookeeper://127.0.0.1:2181
++dubbo.monitor.protocol = zookeeper
++dubbo.consumer.timeout = 10000
++dubbo.provider.timeout = 10000
++dubbo.protocol.name = jsonrpc
++
++dubbo.log4j.file = logs/client.log
++dubbo.log4j.level = WARN
diff --cc general/jsonrpc/java-server/src/main/assembly/assembly.xml
index 98a2e10,0000000..7947c65
mode 100644,000000..100644
--- a/general/jsonrpc/java-server/src/main/assembly/assembly.xml
+++ b/general/jsonrpc/java-server/src/main/assembly/assembly.xml
@@@ -1,45 -1,0 +1,45 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- 
- <assembly>
- 	<id>assembly</id>
- 	<formats>
- 		<format>tar.gz</format>
- 	</formats>
- 	<includeBaseDirectory>true</includeBaseDirectory>
- 	<fileSets>
- 		<fileSet>
- 			<directory>${project.build.directory}/dubbo/META-INF/assembly/bin</directory>
- 			<outputDirectory>bin</outputDirectory>
- 			<fileMode>0755</fileMode>
-             <directoryMode>0755</directoryMode>
- 		</fileSet>
- 		<fileSet>
-             <directory>src/main/assembly/conf</directory>
-             <includes>
-                 <include>dubbo.properties</include>
-                 <include>log4j.*</include>
-             </includes>
- 			<outputDirectory>conf</outputDirectory>
- 			<fileMode>0644</fileMode>
-             <directoryMode>0755</directoryMode>
- 		</fileSet>
- 	</fileSets>
- 	<dependencySets>
- 		<dependencySet>
- 			<outputDirectory>lib</outputDirectory>
- 		</dependencySet>
- 	</dependencySets>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++
++<assembly>
++	<id>assembly</id>
++	<formats>
++		<format>tar.gz</format>
++	</formats>
++	<includeBaseDirectory>true</includeBaseDirectory>
++	<fileSets>
++		<fileSet>
++			<directory>${project.build.directory}/dubbo/META-INF/assembly/bin</directory>
++			<outputDirectory>bin</outputDirectory>
++			<fileMode>0755</fileMode>
++            <directoryMode>0755</directoryMode>
++		</fileSet>
++		<fileSet>
++            <directory>src/main/assembly/conf</directory>
++            <includes>
++                <include>dubbo.properties</include>
++                <include>log4j.*</include>
++            </includes>
++			<outputDirectory>conf</outputDirectory>
++			<fileMode>0644</fileMode>
++            <directoryMode>0755</directoryMode>
++		</fileSet>
++	</fileSets>
++	<dependencySets>
++		<dependencySet>
++			<outputDirectory>lib</outputDirectory>
++		</dependencySet>
++	</dependencySets>
 +</assembly>
diff --cc general/jsonrpc/java-server/src/main/assembly/conf/dubbo.properties
index 627a3d9,0000000..2f19930
mode 100644,000000..100644
--- a/general/jsonrpc/java-server/src/main/assembly/conf/dubbo.properties
+++ b/general/jsonrpc/java-server/src/main/assembly/conf/dubbo.properties
@@@ -1,14 -1,0 +1,14 @@@
- ### dubbo注册中心配置 ##
- dubbo.container = log4j,spring
- dubbo.application.name = user-info-server
- dubbo.application.environment = product
- dubbo.application.owner = AlexStocks
- dubbo.registry.address = 127.0.0.1:2181
- dubbo.registry.protocol = zookeeper
- dubbo.consumer.timeout = 10000
- dubbo.provider.timeout = 10000
- dubbo.protocol.name = jsonrpc
- dubbo.protocol.port = 10000
- 
- dubbo.log4j.file = logs/dubbo.log
- dubbo.log4j.level = INFO
++### dubbo注册中心配置 ##
++dubbo.container = log4j,spring
++dubbo.application.name = user-info-server
++dubbo.application.environment = product
++dubbo.application.owner = AlexStocks
++dubbo.registry.address = 127.0.0.1:2181
++dubbo.registry.protocol = zookeeper
++dubbo.consumer.timeout = 10000
++dubbo.provider.timeout = 10000
++dubbo.protocol.name = jsonrpc
++dubbo.protocol.port = 10000
++
++dubbo.log4j.file = logs/dubbo.log
++dubbo.log4j.level = INFO
diff --cc general/jsonrpc/java-server/src/main/assembly/conf/log4j.properties
index 13c8049,0000000..806e33d
mode 100644,000000..100644
--- a/general/jsonrpc/java-server/src/main/assembly/conf/log4j.properties
+++ b/general/jsonrpc/java-server/src/main/assembly/conf/log4j.properties
@@@ -1,20 -1,0 +1,20 @@@
- ## Logger configure file for myproject
- log.dir=logs/
- datestamp=yyyy-MM-dd/HH:mm:ss.SSS
- 
- log4j.rootLogger=DEBUG, file, console
- 
- log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.file.threshold=DEBUG
- log4j.appender.file.File=${log.dir}/log4j.log
- log4j.appender.file.DatePattern=-yyyyMMddHH
- log4j.appender.file.ImmediateFlush=true
- log4j.appender.file.Append=true
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
- log4j.appender.console=org.apache.log4j.ConsoleAppender
- log4j.appender.console.Threshold=DEBUG
- log4j.appender.console.layout=org.apache.log4j.PatternLayout
- log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
++## Logger configure file for myproject
++log.dir=logs/
++datestamp=yyyy-MM-dd/HH:mm:ss.SSS
++
++log4j.rootLogger=DEBUG, file, console
++
++log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
++log4j.appender.file.threshold=DEBUG
++log4j.appender.file.File=${log.dir}/log4j.log
++log4j.appender.file.DatePattern=-yyyyMMddHH
++log4j.appender.file.ImmediateFlush=true
++log4j.appender.file.Append=true
++log4j.appender.file.layout=org.apache.log4j.PatternLayout
++log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
++log4j.appender.console=org.apache.log4j.ConsoleAppender
++log4j.appender.console.Threshold=DEBUG
++log4j.appender.console.layout=org.apache.log4j.PatternLayout
++log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
diff --cc general/jsonrpc/java-server/src/main/java/com/ikurento/user/Gender.java
index e606be7,0000000..e74a5d4
mode 100644,000000..100644
--- a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/Gender.java
+++ b/general/jsonrpc/java-server/src/main/java/com/ikurento/user/Gender.java
@@@ -1,23 -1,0 +1,23 @@@
- /*
-  * 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 com.ikurento.user;
- 
- public enum  Gender {
-     MAN,
-     WOMAN
- }
++/*
++ * 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 com.ikurento.user;
++
++public enum  Gender {
++    MAN,
++    WOMAN
++}
diff --cc general/jsonrpc/java-server/src/main/java/com/ikurento/user/User.java
index a6e76cf,0000000..7af1c9c
mode 100644,000000..100644
--- a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/User.java
+++ b/general/jsonrpc/java-server/src/main/java/com/ikurento/user/User.java
@@@ -1,95 -1,0 +1,95 @@@
- /*
-  * 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 com.ikurento.user;
- 
- import java.util.Date;
- import java.io.Serializable;
- 
- public class User implements Serializable  {
- 
-     private String id;
- 
-     private String name;
- 
-     private int age;
- 
-     private Date time = new Date();
- 
-     private Gender sex = Gender.MAN;
- 
-     public User() {
-     }
- 
-     public User(String id, String name, int age) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-     }
- 
-     public User(String id, String name, int age, Date time, Gender sex) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-         this.time = time;
-         this.sex = sex;
-     }
- 
-     public String getId() {
-         return id;
-     }
- 
-     public void setId(String id) {
-         this.id = id;
-     }
- 
-     public String getName() {
-         return name;
-     }
- 
-     public void setName(String name) {
-         this.name = name;
-     }
- 
-     public int getAge() {
-         return age;
-     }
- 
-     public void setAge(int age) {
-         this.age = age;
-     }
- 
-     public Date getTime() {
-         return time;
-     }
- 
-     public void setTime(Date time) {
-         this.time = time;
-     }
- 
-     public Gender getSex() {
-         return sex;
-     }
- 
-     public void setSex(Gender sex) {
-         this.sex = sex;
-     }
- 
-     public String toString() {
-         return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time + ", gender:" + sex + "}";
-     }
- }
++/*
++ * 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 com.ikurento.user;
++
++import java.util.Date;
++import java.io.Serializable;
++
++public class User implements Serializable  {
++
++    private String id;
++
++    private String name;
++
++    private int age;
++
++    private Date time = new Date();
++
++    private Gender sex = Gender.MAN;
++
++    public User() {
++    }
++
++    public User(String id, String name, int age) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++    }
++
++    public User(String id, String name, int age, Date time, Gender sex) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++        this.time = time;
++        this.sex = sex;
++    }
++
++    public String getId() {
++        return id;
++    }
++
++    public void setId(String id) {
++        this.id = id;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public Date getTime() {
++        return time;
++    }
++
++    public void setTime(Date time) {
++        this.time = time;
++    }
++
++    public Gender getSex() {
++        return sex;
++    }
++
++    public void setSex(Gender sex) {
++        this.sex = sex;
++    }
++
++    public String toString() {
++        return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time + ", gender:" + sex + "}";
++    }
++}
diff --cc general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProvider.java
index 2958a1a,0000000..96e1003
mode 100644,000000..100644
--- a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProvider.java
+++ b/general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProvider.java
@@@ -1,46 -1,0 +1,46 @@@
- /*
-  * 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 com.ikurento.user;
- 
- import java.util.List;
- import java.util.Map;
- 
- public interface UserProvider {
- 
-     boolean isLimit(Gender gender, String name);
- 
-     User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
- 
-     List<User> GetUsers(List<String> userIdList);
- 
-     User GetUser0(String userId, String name);
- 
-     void GetUser3();
- 
-     Map<String, User> GetUserMap(List<String> userIdList);
- 
-     User getUser(int usercode);
- 
-     User queryUser(User user);
- 
-     Map<String, User> queryAll();
- 
-     int Calc(int a,int b);
- 
-     Response<Integer> Sum(int a, int b);
- }
++/*
++ * 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 com.ikurento.user;
++
++import java.util.List;
++import java.util.Map;
++
++public interface UserProvider {
++
++    boolean isLimit(Gender gender, String name);
++
++    User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
++
++    List<User> GetUsers(List<String> userIdList);
++
++    User GetUser0(String userId, String name);
++
++    void GetUser3();
++
++    Map<String, User> GetUserMap(List<String> userIdList);
++
++    User getUser(int usercode);
++
++    User queryUser(User user);
++
++    Map<String, User> queryAll();
++
++    int Calc(int a,int b);
++
++    Response<Integer> Sum(int a, int b);
++}
diff --cc general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java
index 299feb7,0000000..3f62086
mode 100644,000000..100644
--- a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java
+++ b/general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java
@@@ -1,134 -1,0 +1,134 @@@
- /*
-  * 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 com.ikurento.user;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- import java.util.*;
- 
- public class UserProviderAnotherImpl implements UserProvider {
-     // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
-     private static final Logger logger = LoggerFactory.getLogger("userLogger"); // Output to user-server.log
- 
-     private Map<String, User> userMap = new HashMap<String, User>();
- 
-     public UserProviderAnotherImpl() {
-         // userMap.put("001", new User("001", "other-zhangsan", 18, new Date(1998-1900, 1, 2, 3, 4, 5), Gender.MAN));
-         userMap.put("001", new User("001", "other-zhangsan", 18, new Date(0x12345678), Gender.MAN));
-         userMap.put("002", new User("002", "other-lisi", 20, new Date(1996-1900, 1, 2, 3, 4, 5), Gender.MAN));
-         userMap.put("003", new User("003", "other-lily", 23, new Date(1993-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
-         userMap.put("004", new User("004", "other-lisa", 32, new Date(1985-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
-     }
- 
-     public boolean isLimit(Gender gender, String name) {
-         logger.info(String.format("input gender=%sand name=%s", gender, name));
-         return Gender.MAN == gender;
-     }
- 
-     public User GetUser(String userId) {
-         logger.info("input userId = " + userId);
-         return new User(userId, "Joe", 48);
-     }
- 
-     public User GetUser0(String userId, String name) {
-         return new User(userId, name, 48);
-     }
- 
-     public void GetUser3() {
-     }
- 
-     public List<User> GetUsers(ArrayList<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 logger.info("id:" + id + ", user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     public Map<String, User> GetUserMap(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         Map<String, User> map = new HashMap<String, User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 map.put(id, userMap.get(id));
-                 logger.info("id:" + id + ", user:" + userMap.get(id));
-             }
-         }
- 
-         return map;
-     }
- 
-     public List<User> GetUsers(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 logger.info("id:" + id + ", user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     // @Override
-     public User getUser(int userCode) {
-         logger.info("input userCode = " + userCode);
-         return new User(String.valueOf(userCode), "userCode get", 48);
-     }
- 
-     public User queryUser(User user) {
-         logger.info("input user = " + user);
-         return new User(user.getId(), "get:" + user.getName(), user.getAge() + 18);
-     }
- 
-     public Map<String, User> queryAll() {
-         logger.info("input");
-         Map<String, User> map = new HashMap<String, User>();
-         map.put("001", new User("001", "Joe", 18));
-         map.put("002", new User("002", "Wen", 20));
- 
-         return map;
-     }
- 
-     public int Calc(int a,int b) {
-         return a + b + 100;
-     }
- 
-     public Response<Integer> Sum(int a,int b) {
-         return Response.ok(a+b);
-     }
- }
++/*
++ * 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 com.ikurento.user;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++import java.util.*;
++
++public class UserProviderAnotherImpl implements UserProvider {
++    // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
++    private static final Logger logger = LoggerFactory.getLogger("userLogger"); // Output to user-server.log
++
++    private Map<String, User> userMap = new HashMap<String, User>();
++
++    public UserProviderAnotherImpl() {
++        // userMap.put("001", new User("001", "other-zhangsan", 18, new Date(1998-1900, 1, 2, 3, 4, 5), Gender.MAN));
++        userMap.put("001", new User("001", "other-zhangsan", 18, new Date(0x12345678), Gender.MAN));
++        userMap.put("002", new User("002", "other-lisi", 20, new Date(1996-1900, 1, 2, 3, 4, 5), Gender.MAN));
++        userMap.put("003", new User("003", "other-lily", 23, new Date(1993-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
++        userMap.put("004", new User("004", "other-lisa", 32, new Date(1985-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
++    }
++
++    public boolean isLimit(Gender gender, String name) {
++        logger.info(String.format("input gender=%sand name=%s", gender, name));
++        return Gender.MAN == gender;
++    }
++
++    public User GetUser(String userId) {
++        logger.info("input userId = " + userId);
++        return new User(userId, "Joe", 48);
++    }
++
++    public User GetUser0(String userId, String name) {
++        return new User(userId, name, 48);
++    }
++
++    public void GetUser3() {
++    }
++
++    public List<User> GetUsers(ArrayList<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                logger.info("id:" + id + ", user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    public Map<String, User> GetUserMap(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        Map<String, User> map = new HashMap<String, User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                map.put(id, userMap.get(id));
++                logger.info("id:" + id + ", user:" + userMap.get(id));
++            }
++        }
++
++        return map;
++    }
++
++    public List<User> GetUsers(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                logger.info("id:" + id + ", user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    // @Override
++    public User getUser(int userCode) {
++        logger.info("input userCode = " + userCode);
++        return new User(String.valueOf(userCode), "userCode get", 48);
++    }
++
++    public User queryUser(User user) {
++        logger.info("input user = " + user);
++        return new User(user.getId(), "get:" + user.getName(), user.getAge() + 18);
++    }
++
++    public Map<String, User> queryAll() {
++        logger.info("input");
++        Map<String, User> map = new HashMap<String, User>();
++        map.put("001", new User("001", "Joe", 18));
++        map.put("002", new User("002", "Wen", 20));
++
++        return map;
++    }
++
++    public int Calc(int a,int b) {
++        return a + b + 100;
++    }
++
++    public Response<Integer> Sum(int a,int b) {
++        return Response.ok(a+b);
++    }
++}
diff --cc general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java
index ac6c229,0000000..3e08095
mode 100644,000000..100644
--- a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java
+++ b/general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java
@@@ -1,111 -1,0 +1,111 @@@
- /*
-  * 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 com.ikurento.user;
- 
- import java.util.HashMap;
- import java.util.List;
- import java.util.ArrayList;
- import java.util.Map;
- import java.util.Iterator;
- 
- // import org.apache.log4j.Logger;
- // import org.apache.log4j.LoggerFactory;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- public class UserProviderImpl implements UserProvider {
-     // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
-     private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); // Output to user-server.log
-     Map<String, User> userMap = new HashMap<String, User>();
- 
-     public UserProviderImpl() {
-         userMap.put("A001", new User("A001", "demo-zhangsan", 18));
-         userMap.put("A002", new User("A002", "demo-lisi", 20));
-         userMap.put("A003", new User("A003", "demo-lily", 23));
-         userMap.put("A004", new User("A004", "demo-lisa", 32));
-     }
- 
-     public boolean isLimit(Gender gender, String name) {
-         return Gender.WOMAN == gender;
-     }
- 
-     public User GetUser(String userId) {
-         return new User(userId, "zhangsan", 18);
-     }
- 
-     public User GetUser0(String userId, String name) {
-         return new User(userId, name, 18);
-     }
- 
-     public List<User> GetUsers(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         LOG.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             LOG.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 LOG.info("id:" + id + ", user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     public Map<String, User> GetUserMap(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         Map<String, User> map = new HashMap<String, User>();
-         LOG.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             LOG.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 map.put(id, userMap.get(id));
-                 LOG.info("id:" + id + ", user:" + userMap.get(id));
-             }
-         }
- 
-         return map;
-     }
- 
-     public User queryUser(User user) {
-         return new User(user.getId(), "hello:" +user.getName(), user.getAge() + 18);
-     }
- 
-     public Map<String, User> queryAll() {
-         return userMap;
-     }
-     public void GetUser3() {
-     }
- 
-     public User getUser(int userCode) {
-         return new User(String.valueOf(userCode), "userCode get", 48);
-     }
- 
- 
-     public int Calc(int a,int b) {
-         return a + b;
-     }
- 
-      public Response<Integer> Sum(int a,int b) {
-         return Response.ok(a+b);
-     }
- }
++/*
++ * 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 com.ikurento.user;
++
++import java.util.HashMap;
++import java.util.List;
++import java.util.ArrayList;
++import java.util.Map;
++import java.util.Iterator;
++
++// import org.apache.log4j.Logger;
++// import org.apache.log4j.LoggerFactory;
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++public class UserProviderImpl implements UserProvider {
++    // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
++    private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); // Output to user-server.log
++    Map<String, User> userMap = new HashMap<String, User>();
++
++    public UserProviderImpl() {
++        userMap.put("A001", new User("A001", "demo-zhangsan", 18));
++        userMap.put("A002", new User("A002", "demo-lisi", 20));
++        userMap.put("A003", new User("A003", "demo-lily", 23));
++        userMap.put("A004", new User("A004", "demo-lisa", 32));
++    }
++
++    public boolean isLimit(Gender gender, String name) {
++        return Gender.WOMAN == gender;
++    }
++
++    public User GetUser(String userId) {
++        return new User(userId, "zhangsan", 18);
++    }
++
++    public User GetUser0(String userId, String name) {
++        return new User(userId, name, 18);
++    }
++
++    public List<User> GetUsers(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        LOG.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            LOG.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                LOG.info("id:" + id + ", user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    public Map<String, User> GetUserMap(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        Map<String, User> map = new HashMap<String, User>();
++        LOG.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            LOG.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                map.put(id, userMap.get(id));
++                LOG.info("id:" + id + ", user:" + userMap.get(id));
++            }
++        }
++
++        return map;
++    }
++
++    public User queryUser(User user) {
++        return new User(user.getId(), "hello:" +user.getName(), user.getAge() + 18);
++    }
++
++    public Map<String, User> queryAll() {
++        return userMap;
++    }
++    public void GetUser3() {
++    }
++
++    public User getUser(int userCode) {
++        return new User(String.valueOf(userCode), "userCode get", 48);
++    }
++
++
++    public int Calc(int a,int b) {
++        return a + b;
++    }
++
++     public Response<Integer> Sum(int a,int b) {
++        return Response.ok(a+b);
++    }
++}
diff --cc general/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml
index f9ebc08,0000000..d3cf037
mode 100644,000000..100644
--- a/general/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml
+++ b/general/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml
@@@ -1,39 -1,0 +1,39 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- 
- <beans xmlns="http://www.springframework.org/schema/beans"
- 	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- 	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- 	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
- 
- 	<!-- 应用名 -->
- 	<dubbo:application name="user-info-server"/>
- 	<!-- 连接到哪个本地注册中心 -->
- 	<dubbo:registry id="ikurento"  address="zookeeper://127.0.0.1:2181" />
- 	<dubbo:registry id="ikurento2"  address="zookeeper://127.0.0.1:2182" />
- 	<!-- 用dubbo协议在20880端口暴露服务 -->
-     <!-- dubbo:protocol host="127.0.0.1" / -->
- 	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
- 	<dubbo:protocol id="jsonrpc" name="jsonrpc" host="127.0.0.1" port="10010" />
- 	<!-- 声明需要暴露的服务接口 -->
- 	<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/>
- 	<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" version="2.0"/>
- 	<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" group="as" version="2.0"/>
- 
- 	<bean id="demoService" class="com.ikurento.user.UserProviderImpl" />
- 	<bean id="otherService" class="com.ikurento.user.UserProviderAnotherImpl"/>
- 
- </beans>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++
++<beans xmlns="http://www.springframework.org/schema/beans"
++	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
++	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
++	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
++	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
++
++	<!-- 应用名 -->
++	<dubbo:application name="user-info-server"/>
++	<!-- 连接到哪个本地注册中心 -->
++	<dubbo:registry id="ikurento"  address="zookeeper://127.0.0.1:2181" />
++	<dubbo:registry id="ikurento2"  address="zookeeper://127.0.0.1:2182" />
++	<!-- 用dubbo协议在20880端口暴露服务 -->
++    <!-- dubbo:protocol host="127.0.0.1" / -->
++	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
++	<dubbo:protocol id="jsonrpc" name="jsonrpc" host="127.0.0.1" port="10010" />
++	<!-- 声明需要暴露的服务接口 -->
++	<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/>
++	<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" version="2.0"/>
++	<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" group="as" version="2.0"/>
++
++	<bean id="demoService" class="com.ikurento.user.UserProviderImpl" />
++	<bean id="otherService" class="com.ikurento.user.UserProviderAnotherImpl"/>
++
++</beans>
diff --cc general/jsonrpc/java-server/src/main/resources/log4j.properties
index 13c8049,0000000..806e33d
mode 100644,000000..100644
--- a/general/jsonrpc/java-server/src/main/resources/log4j.properties
+++ b/general/jsonrpc/java-server/src/main/resources/log4j.properties
@@@ -1,20 -1,0 +1,20 @@@
- ## Logger configure file for myproject
- log.dir=logs/
- datestamp=yyyy-MM-dd/HH:mm:ss.SSS
- 
- log4j.rootLogger=DEBUG, file, console
- 
- log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.file.threshold=DEBUG
- log4j.appender.file.File=${log.dir}/log4j.log
- log4j.appender.file.DatePattern=-yyyyMMddHH
- log4j.appender.file.ImmediateFlush=true
- log4j.appender.file.Append=true
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
- log4j.appender.console=org.apache.log4j.ConsoleAppender
- log4j.appender.console.Threshold=DEBUG
- log4j.appender.console.layout=org.apache.log4j.PatternLayout
- log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
++## Logger configure file for myproject
++log.dir=logs/
++datestamp=yyyy-MM-dd/HH:mm:ss.SSS
++
++log4j.rootLogger=DEBUG, file, console
++
++log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
++log4j.appender.file.threshold=DEBUG
++log4j.appender.file.File=${log.dir}/log4j.log
++log4j.appender.file.DatePattern=-yyyyMMddHH
++log4j.appender.file.ImmediateFlush=true
++log4j.appender.file.Append=true
++log4j.appender.file.layout=org.apache.log4j.PatternLayout
++log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
++log4j.appender.console=org.apache.log4j.ConsoleAppender
++log4j.appender.console.Threshold=DEBUG
++log4j.appender.console.layout=org.apache.log4j.PatternLayout
++log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
diff --cc generic/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
index 7b503cc,0000000..a016781
mode 100644,000000..100644
--- a/generic/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
+++ b/generic/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
@@@ -1,23 -1,0 +1,23 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- public enum  Gender {
-     MAN,
-     WOMAN
- }
++/*
++ * 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 org.apache.dubbo;
++
++public enum  Gender {
++    MAN,
++    WOMAN
++}
diff --cc generic/java-server/2.6/src/main/java/org/apache/dubbo/User.java
index 7fcfa38,0000000..039a883
mode 100644,000000..100644
--- a/generic/java-server/2.6/src/main/java/org/apache/dubbo/User.java
+++ b/generic/java-server/2.6/src/main/java/org/apache/dubbo/User.java
@@@ -1,95 -1,0 +1,95 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import java.io.Serializable;
- import java.util.Date;
- 
- public class User implements Serializable  {
- 
-     private String id;
- 
-     private String name;
- 
-     private int age;
- 
-     private Date time = new Date();
- 
-     private Gender sex = Gender.MAN;
- 
-     public User() {
-     }
- 
-     public User(String id, String name, int age) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-     }
- 
-     public User(String id, String name, int age, Date time, Gender sex) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-         this.time = time;
-         this.sex = sex;
-     }
- 
-     public String getId() {
-         return id;
-     }
- 
-     public void setId(String id) {
-         this.id = id;
-     }
- 
-     public String getName() {
-         return name;
-     }
- 
-     public void setName(String name) {
-         this.name = name;
-     }
- 
-     public int getAge() {
-         return age;
-     }
- 
-     public void setAge(int age) {
-         this.age = age;
-     }
- 
-     public Date getTime() {
-         return time;
-     }
- 
-     public void setTime(Date time) {
-         this.time = time;
-     }
- 
-     public Gender getSex() {
-         return sex;
-     }
- 
-     public void setSex(Gender sex) {
-         this.sex = sex;
-     }
- 
-     public String toString() {
-         return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time + ", gender:" + sex + "}";
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import java.io.Serializable;
++import java.util.Date;
++
++public class User implements Serializable  {
++
++    private String id;
++
++    private String name;
++
++    private int age;
++
++    private Date time = new Date();
++
++    private Gender sex = Gender.MAN;
++
++    public User() {
++    }
++
++    public User(String id, String name, int age) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++    }
++
++    public User(String id, String name, int age, Date time, Gender sex) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++        this.time = time;
++        this.sex = sex;
++    }
++
++    public String getId() {
++        return id;
++    }
++
++    public void setId(String id) {
++        this.id = id;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public Date getTime() {
++        return time;
++    }
++
++    public void setTime(Date time) {
++        this.time = time;
++    }
++
++    public Gender getSex() {
++        return sex;
++    }
++
++    public void setSex(Gender sex) {
++        this.sex = sex;
++    }
++
++    public String toString() {
++        return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time + ", gender:" + sex + "}";
++    }
++}
diff --cc generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
index 1c13f05,0000000..5cd6ffe
mode 100644,000000..100644
--- a/generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
+++ b/generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
@@@ -1,50 -1,0 +1,50 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import java.util.List;
- import java.util.Map;
- 
- public interface UserProvider {
- 
-     boolean isLimit(Gender gender, String name);
- 
-     User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
- 
-     List<User> GetUsers(List<String> userIdList);
- 
-     void GetUser3();
- 
-     User GetUser0(String userId, String name);
- 
- 	User GetErr(String userId) throws Exception;
- 
-     Map<String, User> GetUserMap(List<String> userIdList);
- 
-     User getUser(int usercode);
- 
-     User getUser(int usercode, String name);
- 
-     User queryUser(User user);
- 
-     Map<String, User> queryAll();
- 
-     int Calc(int a, int b);
- 
-     Response<Integer> Sum(int a, int b);
- }
++/*
++ * 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 org.apache.dubbo;
++
++import java.util.List;
++import java.util.Map;
++
++public interface UserProvider {
++
++    boolean isLimit(Gender gender, String name);
++
++    User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
++
++    List<User> GetUsers(List<String> userIdList);
++
++    void GetUser3();
++
++    User GetUser0(String userId, String name);
++
++	User GetErr(String userId) throws Exception;
++
++    Map<String, User> GetUserMap(List<String> userIdList);
++
++    User getUser(int usercode);
++
++    User getUser(int usercode, String name);
++
++    User queryUser(User user);
++
++    Map<String, User> queryAll();
++
++    int Calc(int a, int b);
++
++    Response<Integer> Sum(int a, int b);
++}
diff --cc generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
index cc6170e,0000000..3e2f9f2
mode 100644,000000..100644
--- a/generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
+++ b/generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
@@@ -1,143 -1,0 +1,143 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- import java.util.*;
- 
- public class UserProviderAnotherImpl implements UserProvider {
-     // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
-     private static final Logger logger = LoggerFactory.getLogger("userLogger"); // Output to com.dubbogo.user-server.log
- 
-     private Map<String, User> userMap = new HashMap<String, User>();
- 
-     public UserProviderAnotherImpl() {
-         // userMap.put("001", new User("001", "other-zhangsan", 18, new Date(1998-1900, 1, 2, 3, 4, 5), Gender.MAN));
-         userMap.put("001", new User("001", "other-zhangsan", 18, new Date(0x12345678), Gender.MAN));
-         userMap.put("002", new User("002", "other-lisi", 20, new Date(1996-1900, 1, 2, 3, 4, 5), Gender.MAN));
-         userMap.put("003", new User("003", "other-lily", 23, new Date(1993-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
-         userMap.put("004", new User("004", "other-lisa", 32, new Date(1985-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
-     }
- 
-     public boolean isLimit(Gender gender, String name) {
-         logger.info(String.format("input gender=%sand name=%s", gender, name));
-         return Gender.MAN == gender;
-     }
- 
-     public User GetUser(String userId) {
-         logger.info("input userId = " + userId);
-         return new User(userId, "Joe", 48);
-     }
- 
-     public User GetUser0(String userId, String name) {
-         return new User(userId, name, 48);
-     }
- 
-     public void GetUser3() {
-         logger.info("this is GetUser3 of another");
-     }
- 
-     public User GetErr(String userId) throws Exception {
-         throw new Exception("exception");
-     }
- 
-     public List<User> GetUsers(ArrayList<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     public Map<String, User> GetUserMap(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         Map<String, User> map = new HashMap<String, User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 map.put(id, userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return map;
-     }
- 
-     public List<User> GetUsers(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     // @Override
-     public User getUser(int userCode) {
-         logger.info("input userCode = " + userCode);
-         return new User(String.valueOf(userCode), "userCode get", 48);
-     }
- 
-     public User getUser(int usercode, String name) {
-         return new User(String.valueOf(usercode), name, 18);
-     }
- 
-     public User queryUser(User user) {
-         logger.info("input com.dubbogo.user = " + user);
-         return new User(user.getId(), "get:" + user.getName(), user.getAge() + 18);
-     }
- 
-     public Map<String, User> queryAll() {
-         logger.info("input");
-         Map<String, User> map = new HashMap<String, User>();
-         map.put("001", new User("001", "Joe", 18));
-         map.put("002", new User("002", "Wen", 20));
- 
-         return map;
-     }
- 
-     public int Calc(int a,int b) {
-         return a + b + 100;
-     }
- 
-     public Response<Integer> Sum(int a,int b) {
-         return Response.ok(a+b);
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++import java.util.*;
++
++public class UserProviderAnotherImpl implements UserProvider {
++    // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
++    private static final Logger logger = LoggerFactory.getLogger("userLogger"); // Output to com.dubbogo.user-server.log
++
++    private Map<String, User> userMap = new HashMap<String, User>();
++
++    public UserProviderAnotherImpl() {
++        // userMap.put("001", new User("001", "other-zhangsan", 18, new Date(1998-1900, 1, 2, 3, 4, 5), Gender.MAN));
++        userMap.put("001", new User("001", "other-zhangsan", 18, new Date(0x12345678), Gender.MAN));
++        userMap.put("002", new User("002", "other-lisi", 20, new Date(1996-1900, 1, 2, 3, 4, 5), Gender.MAN));
++        userMap.put("003", new User("003", "other-lily", 23, new Date(1993-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
++        userMap.put("004", new User("004", "other-lisa", 32, new Date(1985-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
++    }
++
++    public boolean isLimit(Gender gender, String name) {
++        logger.info(String.format("input gender=%sand name=%s", gender, name));
++        return Gender.MAN == gender;
++    }
++
++    public User GetUser(String userId) {
++        logger.info("input userId = " + userId);
++        return new User(userId, "Joe", 48);
++    }
++
++    public User GetUser0(String userId, String name) {
++        return new User(userId, name, 48);
++    }
++
++    public void GetUser3() {
++        logger.info("this is GetUser3 of another");
++    }
++
++    public User GetErr(String userId) throws Exception {
++        throw new Exception("exception");
++    }
++
++    public List<User> GetUsers(ArrayList<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    public Map<String, User> GetUserMap(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        Map<String, User> map = new HashMap<String, User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                map.put(id, userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return map;
++    }
++
++    public List<User> GetUsers(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    // @Override
++    public User getUser(int userCode) {
++        logger.info("input userCode = " + userCode);
++        return new User(String.valueOf(userCode), "userCode get", 48);
++    }
++
++    public User getUser(int usercode, String name) {
++        return new User(String.valueOf(usercode), name, 18);
++    }
++
++    public User queryUser(User user) {
++        logger.info("input com.dubbogo.user = " + user);
++        return new User(user.getId(), "get:" + user.getName(), user.getAge() + 18);
++    }
++
++    public Map<String, User> queryAll() {
++        logger.info("input");
++        Map<String, User> map = new HashMap<String, User>();
++        map.put("001", new User("001", "Joe", 18));
++        map.put("002", new User("002", "Wen", 20));
++
++        return map;
++    }
++
++    public int Calc(int a,int b) {
++        return a + b + 100;
++    }
++
++    public Response<Integer> Sum(int a,int b) {
++        return Response.ok(a+b);
++    }
++}
diff --cc generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
index bdb9651,0000000..1a4bb59
mode 100644,000000..100644
--- a/generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
+++ b/generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
@@@ -1,115 -1,0 +1,115 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- import java.util.*;
- 
- public class UserProviderImpl implements UserProvider {
-     // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
-     private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); // Output to com.dubbogo.user-server.log
-     Map<String, User> userMap = new HashMap<String, User>();
- 
-     public UserProviderImpl() {
-         userMap.put("A001", new User("A001", "demo-zhangsan", 18));
-         userMap.put("A002", new User("A002", "demo-lisi", 20));
-         userMap.put("A003", new User("A003", "demo-lily", 23));
-         userMap.put("A004", new User("A004", "demo-lisa", 32));
-     }
- 
-     public boolean isLimit(Gender gender, String name) {
-         return Gender.WOMAN == gender;
-     }
- 
-     public User GetUser(String userId) {
-         return new User(userId, "zhangsan", 18);
-     }
- 
-     public User GetErr(String userId) throws Exception {
-         throw new Exception("exception");
-     }
- 
-     public User GetUser0(String userId, String name) {
-             return new User(userId, name, 18);
-     }
- 
-     public List<User> GetUsers(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         LOG.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             LOG.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     public void GetUser3() {
-         LOG.info("this is GetUser3 of impl");
-     }
- 
-     public Map<String, User> GetUserMap(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         Map<String, User> map = new HashMap<String, User>();
-         LOG.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             LOG.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 map.put(id, userMap.get(id));
-                 LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return map;
-     }
- 
-     public User queryUser(User user) {
-         return new User(user.getId(), "hello:" +user.getName(), user.getAge() + 18);
-     }
- 
-     public Map<String, User> queryAll() {
-         return userMap;
-     }
- 
- 
-     public User getUser(int userCode) {
-         return new User(String.valueOf(userCode), "userCode get", 48);
-     }
- 
-     public User getUser(int usercode, String name) {
-         return new User(String.valueOf(usercode), name, 38);
-     }
- 
-     public int Calc(int a,int b) {
-         return a + b;
-     }
- 
-      public Response<Integer> Sum(int a,int b) {
-         return Response.ok(a+b);
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++import java.util.*;
++
++public class UserProviderImpl implements UserProvider {
++    // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
++    private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); // Output to com.dubbogo.user-server.log
++    Map<String, User> userMap = new HashMap<String, User>();
++
++    public UserProviderImpl() {
++        userMap.put("A001", new User("A001", "demo-zhangsan", 18));
++        userMap.put("A002", new User("A002", "demo-lisi", 20));
++        userMap.put("A003", new User("A003", "demo-lily", 23));
++        userMap.put("A004", new User("A004", "demo-lisa", 32));
++    }
++
++    public boolean isLimit(Gender gender, String name) {
++        return Gender.WOMAN == gender;
++    }
++
++    public User GetUser(String userId) {
++        return new User(userId, "zhangsan", 18);
++    }
++
++    public User GetErr(String userId) throws Exception {
++        throw new Exception("exception");
++    }
++
++    public User GetUser0(String userId, String name) {
++            return new User(userId, name, 18);
++    }
++
++    public List<User> GetUsers(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        LOG.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            LOG.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    public void GetUser3() {
++        LOG.info("this is GetUser3 of impl");
++    }
++
++    public Map<String, User> GetUserMap(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        Map<String, User> map = new HashMap<String, User>();
++        LOG.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            LOG.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                map.put(id, userMap.get(id));
++                LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return map;
++    }
++
++    public User queryUser(User user) {
++        return new User(user.getId(), "hello:" +user.getName(), user.getAge() + 18);
++    }
++
++    public Map<String, User> queryAll() {
++        return userMap;
++    }
++
++
++    public User getUser(int userCode) {
++        return new User(String.valueOf(userCode), "userCode get", 48);
++    }
++
++    public User getUser(int usercode, String name) {
++        return new User(String.valueOf(usercode), name, 38);
++    }
++
++    public int Calc(int a,int b) {
++        return a + b;
++    }
++
++     public Response<Integer> Sum(int a,int b) {
++        return Response.ok(a+b);
++    }
++}
diff --cc generic/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
index cd63653,0000000..efad8af
mode 100644,000000..100644
--- a/generic/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
+++ b/generic/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
@@@ -1,36 -1,0 +1,36 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- 
- <beans xmlns="http://www.springframework.org/schema/beans"
- 	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- 	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- 	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
- 
- 	<!-- 应用名 -->
- 	<dubbo:application name="user-info-server"/>
- 	<!-- 连接到哪个本地注册中心 -->
- 	<dubbo:registry id="dubbogo"  address="zookeeper://127.0.0.1:2181" />
- 	<!-- 用dubbo协议在20880端口暴露服务 -->
- 	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
- 	<!-- 声明需要暴露的服务接口 -->
- 	<dubbo:service id="aaa" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="demoService"/>
- 	<dubbo:service id="bbb" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" version="2.0"/>
- 	<dubbo:service id="ccc" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" group="as" version="2.0"/>
- 
- 	<bean id="demoService" class="org.apache.dubbo.UserProviderImpl" />
- 	<bean id="otherService" class="org.apache.dubbo.UserProviderAnotherImpl"/>
- 
- </beans>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++
++<beans xmlns="http://www.springframework.org/schema/beans"
++	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
++	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
++	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
++	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
++
++	<!-- 应用名 -->
++	<dubbo:application name="user-info-server"/>
++	<!-- 连接到哪个本地注册中心 -->
++	<dubbo:registry id="dubbogo"  address="zookeeper://127.0.0.1:2181" />
++	<!-- 用dubbo协议在20880端口暴露服务 -->
++	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
++	<!-- 声明需要暴露的服务接口 -->
++	<dubbo:service id="aaa" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="demoService"/>
++	<dubbo:service id="bbb" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" version="2.0"/>
++	<dubbo:service id="ccc" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" group="as" version="2.0"/>
++
++	<bean id="demoService" class="org.apache.dubbo.UserProviderImpl" />
++	<bean id="otherService" class="org.apache.dubbo.UserProviderAnotherImpl"/>
++
++</beans>
diff --cc generic/java-server/2.6/src/main/resources/log4j.properties
index 13c8049,0000000..806e33d
mode 100644,000000..100644
--- a/generic/java-server/2.6/src/main/resources/log4j.properties
+++ b/generic/java-server/2.6/src/main/resources/log4j.properties
@@@ -1,20 -1,0 +1,20 @@@
- ## Logger configure file for myproject
- log.dir=logs/
- datestamp=yyyy-MM-dd/HH:mm:ss.SSS
- 
- log4j.rootLogger=DEBUG, file, console
- 
- log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.file.threshold=DEBUG
- log4j.appender.file.File=${log.dir}/log4j.log
- log4j.appender.file.DatePattern=-yyyyMMddHH
- log4j.appender.file.ImmediateFlush=true
- log4j.appender.file.Append=true
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
- log4j.appender.console=org.apache.log4j.ConsoleAppender
- log4j.appender.console.Threshold=DEBUG
- log4j.appender.console.layout=org.apache.log4j.PatternLayout
- log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
++## Logger configure file for myproject
++log.dir=logs/
++datestamp=yyyy-MM-dd/HH:mm:ss.SSS
++
++log4j.rootLogger=DEBUG, file, console
++
++log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
++log4j.appender.file.threshold=DEBUG
++log4j.appender.file.File=${log.dir}/log4j.log
++log4j.appender.file.DatePattern=-yyyyMMddHH
++log4j.appender.file.ImmediateFlush=true
++log4j.appender.file.Append=true
++log4j.appender.file.layout=org.apache.log4j.PatternLayout
++log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
++log4j.appender.console=org.apache.log4j.ConsoleAppender
++log4j.appender.console.Threshold=DEBUG
++log4j.appender.console.layout=org.apache.log4j.PatternLayout
++log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
diff --cc generic/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
index 7b503cc,0000000..a016781
mode 100644,000000..100644
--- a/generic/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
+++ b/generic/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
@@@ -1,23 -1,0 +1,23 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- public enum  Gender {
-     MAN,
-     WOMAN
- }
++/*
++ * 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 org.apache.dubbo;
++
++public enum  Gender {
++    MAN,
++    WOMAN
++}
diff --cc generic/java-server/2.7/src/main/java/org/apache/dubbo/User.java
index 7fcfa38,0000000..039a883
mode 100644,000000..100644
--- a/generic/java-server/2.7/src/main/java/org/apache/dubbo/User.java
+++ b/generic/java-server/2.7/src/main/java/org/apache/dubbo/User.java
@@@ -1,95 -1,0 +1,95 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import java.io.Serializable;
- import java.util.Date;
- 
- public class User implements Serializable  {
- 
-     private String id;
- 
-     private String name;
- 
-     private int age;
- 
-     private Date time = new Date();
- 
-     private Gender sex = Gender.MAN;
- 
-     public User() {
-     }
- 
-     public User(String id, String name, int age) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-     }
- 
-     public User(String id, String name, int age, Date time, Gender sex) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-         this.time = time;
-         this.sex = sex;
-     }
- 
-     public String getId() {
-         return id;
-     }
- 
-     public void setId(String id) {
-         this.id = id;
-     }
- 
-     public String getName() {
-         return name;
-     }
- 
-     public void setName(String name) {
-         this.name = name;
-     }
- 
-     public int getAge() {
-         return age;
-     }
- 
-     public void setAge(int age) {
-         this.age = age;
-     }
- 
-     public Date getTime() {
-         return time;
-     }
- 
-     public void setTime(Date time) {
-         this.time = time;
-     }
- 
-     public Gender getSex() {
-         return sex;
-     }
- 
-     public void setSex(Gender sex) {
-         this.sex = sex;
-     }
- 
-     public String toString() {
-         return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time + ", gender:" + sex + "}";
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import java.io.Serializable;
++import java.util.Date;
++
++public class User implements Serializable  {
++
++    private String id;
++
++    private String name;
++
++    private int age;
++
++    private Date time = new Date();
++
++    private Gender sex = Gender.MAN;
++
++    public User() {
++    }
++
++    public User(String id, String name, int age) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++    }
++
++    public User(String id, String name, int age, Date time, Gender sex) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++        this.time = time;
++        this.sex = sex;
++    }
++
++    public String getId() {
++        return id;
++    }
++
++    public void setId(String id) {
++        this.id = id;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public Date getTime() {
++        return time;
++    }
++
++    public void setTime(Date time) {
++        this.time = time;
++    }
++
++    public Gender getSex() {
++        return sex;
++    }
++
++    public void setSex(Gender sex) {
++        this.sex = sex;
++    }
++
++    public String toString() {
++        return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time + ", gender:" + sex + "}";
++    }
++}
diff --cc generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
index 1c13f05,0000000..5cd6ffe
mode 100644,000000..100644
--- a/generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
+++ b/generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
@@@ -1,50 -1,0 +1,50 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import java.util.List;
- import java.util.Map;
- 
- public interface UserProvider {
- 
-     boolean isLimit(Gender gender, String name);
- 
-     User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
- 
-     List<User> GetUsers(List<String> userIdList);
- 
-     void GetUser3();
- 
-     User GetUser0(String userId, String name);
- 
- 	User GetErr(String userId) throws Exception;
- 
-     Map<String, User> GetUserMap(List<String> userIdList);
- 
-     User getUser(int usercode);
- 
-     User getUser(int usercode, String name);
- 
-     User queryUser(User user);
- 
-     Map<String, User> queryAll();
- 
-     int Calc(int a, int b);
- 
-     Response<Integer> Sum(int a, int b);
- }
++/*
++ * 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 org.apache.dubbo;
++
++import java.util.List;
++import java.util.Map;
++
++public interface UserProvider {
++
++    boolean isLimit(Gender gender, String name);
++
++    User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
++
++    List<User> GetUsers(List<String> userIdList);
++
++    void GetUser3();
++
++    User GetUser0(String userId, String name);
++
++	User GetErr(String userId) throws Exception;
++
++    Map<String, User> GetUserMap(List<String> userIdList);
++
++    User getUser(int usercode);
++
++    User getUser(int usercode, String name);
++
++    User queryUser(User user);
++
++    Map<String, User> queryAll();
++
++    int Calc(int a, int b);
++
++    Response<Integer> Sum(int a, int b);
++}
diff --cc generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
index cc6170e,0000000..3e2f9f2
mode 100644,000000..100644
--- a/generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
+++ b/generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
@@@ -1,143 -1,0 +1,143 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- import java.util.*;
- 
- public class UserProviderAnotherImpl implements UserProvider {
-     // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
-     private static final Logger logger = LoggerFactory.getLogger("userLogger"); // Output to com.dubbogo.user-server.log
- 
-     private Map<String, User> userMap = new HashMap<String, User>();
- 
-     public UserProviderAnotherImpl() {
-         // userMap.put("001", new User("001", "other-zhangsan", 18, new Date(1998-1900, 1, 2, 3, 4, 5), Gender.MAN));
-         userMap.put("001", new User("001", "other-zhangsan", 18, new Date(0x12345678), Gender.MAN));
-         userMap.put("002", new User("002", "other-lisi", 20, new Date(1996-1900, 1, 2, 3, 4, 5), Gender.MAN));
-         userMap.put("003", new User("003", "other-lily", 23, new Date(1993-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
-         userMap.put("004", new User("004", "other-lisa", 32, new Date(1985-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
-     }
- 
-     public boolean isLimit(Gender gender, String name) {
-         logger.info(String.format("input gender=%sand name=%s", gender, name));
-         return Gender.MAN == gender;
-     }
- 
-     public User GetUser(String userId) {
-         logger.info("input userId = " + userId);
-         return new User(userId, "Joe", 48);
-     }
- 
-     public User GetUser0(String userId, String name) {
-         return new User(userId, name, 48);
-     }
- 
-     public void GetUser3() {
-         logger.info("this is GetUser3 of another");
-     }
- 
-     public User GetErr(String userId) throws Exception {
-         throw new Exception("exception");
-     }
- 
-     public List<User> GetUsers(ArrayList<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     public Map<String, User> GetUserMap(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         Map<String, User> map = new HashMap<String, User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 map.put(id, userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return map;
-     }
- 
-     public List<User> GetUsers(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         logger.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             logger.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     // @Override
-     public User getUser(int userCode) {
-         logger.info("input userCode = " + userCode);
-         return new User(String.valueOf(userCode), "userCode get", 48);
-     }
- 
-     public User getUser(int usercode, String name) {
-         return new User(String.valueOf(usercode), name, 18);
-     }
- 
-     public User queryUser(User user) {
-         logger.info("input com.dubbogo.user = " + user);
-         return new User(user.getId(), "get:" + user.getName(), user.getAge() + 18);
-     }
- 
-     public Map<String, User> queryAll() {
-         logger.info("input");
-         Map<String, User> map = new HashMap<String, User>();
-         map.put("001", new User("001", "Joe", 18));
-         map.put("002", new User("002", "Wen", 20));
- 
-         return map;
-     }
- 
-     public int Calc(int a,int b) {
-         return a + b + 100;
-     }
- 
-     public Response<Integer> Sum(int a,int b) {
-         return Response.ok(a+b);
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++import java.util.*;
++
++public class UserProviderAnotherImpl implements UserProvider {
++    // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
++    private static final Logger logger = LoggerFactory.getLogger("userLogger"); // Output to com.dubbogo.user-server.log
++
++    private Map<String, User> userMap = new HashMap<String, User>();
++
++    public UserProviderAnotherImpl() {
++        // userMap.put("001", new User("001", "other-zhangsan", 18, new Date(1998-1900, 1, 2, 3, 4, 5), Gender.MAN));
++        userMap.put("001", new User("001", "other-zhangsan", 18, new Date(0x12345678), Gender.MAN));
++        userMap.put("002", new User("002", "other-lisi", 20, new Date(1996-1900, 1, 2, 3, 4, 5), Gender.MAN));
++        userMap.put("003", new User("003", "other-lily", 23, new Date(1993-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
++        userMap.put("004", new User("004", "other-lisa", 32, new Date(1985-1900, 1, 2, 3, 4, 5), Gender.WOMAN));
++    }
++
++    public boolean isLimit(Gender gender, String name) {
++        logger.info(String.format("input gender=%sand name=%s", gender, name));
++        return Gender.MAN == gender;
++    }
++
++    public User GetUser(String userId) {
++        logger.info("input userId = " + userId);
++        return new User(userId, "Joe", 48);
++    }
++
++    public User GetUser0(String userId, String name) {
++        return new User(userId, name, 48);
++    }
++
++    public void GetUser3() {
++        logger.info("this is GetUser3 of another");
++    }
++
++    public User GetErr(String userId) throws Exception {
++        throw new Exception("exception");
++    }
++
++    public List<User> GetUsers(ArrayList<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    public Map<String, User> GetUserMap(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        Map<String, User> map = new HashMap<String, User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                map.put(id, userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return map;
++    }
++
++    public List<User> GetUsers(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        logger.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            logger.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                logger.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    // @Override
++    public User getUser(int userCode) {
++        logger.info("input userCode = " + userCode);
++        return new User(String.valueOf(userCode), "userCode get", 48);
++    }
++
++    public User getUser(int usercode, String name) {
++        return new User(String.valueOf(usercode), name, 18);
++    }
++
++    public User queryUser(User user) {
++        logger.info("input com.dubbogo.user = " + user);
++        return new User(user.getId(), "get:" + user.getName(), user.getAge() + 18);
++    }
++
++    public Map<String, User> queryAll() {
++        logger.info("input");
++        Map<String, User> map = new HashMap<String, User>();
++        map.put("001", new User("001", "Joe", 18));
++        map.put("002", new User("002", "Wen", 20));
++
++        return map;
++    }
++
++    public int Calc(int a,int b) {
++        return a + b + 100;
++    }
++
++    public Response<Integer> Sum(int a,int b) {
++        return Response.ok(a+b);
++    }
++}
diff --cc generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
index bdb9651,0000000..1a4bb59
mode 100644,000000..100644
--- a/generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
+++ b/generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
@@@ -1,115 -1,0 +1,115 @@@
- /*
-  * 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 org.apache.dubbo;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- import java.util.*;
- 
- public class UserProviderImpl implements UserProvider {
-     // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
-     private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); // Output to com.dubbogo.user-server.log
-     Map<String, User> userMap = new HashMap<String, User>();
- 
-     public UserProviderImpl() {
-         userMap.put("A001", new User("A001", "demo-zhangsan", 18));
-         userMap.put("A002", new User("A002", "demo-lisi", 20));
-         userMap.put("A003", new User("A003", "demo-lily", 23));
-         userMap.put("A004", new User("A004", "demo-lisa", 32));
-     }
- 
-     public boolean isLimit(Gender gender, String name) {
-         return Gender.WOMAN == gender;
-     }
- 
-     public User GetUser(String userId) {
-         return new User(userId, "zhangsan", 18);
-     }
- 
-     public User GetErr(String userId) throws Exception {
-         throw new Exception("exception");
-     }
- 
-     public User GetUser0(String userId, String name) {
-             return new User(userId, name, 18);
-     }
- 
-     public List<User> GetUsers(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         List<User> userList = new ArrayList<User>();
-         LOG.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             LOG.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 userList.add(userMap.get(id));
-                 LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return userList;
-     }
- 
-     public void GetUser3() {
-         LOG.info("this is GetUser3 of impl");
-     }
- 
-     public Map<String, User> GetUserMap(List<String> userIdList) {
-         Iterator it = userIdList.iterator();
-         Map<String, User> map = new HashMap<String, User>();
-         LOG.warn("@userIdList size:" + userIdList.size());
- 
-         while(it.hasNext()) {
-             String id = (String)(it.next());
-             LOG.info("GetUsers(@uid:" + id + ")");
-             if (userMap.containsKey(id)) {
-                 map.put(id, userMap.get(id));
-                 LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
-             }
-         }
- 
-         return map;
-     }
- 
-     public User queryUser(User user) {
-         return new User(user.getId(), "hello:" +user.getName(), user.getAge() + 18);
-     }
- 
-     public Map<String, User> queryAll() {
-         return userMap;
-     }
- 
- 
-     public User getUser(int userCode) {
-         return new User(String.valueOf(userCode), "userCode get", 48);
-     }
- 
-     public User getUser(int usercode, String name) {
-         return new User(String.valueOf(usercode), name, 38);
-     }
- 
-     public int Calc(int a,int b) {
-         return a + b;
-     }
- 
-      public Response<Integer> Sum(int a,int b) {
-         return Response.ok(a+b);
-     }
- }
++/*
++ * 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 org.apache.dubbo;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++import java.util.*;
++
++public class UserProviderImpl implements UserProvider {
++    // private static final Logger logger = LoggerFactory.getLogger(getClass()); // Only output to dubbo's log(logs/server.log)
++    private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); // Output to com.dubbogo.user-server.log
++    Map<String, User> userMap = new HashMap<String, User>();
++
++    public UserProviderImpl() {
++        userMap.put("A001", new User("A001", "demo-zhangsan", 18));
++        userMap.put("A002", new User("A002", "demo-lisi", 20));
++        userMap.put("A003", new User("A003", "demo-lily", 23));
++        userMap.put("A004", new User("A004", "demo-lisa", 32));
++    }
++
++    public boolean isLimit(Gender gender, String name) {
++        return Gender.WOMAN == gender;
++    }
++
++    public User GetUser(String userId) {
++        return new User(userId, "zhangsan", 18);
++    }
++
++    public User GetErr(String userId) throws Exception {
++        throw new Exception("exception");
++    }
++
++    public User GetUser0(String userId, String name) {
++            return new User(userId, name, 18);
++    }
++
++    public List<User> GetUsers(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        List<User> userList = new ArrayList<User>();
++        LOG.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            LOG.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                userList.add(userMap.get(id));
++                LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return userList;
++    }
++
++    public void GetUser3() {
++        LOG.info("this is GetUser3 of impl");
++    }
++
++    public Map<String, User> GetUserMap(List<String> userIdList) {
++        Iterator it = userIdList.iterator();
++        Map<String, User> map = new HashMap<String, User>();
++        LOG.warn("@userIdList size:" + userIdList.size());
++
++        while(it.hasNext()) {
++            String id = (String)(it.next());
++            LOG.info("GetUsers(@uid:" + id + ")");
++            if (userMap.containsKey(id)) {
++                map.put(id, userMap.get(id));
++                LOG.info("id:" + id + ", com.dubbogo.user:" + userMap.get(id));
++            }
++        }
++
++        return map;
++    }
++
++    public User queryUser(User user) {
++        return new User(user.getId(), "hello:" +user.getName(), user.getAge() + 18);
++    }
++
++    public Map<String, User> queryAll() {
++        return userMap;
++    }
++
++
++    public User getUser(int userCode) {
++        return new User(String.valueOf(userCode), "userCode get", 48);
++    }
++
++    public User getUser(int usercode, String name) {
++        return new User(String.valueOf(usercode), name, 38);
++    }
++
++    public int Calc(int a,int b) {
++        return a + b;
++    }
++
++     public Response<Integer> Sum(int a,int b) {
++        return Response.ok(a+b);
++    }
++}
diff --cc generic/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
index cd63653,0000000..efad8af
mode 100644,000000..100644
--- a/generic/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
+++ b/generic/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
@@@ -1,36 -1,0 +1,36 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- 
- <beans xmlns="http://www.springframework.org/schema/beans"
- 	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- 	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- 	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
- 
- 	<!-- 应用名 -->
- 	<dubbo:application name="user-info-server"/>
- 	<!-- 连接到哪个本地注册中心 -->
- 	<dubbo:registry id="dubbogo"  address="zookeeper://127.0.0.1:2181" />
- 	<!-- 用dubbo协议在20880端口暴露服务 -->
- 	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
- 	<!-- 声明需要暴露的服务接口 -->
- 	<dubbo:service id="aaa" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="demoService"/>
- 	<dubbo:service id="bbb" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" version="2.0"/>
- 	<dubbo:service id="ccc" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" group="as" version="2.0"/>
- 
- 	<bean id="demoService" class="org.apache.dubbo.UserProviderImpl" />
- 	<bean id="otherService" class="org.apache.dubbo.UserProviderAnotherImpl"/>
- 
- </beans>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++
++<beans xmlns="http://www.springframework.org/schema/beans"
++	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
++	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
++	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
++	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
++
++	<!-- 应用名 -->
++	<dubbo:application name="user-info-server"/>
++	<!-- 连接到哪个本地注册中心 -->
++	<dubbo:registry id="dubbogo"  address="zookeeper://127.0.0.1:2181" />
++	<!-- 用dubbo协议在20880端口暴露服务 -->
++	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
++	<!-- 声明需要暴露的服务接口 -->
++	<dubbo:service id="aaa" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="demoService"/>
++	<dubbo:service id="bbb" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" version="2.0"/>
++	<dubbo:service id="ccc" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.UserProvider" ref="otherService" group="as" version="2.0"/>
++
++	<bean id="demoService" class="org.apache.dubbo.UserProviderImpl" />
++	<bean id="otherService" class="org.apache.dubbo.UserProviderAnotherImpl"/>
++
++</beans>
diff --cc generic/java-server/2.7/src/main/resources/log4j.properties
index 13c8049,0000000..806e33d
mode 100644,000000..100644
--- a/generic/java-server/2.7/src/main/resources/log4j.properties
+++ b/generic/java-server/2.7/src/main/resources/log4j.properties
@@@ -1,20 -1,0 +1,20 @@@
- ## Logger configure file for myproject
- log.dir=logs/
- datestamp=yyyy-MM-dd/HH:mm:ss.SSS
- 
- log4j.rootLogger=DEBUG, file, console
- 
- log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.file.threshold=DEBUG
- log4j.appender.file.File=${log.dir}/log4j.log
- log4j.appender.file.DatePattern=-yyyyMMddHH
- log4j.appender.file.ImmediateFlush=true
- log4j.appender.file.Append=true
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
- log4j.appender.console=org.apache.log4j.ConsoleAppender
- log4j.appender.console.Threshold=DEBUG
- log4j.appender.console.layout=org.apache.log4j.PatternLayout
- log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
++## Logger configure file for myproject
++log.dir=logs/
++datestamp=yyyy-MM-dd/HH:mm:ss.SSS
++
++log4j.rootLogger=DEBUG, file, console
++
++log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
++log4j.appender.file.threshold=DEBUG
++log4j.appender.file.File=${log.dir}/log4j.log
++log4j.appender.file.DatePattern=-yyyyMMddHH
++log4j.appender.file.ImmediateFlush=true
++log4j.appender.file.Append=true
++log4j.appender.file.layout=org.apache.log4j.PatternLayout
++log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
++log4j.appender.console=org.apache.log4j.ConsoleAppender
++log4j.appender.console.Threshold=DEBUG
++log4j.appender.console.layout=org.apache.log4j.PatternLayout
++log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
diff --cc go.mod
index 3885d92,0000000..6d28f3d
mode 100644,000000..100644
--- a/go.mod
+++ b/go.mod
@@@ -1,40 -1,0 +1,41 @@@
 +module github.com/apache/dubbo-go-samples
 +
 +require (
 +	cloud.google.com/go v0.50.0 // indirect
 +	github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 // indirect
 +	github.com/alibaba/sentinel-golang v1.0.2
 +	github.com/apache/dubbo-getty v1.4.3
 +	github.com/apache/dubbo-go v1.5.6
 +	github.com/apache/dubbo-go-hessian2 v1.9.1
 +	github.com/bwmarrin/snowflake v0.3.0
 +	github.com/docker/go-connections v0.4.0 // indirect
 +	github.com/dubbogo/gost v1.11.2
 +	github.com/emicklei/go-restful/v3 v3.4.0
 +	github.com/golang/protobuf v1.4.3
 +	github.com/gophercloud/gophercloud v0.3.0 // indirect
 +	github.com/hashicorp/golang-lru v0.5.3 // indirect
 +	github.com/imdario/mergo v0.3.9 // indirect
 +	github.com/linode/linodego v0.10.0 // indirect
 +	github.com/miekg/dns v1.1.27 // indirect
 +	github.com/mitchellh/hashstructure v1.0.0 // indirect
 +	github.com/opentracing/opentracing-go v1.2.0
 +	github.com/opentrx/mysql v1.0.0-pre // indirect
 +	github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5
 +	github.com/openzipkin/zipkin-go v0.2.2
 +	github.com/pkg/errors v0.9.1
 +	github.com/prometheus/client_golang v1.9.0
 +	github.com/stretchr/testify v1.7.0
 +	github.com/transaction-wg/seata-golang v0.2.1-alpha
 +	github.com/uber/jaeger-client-go v2.22.1+incompatible
 +	github.com/uber/jaeger-lib v2.2.0+incompatible // indirect
 +	google.golang.org/grpc v1.33.1
 +	google.golang.org/grpc/examples v0.0.0-20210322221411-d26af8e39165 // indirect
 +)
 +
 +replace (
++	github.com/apache/dubbo-go => github.com/apache/dubbo-go v1.5.7-rc1
 +	github.com/envoyproxy/go-control-plane => github.com/envoyproxy/go-control-plane v0.8.0
 +	google.golang.org/grpc => google.golang.org/grpc v1.26.0
 +)
 +
 +go 1.13
diff --cc integrate_test.sh
index 16e6915,0000000..16e6915
mode 100755,000000..100644
--- a/integrate_test.sh
+++ b/integrate_test.sh
diff --cc registry/kubernetes/README.md
index 954187d,0000000..b322b42
mode 100644,000000..100644
--- a/registry/kubernetes/README.md
+++ b/registry/kubernetes/README.md
@@@ -1,29 -1,0 +1,29 @@@
- ## kubernetes 
- 
- ```bash 
- 
- # create service-account
- kubectl create -f ./registry/kubernetes/sa.yaml
- 
- # create role 
- kubectl create -f ./registry/kubernetes/role.yaml
- 
- # bind role and service-account
- kubectl create -f ./registry/kubernetes/role-binding.yaml
- 
- # create server
- kubectl create -f ./registry/kubernetes/server.yaml
- 
- # create client
- kubectl create -f ./registry/kubernetes/client.yaml
- 
- # read the client log
- kubectl logs -f client
- 
- ## uninstall 
- kubectl delete -f ./registry/kubernetes/sa.yaml
- kubectl delete -f ./registry/kubernetes/role.yaml
- kubectl delete -f ./registry/kubernetes/role-binding.yaml
- kubectl delete -f ./registry/kubernetes/server.yaml
- kubectl delete -f ./registry/kubernetes/client.yaml
++## kubernetes 
++
++```bash 
++
++# create service-account
++kubectl create -f ./registry/kubernetes/sa.yaml
++
++# create role 
++kubectl create -f ./registry/kubernetes/role.yaml
++
++# bind role and service-account
++kubectl create -f ./registry/kubernetes/role-binding.yaml
++
++# create server
++kubectl create -f ./registry/kubernetes/server.yaml
++
++# create client
++kubectl create -f ./registry/kubernetes/client.yaml
++
++# read the client log
++kubectl logs -f client
++
++## uninstall 
++kubectl delete -f ./registry/kubernetes/sa.yaml
++kubectl delete -f ./registry/kubernetes/role.yaml
++kubectl delete -f ./registry/kubernetes/role-binding.yaml
++kubectl delete -f ./registry/kubernetes/server.yaml
++kubectl delete -f ./registry/kubernetes/client.yaml
 +```
diff --cc seata/client/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/seata/client/profiles/dev/log.yml
+++ b/seata/client/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc seata/client/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/seata/client/profiles/release/log.yml
+++ b/seata/client/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc seata/client/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/seata/client/profiles/test/log.yml
+++ b/seata/client/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc seata/order-svc/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/seata/order-svc/profiles/dev/log.yml
+++ b/seata/order-svc/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc seata/order-svc/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/seata/order-svc/profiles/release/log.yml
+++ b/seata/order-svc/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc seata/order-svc/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/seata/order-svc/profiles/test/log.yml
+++ b/seata/order-svc/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc seata/product-svc/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/seata/product-svc/profiles/dev/log.yml
+++ b/seata/product-svc/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc seata/product-svc/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/seata/product-svc/profiles/release/log.yml
+++ b/seata/product-svc/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc seata/product-svc/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/seata/product-svc/profiles/test/log.yml
+++ b/seata/product-svc/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc tracing/dubbo/go-client/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/tracing/dubbo/go-client/profiles/dev/log.yml
+++ b/tracing/dubbo/go-client/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc tracing/dubbo/go-client/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/tracing/dubbo/go-client/profiles/release/log.yml
+++ b/tracing/dubbo/go-client/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc tracing/dubbo/go-client/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/tracing/dubbo/go-client/profiles/test/log.yml
+++ b/tracing/dubbo/go-client/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc tracing/dubbo/go-server/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/tracing/dubbo/go-server/profiles/dev/log.yml
+++ b/tracing/dubbo/go-server/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc tracing/dubbo/go-server/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/tracing/dubbo/go-server/profiles/release/log.yml
+++ b/tracing/dubbo/go-server/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "warn"
++development: true
++disableCaller: true
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc tracing/dubbo/go-server/profiles/test/log.yml
index baee0b7,0000000..f93d3c7
mode 100644,000000..100644
--- a/tracing/dubbo/go-server/profiles/test/log.yml
+++ b/tracing/dubbo/go-server/profiles/test/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "info"
- development: false
- disableCaller: false
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "info"
++development: false
++disableCaller: false
++disableStacktrace: true
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc tracing/dubbo/java-client/pom.xml
index 4065414,0000000..445b924
mode 100644,000000..100644
--- a/tracing/dubbo/java-client/pom.xml
+++ b/tracing/dubbo/java-client/pom.xml
@@@ -1,230 -1,0 +1,230 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- 
- <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
- 		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- 	<modelVersion>4.0.0</modelVersion>
- 
- 	<groupId>com.ikurento</groupId>
- 	<artifactId>user-info-client</artifactId>
- 	<packaging>jar</packaging>
- 	<version>0.2.0</version>
- 	<description>The demo consumer module of dubbo project</description>
- 
- 	<properties>
- 		<skip_maven_deploy>false</skip_maven_deploy>
- 
- 		<dubbo-jsonrpc-version>1.0.1</dubbo-jsonrpc-version>
- 		<dubbo-version>2.6.5</dubbo-version>
- 	</properties>
- 
- 	<dependencyManagement>
- 		<dependencies>
- 			<dependency>
- 				<groupId>com.alibaba</groupId>
- 				<artifactId>dubbo-dependencies-bom</artifactId>
- 				<version>${dubbo-version}</version>
- 				<type>pom</type>
- 				<scope>import</scope>
- 			</dependency>
- 		</dependencies>
- 	</dependencyManagement>
- 
- 	<dependencies>
- 		<dependency>
- 			<groupId>com.qianmi</groupId>
- 			<artifactId>dubbo-rpc-jsonrpc</artifactId>
- 			<version>${dubbo-jsonrpc-version}</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>com.alibaba</groupId>
- 			<artifactId>dubbo</artifactId>
- 			<version>${dubbo-version}</version>
- 		</dependency>
- 
- 		<dependency>
- 			<groupId>io.netty</groupId>
- 			<artifactId>netty-all</artifactId>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.apache.curator</groupId>
- 			<artifactId>curator-framework</artifactId>
- 			<version>2.12.0</version>
- 		</dependency>
- 
- 		<dependency>
- 			<groupId>org.javassist</groupId>
- 			<artifactId>javassist</artifactId>
- 			<version>3.20.0-GA</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.jboss.netty</groupId>
- 			<artifactId>netty</artifactId>
- 			<version>3.2.5.Final</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.apache.mina</groupId>
- 			<artifactId>mina-core</artifactId>
- 			<version>1.1.7</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.glassfish.grizzly</groupId>
- 			<artifactId>grizzly-core</artifactId>
- 			<version>2.1.4</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.apache.httpcomponents</groupId>
- 			<artifactId>httpclient</artifactId>
- 			<version>4.5.7</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>com.alibaba</groupId>
- 			<artifactId>fastjson</artifactId>
- 			<version>1.2.56</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>com.thoughtworks.xstream</groupId>
- 			<artifactId>xstream</artifactId>
- 			<version>1.4.7</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.apache.bsf</groupId>
- 			<artifactId>bsf-api</artifactId>
- 			<version>3.1</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.apache.zookeeper</groupId>
- 			<artifactId>zookeeper</artifactId>
- 			<version>3.4.14</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>com.github.sgroschupf</groupId>
- 			<artifactId>zkclient</artifactId>
- 			<version>0.1</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>com.netflix.curator</groupId>
- 			<artifactId>curator-framework</artifactId>
- 			<version>1.1.16</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>com.googlecode.xmemcached</groupId>
- 			<artifactId>xmemcached</artifactId>
- 			<version>1.3.6</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.apache.cxf</groupId>
- 			<artifactId>cxf-rt-frontend-simple</artifactId>
- 			<version>2.6.1</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.apache.cxf</groupId>
- 			<artifactId>cxf-rt-transports-http</artifactId>
- 			<version>2.6.1</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.apache.thrift</groupId>
- 			<artifactId>libthrift</artifactId>
- 			<version>0.12.0</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>com.caucho</groupId>
- 			<artifactId>hessian</artifactId>
- 			<version>4.0.7</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>javax.servlet</groupId>
- 			<artifactId>servlet-api</artifactId>
- 			<version>2.5</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.mortbay.jetty</groupId>
- 			<artifactId>jetty</artifactId>
- 			<version>6.1.26</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>log4j</groupId>
- 			<artifactId>log4j</artifactId>
- 			<version>1.2.16</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.slf4j</groupId>
- 			<artifactId>slf4j-api</artifactId>
- 			<version>1.6.2</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>redis.clients</groupId>
- 			<artifactId>jedis</artifactId>
- 			<version>2.1.0</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>javax.validation</groupId>
- 			<artifactId>validation-api</artifactId>
- 			<version>1.0.0.GA</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>org.hibernate</groupId>
- 			<artifactId>hibernate-validator</artifactId>
- 			<version>4.2.0.Final</version>
- 		</dependency>
- 		<dependency>
- 			<groupId>javax.cache</groupId>
- 			<artifactId>cache-api</artifactId>
- 			<version>0.4</version>
- 		</dependency>
- 	</dependencies>
- 	<build>
- 		<plugins>
- 			<plugin>
- 				<artifactId>maven-dependency-plugin</artifactId>
- 				<executions>
- 					<execution>
- 						<id>unpack</id>
- 						<phase>package</phase>
- 						<goals>
- 							<goal>unpack</goal>
- 						</goals>
- 						<configuration>
- 							<artifactItems>
- 								<artifactItem>
- 									<groupId>com.alibaba</groupId>
- 									<artifactId>dubbo</artifactId>
- 									<version>${dubbo-version}</version>
- 									<outputDirectory>${project.build.directory}/dubbo</outputDirectory>
- 									<includes>META-INF/assembly/**</includes>
- 								</artifactItem>
- 							</artifactItems>
- 						</configuration>
- 					</execution>
- 				</executions>
- 			</plugin>
- 			<plugin>
- 				<artifactId>maven-assembly-plugin</artifactId>
-                 <configuration>
-                     <descriptor>src/main/assembly/assembly.xml</descriptor>
-                 </configuration>
-                 <executions>
- 					<execution>
- 						<id>make-assembly</id>
- 						<phase>package</phase>
- 						<goals>
- 							<goal>single</goal>
- 						</goals>
- 					</execution>
- 				</executions>
-             </plugin>
- 		</plugins>
- 	</build>
- </project>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++
++<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
++		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++	<modelVersion>4.0.0</modelVersion>
++
++	<groupId>com.ikurento</groupId>
++	<artifactId>user-info-client</artifactId>
++	<packaging>jar</packaging>
++	<version>0.2.0</version>
++	<description>The demo consumer module of dubbo project</description>
++
++	<properties>
++		<skip_maven_deploy>false</skip_maven_deploy>
++
++		<dubbo-jsonrpc-version>1.0.1</dubbo-jsonrpc-version>
++		<dubbo-version>2.6.5</dubbo-version>
++	</properties>
++
++	<dependencyManagement>
++		<dependencies>
++			<dependency>
++				<groupId>com.alibaba</groupId>
++				<artifactId>dubbo-dependencies-bom</artifactId>
++				<version>${dubbo-version}</version>
++				<type>pom</type>
++				<scope>import</scope>
++			</dependency>
++		</dependencies>
++	</dependencyManagement>
++
++	<dependencies>
++		<dependency>
++			<groupId>com.qianmi</groupId>
++			<artifactId>dubbo-rpc-jsonrpc</artifactId>
++			<version>${dubbo-jsonrpc-version}</version>
++		</dependency>
++		<dependency>
++			<groupId>com.alibaba</groupId>
++			<artifactId>dubbo</artifactId>
++			<version>${dubbo-version}</version>
++		</dependency>
++
++		<dependency>
++			<groupId>io.netty</groupId>
++			<artifactId>netty-all</artifactId>
++		</dependency>
++		<dependency>
++			<groupId>org.apache.curator</groupId>
++			<artifactId>curator-framework</artifactId>
++			<version>2.12.0</version>
++		</dependency>
++
++		<dependency>
++			<groupId>org.javassist</groupId>
++			<artifactId>javassist</artifactId>
++			<version>3.20.0-GA</version>
++		</dependency>
++		<dependency>
++			<groupId>org.jboss.netty</groupId>
++			<artifactId>netty</artifactId>
++			<version>3.2.5.Final</version>
++		</dependency>
++		<dependency>
++			<groupId>org.apache.mina</groupId>
++			<artifactId>mina-core</artifactId>
++			<version>1.1.7</version>
++		</dependency>
++		<dependency>
++			<groupId>org.glassfish.grizzly</groupId>
++			<artifactId>grizzly-core</artifactId>
++			<version>2.1.4</version>
++		</dependency>
++		<dependency>
++			<groupId>org.apache.httpcomponents</groupId>
++			<artifactId>httpclient</artifactId>
++			<version>4.5.7</version>
++		</dependency>
++		<dependency>
++			<groupId>com.alibaba</groupId>
++			<artifactId>fastjson</artifactId>
++			<version>1.2.56</version>
++		</dependency>
++		<dependency>
++			<groupId>com.thoughtworks.xstream</groupId>
++			<artifactId>xstream</artifactId>
++			<version>1.4.7</version>
++		</dependency>
++		<dependency>
++			<groupId>org.apache.bsf</groupId>
++			<artifactId>bsf-api</artifactId>
++			<version>3.1</version>
++		</dependency>
++		<dependency>
++			<groupId>org.apache.zookeeper</groupId>
++			<artifactId>zookeeper</artifactId>
++			<version>3.4.14</version>
++		</dependency>
++		<dependency>
++			<groupId>com.github.sgroschupf</groupId>
++			<artifactId>zkclient</artifactId>
++			<version>0.1</version>
++		</dependency>
++		<dependency>
++			<groupId>com.netflix.curator</groupId>
++			<artifactId>curator-framework</artifactId>
++			<version>1.1.16</version>
++		</dependency>
++		<dependency>
++			<groupId>com.googlecode.xmemcached</groupId>
++			<artifactId>xmemcached</artifactId>
++			<version>1.3.6</version>
++		</dependency>
++		<dependency>
++			<groupId>org.apache.cxf</groupId>
++			<artifactId>cxf-rt-frontend-simple</artifactId>
++			<version>2.6.1</version>
++		</dependency>
++		<dependency>
++			<groupId>org.apache.cxf</groupId>
++			<artifactId>cxf-rt-transports-http</artifactId>
++			<version>2.6.1</version>
++		</dependency>
++		<dependency>
++			<groupId>org.apache.thrift</groupId>
++			<artifactId>libthrift</artifactId>
++			<version>0.12.0</version>
++		</dependency>
++		<dependency>
++			<groupId>com.caucho</groupId>
++			<artifactId>hessian</artifactId>
++			<version>4.0.7</version>
++		</dependency>
++		<dependency>
++			<groupId>javax.servlet</groupId>
++			<artifactId>servlet-api</artifactId>
++			<version>2.5</version>
++		</dependency>
++		<dependency>
++			<groupId>org.mortbay.jetty</groupId>
++			<artifactId>jetty</artifactId>
++			<version>6.1.26</version>
++		</dependency>
++		<dependency>
++			<groupId>log4j</groupId>
++			<artifactId>log4j</artifactId>
++			<version>1.2.16</version>
++		</dependency>
++		<dependency>
++			<groupId>org.slf4j</groupId>
++			<artifactId>slf4j-api</artifactId>
++			<version>1.6.2</version>
++		</dependency>
++		<dependency>
++			<groupId>redis.clients</groupId>
++			<artifactId>jedis</artifactId>
++			<version>2.1.0</version>
++		</dependency>
++		<dependency>
++			<groupId>javax.validation</groupId>
++			<artifactId>validation-api</artifactId>
++			<version>1.0.0.GA</version>
++		</dependency>
++		<dependency>
++			<groupId>org.hibernate</groupId>
++			<artifactId>hibernate-validator</artifactId>
++			<version>4.2.0.Final</version>
++		</dependency>
++		<dependency>
++			<groupId>javax.cache</groupId>
++			<artifactId>cache-api</artifactId>
++			<version>0.4</version>
++		</dependency>
++	</dependencies>
++	<build>
++		<plugins>
++			<plugin>
++				<artifactId>maven-dependency-plugin</artifactId>
++				<executions>
++					<execution>
++						<id>unpack</id>
++						<phase>package</phase>
++						<goals>
++							<goal>unpack</goal>
++						</goals>
++						<configuration>
++							<artifactItems>
++								<artifactItem>
++									<groupId>com.alibaba</groupId>
++									<artifactId>dubbo</artifactId>
++									<version>${dubbo-version}</version>
++									<outputDirectory>${project.build.directory}/dubbo</outputDirectory>
++									<includes>META-INF/assembly/**</includes>
++								</artifactItem>
++							</artifactItems>
++						</configuration>
++					</execution>
++				</executions>
++			</plugin>
++			<plugin>
++				<artifactId>maven-assembly-plugin</artifactId>
++                <configuration>
++                    <descriptor>src/main/assembly/assembly.xml</descriptor>
++                </configuration>
++                <executions>
++					<execution>
++						<id>make-assembly</id>
++						<phase>package</phase>
++						<goals>
++							<goal>single</goal>
++						</goals>
++					</execution>
++				</executions>
++            </plugin>
++		</plugins>
++	</build>
++</project>
diff --cc tracing/dubbo/java-client/src/main/assembly/assembly.xml
index bc00a06,0000000..84f5499
mode 100644,000000..100644
--- a/tracing/dubbo/java-client/src/main/assembly/assembly.xml
+++ b/tracing/dubbo/java-client/src/main/assembly/assembly.xml
@@@ -1,43 -1,0 +1,43 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- 
- <assembly>
- 	<id>assembly</id>
- 	<formats>
- 		<format>tar.gz</format>
- 	</formats>
- 	<includeBaseDirectory>true</includeBaseDirectory>
- 	<fileSets>
- 		<fileSet>
- 			<directory>${project.build.directory}/dubbo/META-INF/assembly/bin</directory>
- 			<outputDirectory>bin</outputDirectory>
- 			<fileMode>0755</fileMode>
- 		</fileSet>
- 		<fileSet>
- 			<directory>src/main/resources</directory>
- 			<includes>
- 				<include>dubbo.properties</include>
- 				<include>log4j.*</include>
- 			</includes>
- 			<outputDirectory>conf</outputDirectory>
- 			<fileMode>0644</fileMode>
- 		</fileSet>
- 	</fileSets>
- 	<dependencySets>
- 		<dependencySet>
- 			<outputDirectory>lib</outputDirectory>
- 		</dependencySet>
- 	</dependencySets>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++
++<assembly>
++	<id>assembly</id>
++	<formats>
++		<format>tar.gz</format>
++	</formats>
++	<includeBaseDirectory>true</includeBaseDirectory>
++	<fileSets>
++		<fileSet>
++			<directory>${project.build.directory}/dubbo/META-INF/assembly/bin</directory>
++			<outputDirectory>bin</outputDirectory>
++			<fileMode>0755</fileMode>
++		</fileSet>
++		<fileSet>
++			<directory>src/main/resources</directory>
++			<includes>
++				<include>dubbo.properties</include>
++				<include>log4j.*</include>
++			</includes>
++			<outputDirectory>conf</outputDirectory>
++			<fileMode>0644</fileMode>
++		</fileSet>
++	</fileSets>
++	<dependencySets>
++		<dependencySet>
++			<outputDirectory>lib</outputDirectory>
++		</dependencySet>
++	</dependencySets>
 +</assembly>
diff --cc tracing/dubbo/java-client/src/main/java/com/ikurento/user/User.java
index 666e904,0000000..1526244
mode 100644,000000..100644
--- a/tracing/dubbo/java-client/src/main/java/com/ikurento/user/User.java
+++ b/tracing/dubbo/java-client/src/main/java/com/ikurento/user/User.java
@@@ -1,76 -1,0 +1,76 @@@
- /*
-  * 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 com.ikurento.user;
- 
- import java.util.Date;
- 
- public class User {
- 
-     private String id;
- 
-     private String name;
- 
-     private int age;
- 
-     private Date time = new Date();
- 
- 
-     public User() {
-     }
- 
- 
-     public User(String id, String name, int age) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-     }
- 
-     public String getId() {
-         return id;
-     }
- 
-     public void setId(String id) {
-         this.id = id;
-     }
- 
-     public String getName() {
-         return name;
-     }
- 
-     public void setName(String name) {
-         this.name = name;
-     }
- 
-     public int getAge() {
-         return age;
-     }
- 
-     public void setAge(int age) {
-         this.age = age;
-     }
- 
-     public Date getTime() {
-         return time;
-     }
- 
-     public void setTime(Date time) {
-         this.time = time;
-     }
- 
- 
- }
++/*
++ * 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 com.ikurento.user;
++
++import java.util.Date;
++
++public class User {
++
++    private String id;
++
++    private String name;
++
++    private int age;
++
++    private Date time = new Date();
++
++
++    public User() {
++    }
++
++
++    public User(String id, String name, int age) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++    }
++
++    public String getId() {
++        return id;
++    }
++
++    public void setId(String id) {
++        this.id = id;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public Date getTime() {
++        return time;
++    }
++
++    public void setTime(Date time) {
++        this.time = time;
++    }
++
++
++}
diff --cc tracing/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java
index 67a836a,0000000..f42452d
mode 100644,000000..100644
--- a/tracing/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java
+++ b/tracing/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java
@@@ -1,18 -1,0 +1,18 @@@
- /*
-  * Licensed 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 com.ikurento.user;
- 
- public interface UserProvider {
- 	User GetUser(String userId);
- }
++/*
++ * Licensed 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 com.ikurento.user;
++
++public interface UserProvider {
++	User GetUser(String userId);
++}
diff --cc tracing/dubbo/java-client/src/main/resources/META-INF/spring/service.xml
index 529f63e,0000000..e4f5fda
mode 100644,000000..100644
--- a/tracing/dubbo/java-client/src/main/resources/META-INF/spring/service.xml
+++ b/tracing/dubbo/java-client/src/main/resources/META-INF/spring/service.xml
@@@ -1,27 -1,0 +1,27 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- <beans xmlns="http://www.springframework.org/schema/beans"
- 	xmlns:context="http://www.springframework.org/schema/context"
- 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- 	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- 	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
- 
- 	<bean class="com.ikurento.user.Consumer" init-method="start">
- 		<!-- 声明这个类 要使用的服务名-->
- 		<property name="userProvider" ref="userProvider" />
- 	</bean>
- 
- </beans>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++<beans xmlns="http://www.springframework.org/schema/beans"
++	xmlns:context="http://www.springframework.org/schema/context"
++	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
++	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
++	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
++	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
++
++	<bean class="com.ikurento.user.Consumer" init-method="start">
++		<!-- 声明这个类 要使用的服务名-->
++		<property name="userProvider" ref="userProvider" />
++	</bean>
++
++</beans>
diff --cc tracing/dubbo/java-client/src/main/resources/dubbo.properties
index e561efc,0000000..701dd46
mode 100644,000000..100644
--- a/tracing/dubbo/java-client/src/main/resources/dubbo.properties
+++ b/tracing/dubbo/java-client/src/main/resources/dubbo.properties
@@@ -1,13 -1,0 +1,13 @@@
- ### dubboע���������� ###
- dubbo.container = log4j,spring
- dubbo.application.name = user-info-client
- dubbo.application.owner = AlexStocks
- dubbo.application.environment  =  product
- dubbo.registry.address = zookeeper://127.0.0.1:2181
- dubbo.monitor.protocol = zookeeper
- dubbo.consumer.timeout = 10000
- dubbo.provider.timeout = 10000
- dubbo.protocol.name = dubbo
- 
- dubbo.log4j.file = logs/client.log
- dubbo.log4j.level = WARN
++### dubboע���������� ###
++dubbo.container = log4j,spring
++dubbo.application.name = user-info-client
++dubbo.application.owner = AlexStocks
++dubbo.application.environment  =  product
++dubbo.registry.address = zookeeper://127.0.0.1:2181
++dubbo.monitor.protocol = zookeeper
++dubbo.consumer.timeout = 10000
++dubbo.provider.timeout = 10000
++dubbo.protocol.name = dubbo
++
++dubbo.log4j.file = logs/client.log
++dubbo.log4j.level = WARN
diff --cc tracing/dubbo/java-server/src/main/assembly/assembly.xml
index 5b4075c,0000000..c0aeffd
mode 100644,000000..100644
--- a/tracing/dubbo/java-server/src/main/assembly/assembly.xml
+++ b/tracing/dubbo/java-server/src/main/assembly/assembly.xml
@@@ -1,44 -1,0 +1,44 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- <assembly>
- 	<id>assembly</id>
- 	<formats>
- 		<format>tar.gz</format>
- 	</formats>
- 	<includeBaseDirectory>true</includeBaseDirectory>
- 	<fileSets>
- 		<fileSet>
- 			<directory>${project.build.directory}/dubbo/META-INF/assembly/bin</directory>
- 			<outputDirectory>bin</outputDirectory>
- 			<fileMode>0755</fileMode>
-             <directoryMode>0755</directoryMode>
- 		</fileSet>
- 		<fileSet>
-             <directory>src/main/resources</directory>
-             <includes>
-                 <include>dubbo.properties</include>
-                 <include>log4j.*</include>
-             </includes>
- 			<outputDirectory>conf</outputDirectory>
- 			<fileMode>0644</fileMode>
-             <directoryMode>0755</directoryMode>
- 		</fileSet>
- 	</fileSets>
- 	<dependencySets>
- 		<dependencySet>
- 			<outputDirectory>lib</outputDirectory>
- 		</dependencySet>
- 	</dependencySets>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++<assembly>
++	<id>assembly</id>
++	<formats>
++		<format>tar.gz</format>
++	</formats>
++	<includeBaseDirectory>true</includeBaseDirectory>
++	<fileSets>
++		<fileSet>
++			<directory>${project.build.directory}/dubbo/META-INF/assembly/bin</directory>
++			<outputDirectory>bin</outputDirectory>
++			<fileMode>0755</fileMode>
++            <directoryMode>0755</directoryMode>
++		</fileSet>
++		<fileSet>
++            <directory>src/main/resources</directory>
++            <includes>
++                <include>dubbo.properties</include>
++                <include>log4j.*</include>
++            </includes>
++			<outputDirectory>conf</outputDirectory>
++			<fileMode>0644</fileMode>
++            <directoryMode>0755</directoryMode>
++		</fileSet>
++	</fileSets>
++	<dependencySets>
++		<dependencySet>
++			<outputDirectory>lib</outputDirectory>
++		</dependencySet>
++	</dependencySets>
 +</assembly>
diff --cc tracing/dubbo/java-server/src/main/java/com/ikurento/user/User.java
index fd2cafb,0000000..ac046bd
mode 100644,000000..100644
--- a/tracing/dubbo/java-server/src/main/java/com/ikurento/user/User.java
+++ b/tracing/dubbo/java-server/src/main/java/com/ikurento/user/User.java
@@@ -1,86 -1,0 +1,86 @@@
- /*
-  * 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 com.ikurento.user;
- 
- import java.util.Date;
- import java.io.Serializable;
- 
- public class User implements Serializable  {
- 
-     private String id;
- 
-     private String name;
- 
-     private int age;
- 
-     private Date time = new Date();
- 
-     public User() {
-     }
- 
-     public User(String id, String name, int age) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-     }
- 
-     public User(String id, String name, int age, Date time) {
-         this.id = id;
-         this.name = name;
-         this.age = age;
-         this.time = time;
-     }
- 
-     public String getId() {
-         return id;
-     }
- 
-     public void setId(String id) {
-         this.id = id;
-     }
- 
-     public String getName() {
-         return name;
-     }
- 
-     public void setName(String name) {
-         this.name = name;
-     }
- 
-     public int getAge() {
-         return age;
-     }
- 
-     public void setAge(int age) {
-         this.age = age;
-     }
- 
-     public Date getTime() {
-         return time;
-     }
- 
-     public void setTime(Date time) {
-         this.time = time;
-     }
- 
- 
- 
-     public String toString() {
-         return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time +"}";
-     }
- }
++/*
++ * 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 com.ikurento.user;
++
++import java.util.Date;
++import java.io.Serializable;
++
++public class User implements Serializable  {
++
++    private String id;
++
++    private String name;
++
++    private int age;
++
++    private Date time = new Date();
++
++    public User() {
++    }
++
++    public User(String id, String name, int age) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++    }
++
++    public User(String id, String name, int age, Date time) {
++        this.id = id;
++        this.name = name;
++        this.age = age;
++        this.time = time;
++    }
++
++    public String getId() {
++        return id;
++    }
++
++    public void setId(String id) {
++        this.id = id;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public Date getTime() {
++        return time;
++    }
++
++    public void setTime(Date time) {
++        this.time = time;
++    }
++
++
++
++    public String toString() {
++        return "User{id:" + id + ", name:" + name + ", age:" + age + ", time:" + time +"}";
++    }
++}
diff --cc tracing/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java
index b1eeab8,0000000..831588d
mode 100644,000000..100644
--- a/tracing/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java
+++ b/tracing/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java
@@@ -1,24 -1,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 com.ikurento.user;
- 
- public interface UserProvider {
- 
-     User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
- 
- }
++/*
++ * 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 com.ikurento.user;
++
++public interface UserProvider {
++
++    User GetUser(String userId); // the first alpha is Upper case to compatible with golang.
++
++}
diff --cc tracing/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java
index 0d66c43,0000000..10dbbc3
mode 100644,000000..100644
--- a/tracing/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java
+++ b/tracing/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java
@@@ -1,30 -1,0 +1,30 @@@
- /*
-  * 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 com.ikurento.user;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
- public class UserProviderImpl implements UserProvider {
-     private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); //Output to user-server.log
- 
-     public User GetUser(String userId) {
-         return new User(userId, "zhangsan", 18);
-     }
- 
- }
++/*
++ * 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 com.ikurento.user;
++
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++public class UserProviderImpl implements UserProvider {
++    private static final Logger LOG = LoggerFactory.getLogger("UserLogger"); //Output to user-server.log
++
++    public User GetUser(String userId) {
++        return new User(userId, "zhangsan", 18);
++    }
++
++}
diff --cc tracing/dubbo/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml
index 3fca067,0000000..7351324
mode 100644,000000..100644
--- a/tracing/dubbo/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml
+++ b/tracing/dubbo/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml
@@@ -1,33 -1,0 +1,33 @@@
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-   Licensed 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.
- -->
- <beans xmlns="http://www.springframework.org/schema/beans"
- 	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- 	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- 	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
- 
- 	<!-- 应用名 -->
- 	<dubbo:application name="user-info-server"/>
- 	<!-- 连接到哪个本地注册中心 -->
- 	<dubbo:registry id="ikurento"  address="zookeeper://127.0.0.1:2181" />
- 	<!-- 用dubbo协议在20880端口暴露服务 -->
-     <!-- dubbo:protocol host="127.0.0.1" / -->
- 	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
- 	<!-- 声明需要暴露的服务接口 -->
- 	<dubbo:service id="aaa" registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/>
- 
- 	<bean id="demoService" class="com.ikurento.user.UserProviderImpl" />
- 
- </beans>
++<?xml version="1.0" encoding="UTF-8"?>
++<!--
++  Licensed 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.
++-->
++<beans xmlns="http://www.springframework.org/schema/beans"
++	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
++	   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
++	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
++	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
++
++	<!-- 应用名 -->
++	<dubbo:application name="user-info-server"/>
++	<!-- 连接到哪个本地注册中心 -->
++	<dubbo:registry id="ikurento"  address="zookeeper://127.0.0.1:2181" />
++	<!-- 用dubbo协议在20880端口暴露服务 -->
++    <!-- dubbo:protocol host="127.0.0.1" / -->
++	<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
++	<!-- 声明需要暴露的服务接口 -->
++	<dubbo:service id="aaa" registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/>
++
++	<bean id="demoService" class="com.ikurento.user.UserProviderImpl" />
++
++</beans>
diff --cc tracing/dubbo/java-server/src/main/resources/dubbo.properties
index 2826f31,0000000..54f8a16
mode 100644,000000..100644
--- a/tracing/dubbo/java-server/src/main/resources/dubbo.properties
+++ b/tracing/dubbo/java-server/src/main/resources/dubbo.properties
@@@ -1,14 -1,0 +1,14 @@@
- ### dubbo注册中心配置 ##
- dubbo.container = log4j,spring
- dubbo.application.name = user-info-server
- dubbo.application.environment = product
- dubbo.application.owner = AlexStocks
- dubbo.registry.address = 127.0.0.1:2181
- dubbo.registry.protocol = zookeeper
- dubbo.consumer.timeout = 10000
- dubbo.provider.timeout = 10000
- dubbo.protocol.name = dubbo
- dubbo.protocol.port = 10000
- 
- dubbo.log4j.file = logs/dubbo.log
- dubbo.log4j.level = INFO
++### dubbo注册中心配置 ##
++dubbo.container = log4j,spring
++dubbo.application.name = user-info-server
++dubbo.application.environment = product
++dubbo.application.owner = AlexStocks
++dubbo.registry.address = 127.0.0.1:2181
++dubbo.registry.protocol = zookeeper
++dubbo.consumer.timeout = 10000
++dubbo.provider.timeout = 10000
++dubbo.protocol.name = dubbo
++dubbo.protocol.port = 10000
++
++dubbo.log4j.file = logs/dubbo.log
++dubbo.log4j.level = INFO
diff --cc tracing/dubbo/java-server/src/main/resources/log4j.properties
index 13c8049,0000000..806e33d
mode 100644,000000..100644
--- a/tracing/dubbo/java-server/src/main/resources/log4j.properties
+++ b/tracing/dubbo/java-server/src/main/resources/log4j.properties
@@@ -1,20 -1,0 +1,20 @@@
- ## Logger configure file for myproject
- log.dir=logs/
- datestamp=yyyy-MM-dd/HH:mm:ss.SSS
- 
- log4j.rootLogger=DEBUG, file, console
- 
- log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.file.threshold=DEBUG
- log4j.appender.file.File=${log.dir}/log4j.log
- log4j.appender.file.DatePattern=-yyyyMMddHH
- log4j.appender.file.ImmediateFlush=true
- log4j.appender.file.Append=true
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
- log4j.appender.console=org.apache.log4j.ConsoleAppender
- log4j.appender.console.Threshold=DEBUG
- log4j.appender.console.layout=org.apache.log4j.PatternLayout
- log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
- 
++## Logger configure file for myproject
++log.dir=logs/
++datestamp=yyyy-MM-dd/HH:mm:ss.SSS
++
++log4j.rootLogger=DEBUG, file, console
++
++log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
++log4j.appender.file.threshold=DEBUG
++log4j.appender.file.File=${log.dir}/log4j.log
++log4j.appender.file.DatePattern=-yyyyMMddHH
++log4j.appender.file.ImmediateFlush=true
++log4j.appender.file.Append=true
++log4j.appender.file.layout=org.apache.log4j.PatternLayout
++log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
++log4j.appender.console=org.apache.log4j.ConsoleAppender
++log4j.appender.console.Threshold=DEBUG
++log4j.appender.console.layout=org.apache.log4j.PatternLayout
++log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n
++
diff --cc tracing/jsonrpc/go-client/profiles/dev/log.yml
index 59fa427,0000000..3ed242d
mode 100644,000000..100644
--- a/tracing/jsonrpc/go-client/profiles/dev/log.yml
+++ b/tracing/jsonrpc/go-client/profiles/dev/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "debug"
- development: true
- disableCaller: false
- disableStacktrace: false
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
-   messageKey: "message"
-   levelKey: "level"
-   timeKey: "time"
-   nameKey: "logger"
-   callerKey: "caller"
-   stacktraceKey: "stacktrace"
-   lineEnding: ""
-   levelEncoder: "capitalColor"
-   timeEncoder: "iso8601"
-   durationEncoder: "seconds"
-   callerEncoder: "short"
-   nameEncoder: ""
- 
- outputPaths:
-   - "stderr"
- errorOutputPaths:
-   - "stderr"
- initialFields:
++
++level: "debug"
++development: true
++disableCaller: false
++disableStacktrace: false
++sampling:
++encoding: "console"
++
++# encoder
++encoderConfig:
++  messageKey: "message"
++  levelKey: "level"
++  timeKey: "time"
++  nameKey: "logger"
++  callerKey: "caller"
++  stacktraceKey: "stacktrace"
++  lineEnding: ""
++  levelEncoder: "capitalColor"
++  timeEncoder: "iso8601"
++  durationEncoder: "seconds"
++  callerEncoder: "short"
++  nameEncoder: ""
++
++outputPaths:
++  - "stderr"
++errorOutputPaths:
++  - "stderr"
++initialFields:
diff --cc tracing/jsonrpc/go-client/profiles/release/log.yml
index e0514be,0000000..d860624
mode 100644,000000..100644
--- a/tracing/jsonrpc/go-client/profiles/release/log.yml
+++ b/tracing/jsonrpc/go-client/profiles/release/log.yml
@@@ -1,28 -1,0 +1,28 @@@
- 
- level: "warn"
- development: true
- disableCaller: true
- disableStacktrace: true
- sampling:
- encoding: "console"
- 
- # encoder
- encoderConfig:
... 294 lines suppressed ...

[dubbo-go-samples] 11/18: mod imports (#168)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 2bba433d9e8ee5523c6342d414cb98af64950abb
Author: 氕氘氚 <cj...@163.com>
AuthorDate: Tue Jul 13 13:23:05 2021 +0800

    mod imports (#168)
---
 async/go-client/cmd/client.go                      |  1 +
 async/go-client/pkg/user.go                        |  1 +
 async/go-server/pkg/user.go                        |  1 +
 async/go-server/tests/integration/main_test.go     |  1 +
 .../tests/integration/userprovider_test.go         |  2 +
 attachment/go-client/cmd/client.go                 | 11 ++--
 attachment/go-server/cmd/server.go                 |  8 +--
 attachment/go-server/pkg/user.go                   |  6 +--
 .../go-server/tests/integration/main_test.go       | 13 ++---
 .../tests/integration/userprovider_test.go         |  2 +
 chain/backend/cmd/server.go                        |  8 +--
 chain/backend/tests/integration/main_test.go       | 12 ++---
 chain/backend/tests/integration/services_test.go   |  1 +
 chain/frontend/cmd/client.go                       |  8 +--
 chain/middle/cmd/server.go                         |  8 +--
 chain/middle/tests/integration/main_test.go        | 12 ++---
 chain/middle/tests/integration/services_test.go    |  4 +-
 config-api/go-client/cmd/client.go                 |  1 +
 config-api/go-server/pkg/user.go                   |  1 +
 .../go-server/tests/integration/main_test.go       |  2 -
 .../tests/integration/userprovider_test.go         |  1 +
 configcenter/apollo/go-client/cmd/client.go        |  1 +
 configcenter/apollo/go-server/cmd/server.go        |  2 -
 configcenter/apollo/go-server/pkg/user.go          |  1 +
 configcenter/nacos/go-client/cmd/client.go         |  1 +
 configcenter/nacos/go-server/pkg/user.go           |  1 +
 configcenter/zookeeper/go-client/cmd/client.go     |  1 +
 configcenter/zookeeper/go-server/pkg/user.go       |  1 +
 context/go-client/cmd/client.go                    |  1 +
 context/go-server/pkg/user.go                      |  1 +
 .../tests/integration/userprovider_test.go         |  2 +
 direct/go-client/cmd/client.go                     |  1 +
 direct/go-server/pkg/user.go                       |  1 +
 .../tests/integration/userprovider_test.go         |  3 +-
 docker/go-client/cmd/client.go                     |  1 +
 docker/go-server/pkg/user.go                       |  1 +
 filter/custom/go-client/cmd/client.go              |  1 +
 filter/custom/go-server/pkg/custom_filter.go       |  1 +
 filter/custom/go-server/pkg/user.go                |  1 +
 .../tests/integration/userprovider_test.go         |  1 +
 filter/sentinel/go-client/cmd/client.go            |  2 +
 filter/sentinel/go-server/cmd/server.go            |  1 +
 filter/sentinel/go-server/pkg/user.go              |  1 +
 .../tests/integration/userprovider_test.go         |  1 +
 filter/tpslimit/go-server/pkg/limit_strategy.go    |  1 +
 filter/tpslimit/go-server/pkg/user.go              |  1 +
 game/go-server-game/cmd/server.go                  | 42 ++++++++--------
 game/go-server-game/pkg/consumer.go                |  6 ++-
 game/go-server-game/pkg/provider.go                | 16 +++---
 .../tests/integration/gameprovider_test.go         | 10 ++--
 game/go-server-game/tests/integration/main_test.go | 40 +++++++--------
 game/go-server-gate/cmd/server.go                  | 58 +++++++++++-----------
 game/go-server-gate/pkg/consumer.go                |  9 ++--
 game/go-server-gate/pkg/provider.go                | 11 ++--
 .../tests/integration/gateprovider_test.go         | 10 ++--
 game/go-server-gate/tests/integration/main_test.go | 40 +++++++--------
 game/pkg/consumer/game/basketball.go               |  7 ++-
 game/pkg/consumer/gate/basketball.go               |  7 ++-
 game/pkg/pojo/info.go                              |  2 +-
 general/dubbo/go-client/cmd/client.go              | 13 ++---
 general/dubbo/go-server/cmd/server.go              | 18 +++----
 general/dubbo/go-server/pkg/user_provider.go       |  9 ++--
 .../dubbo/go-server/tests/integration/main_test.go | 21 ++++----
 .../tests/integration/userprovider_test.go         |  9 +++-
 general/grpc/go-client/cmd/client.go               | 10 ++--
 general/grpc/go-client/pkg/hello.go                |  8 ++-
 general/grpc/go-server/cmd/server.go               |  5 +-
 general/grpc/go-server/pkg/greeter.go              |  3 ++
 .../go-server/tests/integration/greeter_test.go    | 10 +++-
 .../grpc/go-server/tests/integration/main_test.go  | 13 +++--
 general/grpc/protobuf/helloworld.pb.go             | 11 ++--
 general/grpc/stream/go-client/app/client.go        |  3 +-
 general/grpc/stream/go-client/app/hello.go         |  6 +--
 general/grpc/stream/go-client/app/helloworld.pb.go | 11 ++--
 general/grpc/stream/go-server/app/helloworld.pb.go | 11 ++--
 general/grpc/unary/go-client/app/client.go         |  1 +
 general/grpc/unary/go-client/app/helloworld.pb.go  | 12 ++---
 general/grpc/unary/go-server/app/helloworld.pb.go  | 11 ++--
 general/jsonrpc/go-client/app/client.go            | 14 ++----
 general/jsonrpc/go-server/app/server.go            |  8 ++-
 general/jsonrpc/go-server/app/user_provider.go     |  5 +-
 general/jsonrpc/go-server/app/user_provider1.go    |  5 +-
 general/jsonrpc/go-server/app/user_provider2.go    |  5 +-
 general/rest/go-client/cmd/client.go               | 11 ++--
 general/rest/go-server/cmd/server.go               | 12 ++---
 general/rest/go-server/pkg/user_provider.go        |  7 ++-
 general/rest/go-server/pkg/user_provider1.go       |  7 ++-
 general/rest/go-server/pkg/user_provider2.go       |  7 ++-
 generic/go-client/cmd/client.go                    | 11 ++--
 generic/go-server/cmd/server.go                    |  3 +-
 generic/go-server/pkg/user.go                      |  6 +--
 generic/go-server/tests/integration/main_test.go   | 12 ++---
 .../tests/integration/userprovider_test.go         |  4 +-
 group/go-client/cmd/client.go                      | 11 ++--
 group/go-server-group-a/pkg/user.go                |  1 +
 .../tests/integration/main_test.go                 |  3 +-
 .../tests/integration/userprovider_test.go         |  1 +
 group/go-server-group-b/pkg/user.go                |  1 +
 .../tests/integration/main_test.go                 |  3 +-
 helloworld/go-client/cmd/client.go                 |  1 +
 metric/go-client/cmd/client.go                     |  1 +
 metric/go-server/cmd/server.go                     |  4 +-
 metric/go-server/pkg/user.go                       |  9 ++--
 metric/go-server/tests/integration/main_test.go    | 17 +++----
 .../tests/integration/userprovider_test.go         |  1 +
 multi-registry/go-client/cmd/client.go             |  2 +-
 multi-registry/go-server/cmd/server.go             |  1 -
 multi-registry/go-server/pkg/user.go               |  6 +--
 .../go-server/tests/integration/main_test.go       | 14 +++---
 .../tests/integration/userprovider_test.go         |  1 +
 multi-zone/go-client/cmd/client.go                 |  2 +-
 .../go-client/tests/integration/main_test.go       | 14 +++---
 .../tests/integration/userprovider_test.go         |  9 +++-
 multi-zone/go-server-hz/pkg/user.go                |  1 +
 .../tests/integration/userprovider_test.go         |  1 +
 multi-zone/go-server-sh/pkg/user.go                |  1 +
 .../go-server-sh/tests/integration/main_test.go    |  2 -
 .../tests/integration/userprovider_test.go         |  1 +
 registry/etcd/go-client/cmd/client.go              | 11 ++--
 registry/etcd/go-server/cmd/server.go              |  6 ++-
 registry/etcd/go-server/pkg/user.go                |  6 +--
 .../etcd/go-server/tests/integration/main_test.go  | 17 +++----
 .../tests/integration/userprovider_test.go         |  1 +
 registry/nacos/go-client/cmd/client.go             | 11 ++--
 registry/nacos/go-server/pkg/user.go               |  6 +--
 .../nacos/go-server/tests/integration/main_test.go | 17 +++----
 .../tests/integration/userprovider_test.go         |  1 +
 .../consul/go-client/cmd/client.go                 | 20 ++++----
 .../consul/go-server/cmd/server.go                 | 25 ++++------
 .../consul/go-server/pkg/pojo/user.go              |  2 -
 .../go-server/tests/integration/main_test.go       |  1 -
 .../tests/integration/userprovider_test.go         |  1 +
 .../servicediscovery/etcd/go-client/cmd/client.go  | 12 ++---
 .../servicediscovery/etcd/go-server/cmd/server.go  |  6 ++-
 .../servicediscovery/etcd/go-server/pkg/user.go    |  6 +--
 .../etcd/go-server/tests/integration/main_test.go  | 15 +++---
 .../tests/integration/userprovider_test.go         |  1 +
 .../servicediscovery/file/go-client/cmd/client.go  | 12 ++---
 .../servicediscovery/file/go-server/cmd/server.go  |  6 ++-
 .../servicediscovery/file/go-server/pkg/user.go    |  6 +--
 .../file/go-server/tests/integration/main_test.go  | 15 +++---
 .../tests/integration/userprovider_test.go         |  1 +
 .../servicediscovery/nacos/go-client/cmd/client.go | 12 ++---
 .../servicediscovery/nacos/go-server/cmd/server.go |  6 ++-
 .../servicediscovery/nacos/go-server/pkg/user.go   |  6 +--
 .../nacos/go-server/tests/integration/main_test.go | 15 +++---
 .../tests/integration/userprovider_test.go         |  1 +
 .../zookeeper/go-client/cmd/client.go              | 12 ++---
 .../zookeeper/go-server/cmd/server.go              |  6 ++-
 .../zookeeper/go-server/pkg/user.go                |  6 +--
 .../go-server/tests/integration/main_test.go       | 17 +++----
 .../tests/integration/userprovider_test.go         |  1 +
 router/condition/go-client/cmd/client.go           |  3 +-
 .../go-server/tests/integration/main_test.go       | 15 +++---
 .../tests/integration/userprovider_test.go         |  1 +
 router/tag/go-client/cmd/client.go                 |  1 +
 .../tag/go-server/tests/integration/main_test.go   | 14 +++---
 .../tests/integration/userprovider_test.go         |  1 +
 shopping-order/go-client/cmd/client.go             |  1 +
 shopping-order/go-client/pkg/svc.go                |  1 +
 shopping-order/go-server-order/cmd/order_svc.go    |  1 +
 shopping-order/go-server-order/cmd/server.go       |  2 +
 shopping-order/go-server-order/pkg/dao/dao.go      |  1 +
 .../go-server-product/cmd/product_svc.go           |  1 +
 shopping-order/go-server-product/cmd/server.go     |  2 +
 tls/go-client/cmd/client.go                        |  4 +-
 tls/go-server/cmd/server.go                        |  4 +-
 tls/go-server/pkg/user.go                          |  2 +-
 tls/go-server/tests/integration/main_test.go       |  1 +
 tracing/dubbo/go-client/app/client.go              | 23 ++++-----
 tracing/dubbo/go-server/app/server.go              | 22 ++++----
 tracing/dubbo/go-server/app/user.go                |  9 ++--
 tracing/grpc/go-client/app/client.go               | 12 ++---
 tracing/grpc/go-client/app/hello.go                |  6 +--
 tracing/grpc/go-client/app/helloworld.pb.go        | 12 ++---
 tracing/grpc/go-server/app/helloworld.pb.go        | 12 ++---
 tracing/grpc/go-server/app/server.go               |  1 +
 tracing/jsonrpc/go-client/app/client.go            | 23 ++++-----
 tracing/jsonrpc/go-server/app/server.go            | 20 ++++----
 tracing/jsonrpc/go-server/app/user_provider.go     |  6 +--
 tracing/jsonrpc/go-server/app/user_provider1.go    |  5 +-
 tracing/jsonrpc/go-server/app/user_provider2.go    |  7 ++-
 version/go-client/cmd/client.go                    |  1 +
 version/go-server-v1/pkg/user.go                   |  1 +
 .../tests/integration/userprovider_test.go         |  1 -
 version/go-server-v2/pkg/user.go                   |  1 +
 .../tests/integration/userprovider_test.go         |  1 -
 187 files changed, 693 insertions(+), 614 deletions(-)

diff --git a/async/go-client/cmd/client.go b/async/go-client/cmd/client.go
index 62a80b2..1796bf9 100644
--- a/async/go-client/cmd/client.go
+++ b/async/go-client/cmd/client.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/async/go-client/pkg/user.go b/async/go-client/pkg/user.go
index 92239d6..a579dd2 100644
--- a/async/go-client/pkg/user.go
+++ b/async/go-client/pkg/user.go
@@ -26,6 +26,7 @@ import (
 	"github.com/apache/dubbo-go/common"
 	"github.com/apache/dubbo-go/protocol"
 	"github.com/apache/dubbo-go/remoting"
+
 	gxlog "github.com/dubbogo/gost/log"
 )
 
diff --git a/async/go-server/pkg/user.go b/async/go-server/pkg/user.go
index 7a3231a..b778495 100644
--- a/async/go-server/pkg/user.go
+++ b/async/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/async/go-server/tests/integration/main_test.go b/async/go-server/tests/integration/main_test.go
index cb20b83..7a6f920 100644
--- a/async/go-server/tests/integration/main_test.go
+++ b/async/go-server/tests/integration/main_test.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	"github.com/apache/dubbo-go/protocol"
 	"github.com/apache/dubbo-go/remoting"
+
 	gxlog "github.com/dubbogo/gost/log"
 )
 
diff --git a/async/go-server/tests/integration/userprovider_test.go b/async/go-server/tests/integration/userprovider_test.go
index fa08987..59e5495 100644
--- a/async/go-server/tests/integration/userprovider_test.go
+++ b/async/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
@@ -31,6 +32,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/attachment/go-client/cmd/client.go b/attachment/go-client/cmd/client.go
index 0654e5a..04ce85d 100644
--- a/attachment/go-client/cmd/client.go
+++ b/attachment/go-client/cmd/client.go
@@ -25,11 +25,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/attachment/go-client/pkg"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/constant"
@@ -39,6 +34,12 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/attachment/go-client/pkg"
 )
 
 var userProvider = new(pkg.UserProvider)
diff --git a/attachment/go-server/cmd/server.go b/attachment/go-server/cmd/server.go
index fa04640..378f189 100644
--- a/attachment/go-server/cmd/server.go
+++ b/attachment/go-server/cmd/server.go
@@ -27,10 +27,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/attachment/go-server/pkg"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -42,6 +38,10 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/attachment/go-server/pkg"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
diff --git a/attachment/go-server/pkg/user.go b/attachment/go-server/pkg/user.go
index 3ef5aa7..de1f24b 100644
--- a/attachment/go-server/pkg/user.go
+++ b/attachment/go-server/pkg/user.go
@@ -24,12 +24,10 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
 )
 
 func init() {
diff --git a/attachment/go-server/tests/integration/main_test.go b/attachment/go-server/tests/integration/main_test.go
index 10bc5ca..b4a5139 100644
--- a/attachment/go-server/tests/integration/main_test.go
+++ b/attachment/go-server/tests/integration/main_test.go
@@ -20,10 +20,14 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
+	"context"
+	"os"
+	"testing"
+	"time"
 )
 
 import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -35,13 +39,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/attachment/go-server/tests/integration/userprovider_test.go b/attachment/go-server/tests/integration/userprovider_test.go
index 5cc9943..a6fc679 100644
--- a/attachment/go-server/tests/integration/userprovider_test.go
+++ b/attachment/go-server/tests/integration/userprovider_test.go
@@ -24,8 +24,10 @@ import (
 	"testing"
 	"time"
 )
+
 import (
 	"github.com/apache/dubbo-go/common/constant"
+
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/chain/backend/cmd/server.go b/chain/backend/cmd/server.go
index aa9d7df..42544bc 100644
--- a/chain/backend/cmd/server.go
+++ b/chain/backend/cmd/server.go
@@ -26,10 +26,6 @@ import (
 )
 
 import (
-	_ "github.com/apache/dubbo-go-samples/chain/backend/pkg"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -42,6 +38,10 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
+import (
+	_ "github.com/apache/dubbo-go-samples/chain/backend/pkg"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
diff --git a/chain/backend/tests/integration/main_test.go b/chain/backend/tests/integration/main_test.go
index 55c2706..979ffb1 100644
--- a/chain/backend/tests/integration/main_test.go
+++ b/chain/backend/tests/integration/main_test.go
@@ -20,6 +20,12 @@
 package integration
 
 import (
+	"os"
+	"testing"
+	"time"
+)
+
+import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -31,12 +37,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"os"
-	"testing"
-	"time"
-)
-
 var cat = new(CatService)
 var dog = new(DogService)
 var tiger = new(TigerService)
diff --git a/chain/backend/tests/integration/services_test.go b/chain/backend/tests/integration/services_test.go
index 888ba24..c3d7529 100644
--- a/chain/backend/tests/integration/services_test.go
+++ b/chain/backend/tests/integration/services_test.go
@@ -22,6 +22,7 @@ package integration
 import (
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/chain/frontend/cmd/client.go b/chain/frontend/cmd/client.go
index e13ab55..e201571 100644
--- a/chain/frontend/cmd/client.go
+++ b/chain/frontend/cmd/client.go
@@ -23,10 +23,6 @@ import (
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/chain/frontend/pkg"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -38,6 +34,10 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/chain/frontend/pkg"
+)
+
 func main() {
 	var chinese = new(pkg.ChineseService)
 	var american = new(pkg.AmericanService)
diff --git a/chain/middle/cmd/server.go b/chain/middle/cmd/server.go
index 007c5a4..fe81ad2 100644
--- a/chain/middle/cmd/server.go
+++ b/chain/middle/cmd/server.go
@@ -26,10 +26,6 @@ import (
 )
 
 import (
-	_ "github.com/apache/dubbo-go-samples/chain/middle/pkg"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -42,6 +38,10 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
+import (
+	_ "github.com/apache/dubbo-go-samples/chain/middle/pkg"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
diff --git a/chain/middle/tests/integration/main_test.go b/chain/middle/tests/integration/main_test.go
index a45bb1a..f938433 100644
--- a/chain/middle/tests/integration/main_test.go
+++ b/chain/middle/tests/integration/main_test.go
@@ -20,6 +20,12 @@
 package integration
 
 import (
+	"os"
+	"testing"
+	"time"
+)
+
+import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -31,12 +37,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"os"
-	"testing"
-	"time"
-)
-
 var (
 	chinese  = new(ChineseService)
 	american = new(AmericanService)
diff --git a/chain/middle/tests/integration/services_test.go b/chain/middle/tests/integration/services_test.go
index d1c9f97..5b39ea6 100644
--- a/chain/middle/tests/integration/services_test.go
+++ b/chain/middle/tests/integration/services_test.go
@@ -20,11 +20,11 @@
 package integration
 
 import (
-	"github.com/stretchr/testify/assert"
+	"testing"
 )
 
 import (
-	"testing"
+	"github.com/stretchr/testify/assert"
 )
 
 func TestChinese(t *testing.T) {
diff --git a/config-api/go-client/cmd/client.go b/config-api/go-client/cmd/client.go
index 1427407..833071d 100644
--- a/config-api/go-client/cmd/client.go
+++ b/config-api/go-client/cmd/client.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/config-api/go-server/pkg/user.go b/config-api/go-server/pkg/user.go
index 7a3231a..b778495 100644
--- a/config-api/go-server/pkg/user.go
+++ b/config-api/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/config-api/go-server/tests/integration/main_test.go b/config-api/go-server/tests/integration/main_test.go
index f79029c..b4a5139 100644
--- a/config-api/go-server/tests/integration/main_test.go
+++ b/config-api/go-server/tests/integration/main_test.go
@@ -39,8 +39,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/config-api/go-server/tests/integration/userprovider_test.go b/config-api/go-server/tests/integration/userprovider_test.go
index dc29d9a..7183e64 100644
--- a/config-api/go-server/tests/integration/userprovider_test.go
+++ b/config-api/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/configcenter/apollo/go-client/cmd/client.go b/configcenter/apollo/go-client/cmd/client.go
index 77c760a..fa6b74f 100644
--- a/configcenter/apollo/go-client/cmd/client.go
+++ b/configcenter/apollo/go-client/cmd/client.go
@@ -34,6 +34,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/configcenter/apollo/go-server/cmd/server.go b/configcenter/apollo/go-server/cmd/server.go
index 065abfa..919cc26 100644
--- a/configcenter/apollo/go-server/cmd/server.go
+++ b/configcenter/apollo/go-server/cmd/server.go
@@ -27,7 +27,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -38,7 +37,6 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
-
 )
 
 import (
diff --git a/configcenter/apollo/go-server/pkg/user.go b/configcenter/apollo/go-server/pkg/user.go
index 7a3231a..b778495 100644
--- a/configcenter/apollo/go-server/pkg/user.go
+++ b/configcenter/apollo/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/configcenter/nacos/go-client/cmd/client.go b/configcenter/nacos/go-client/cmd/client.go
index bc2c501..ff0bf9b 100644
--- a/configcenter/nacos/go-client/cmd/client.go
+++ b/configcenter/nacos/go-client/cmd/client.go
@@ -34,6 +34,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/configcenter/nacos/go-server/pkg/user.go b/configcenter/nacos/go-server/pkg/user.go
index 7a3231a..b778495 100644
--- a/configcenter/nacos/go-server/pkg/user.go
+++ b/configcenter/nacos/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/configcenter/zookeeper/go-client/cmd/client.go b/configcenter/zookeeper/go-client/cmd/client.go
index 45b619d..1008ff0 100644
--- a/configcenter/zookeeper/go-client/cmd/client.go
+++ b/configcenter/zookeeper/go-client/cmd/client.go
@@ -34,6 +34,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/configcenter/zookeeper/go-server/pkg/user.go b/configcenter/zookeeper/go-server/pkg/user.go
index 7a3231a..b778495 100644
--- a/configcenter/zookeeper/go-server/pkg/user.go
+++ b/configcenter/zookeeper/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/context/go-client/cmd/client.go b/context/go-client/cmd/client.go
index 484c1da..9579d4f 100644
--- a/context/go-client/cmd/client.go
+++ b/context/go-client/cmd/client.go
@@ -34,6 +34,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/context/go-server/pkg/user.go b/context/go-server/pkg/user.go
index b943959..81b5225 100644
--- a/context/go-server/pkg/user.go
+++ b/context/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/context/go-server/tests/integration/userprovider_test.go b/context/go-server/tests/integration/userprovider_test.go
index 2618866..21cacc1 100644
--- a/context/go-server/tests/integration/userprovider_test.go
+++ b/context/go-server/tests/integration/userprovider_test.go
@@ -23,8 +23,10 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/apache/dubbo-go/common/constant"
+
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/direct/go-client/cmd/client.go b/direct/go-client/cmd/client.go
index 13f587d..4b943ac 100644
--- a/direct/go-client/cmd/client.go
+++ b/direct/go-client/cmd/client.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/direct/go-server/pkg/user.go b/direct/go-server/pkg/user.go
index 7a3231a..b778495 100644
--- a/direct/go-server/pkg/user.go
+++ b/direct/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/direct/go-server/tests/integration/userprovider_test.go b/direct/go-server/tests/integration/userprovider_test.go
index 9dc1252..7183e64 100644
--- a/direct/go-server/tests/integration/userprovider_test.go
+++ b/direct/go-server/tests/integration/userprovider_test.go
@@ -23,12 +23,11 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
 
-// in order to make sure direct-invoking is enabled, check if references -> UserProvider -> url is specified
-// in conf/client.yaml
 func TestGetUser(t *testing.T) {
 	user := &User{}
 	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
diff --git a/docker/go-client/cmd/client.go b/docker/go-client/cmd/client.go
index 6ca8d95..6bcac75 100644
--- a/docker/go-client/cmd/client.go
+++ b/docker/go-client/cmd/client.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/docker/go-server/pkg/user.go b/docker/go-server/pkg/user.go
index 7a3231a..b778495 100644
--- a/docker/go-server/pkg/user.go
+++ b/docker/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/filter/custom/go-client/cmd/client.go b/filter/custom/go-client/cmd/client.go
index b14fd53..15c301c 100644
--- a/filter/custom/go-client/cmd/client.go
+++ b/filter/custom/go-client/cmd/client.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/filter/custom/go-server/pkg/custom_filter.go b/filter/custom/go-server/pkg/custom_filter.go
index 7018180..1c8c7da 100644
--- a/filter/custom/go-server/pkg/custom_filter.go
+++ b/filter/custom/go-server/pkg/custom_filter.go
@@ -27,6 +27,7 @@ import (
 	"github.com/apache/dubbo-go/common/extension"
 	"github.com/apache/dubbo-go/filter"
 	"github.com/apache/dubbo-go/protocol"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/filter/custom/go-server/pkg/user.go b/filter/custom/go-server/pkg/user.go
index 7a3231a..b778495 100644
--- a/filter/custom/go-server/pkg/user.go
+++ b/filter/custom/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/filter/custom/go-server/tests/integration/userprovider_test.go b/filter/custom/go-server/tests/integration/userprovider_test.go
index beefe1b..4618a83 100644
--- a/filter/custom/go-server/tests/integration/userprovider_test.go
+++ b/filter/custom/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/filter/sentinel/go-client/cmd/client.go b/filter/sentinel/go-client/cmd/client.go
index 2a506c9..b24f7be 100644
--- a/filter/sentinel/go-client/cmd/client.go
+++ b/filter/sentinel/go-client/cmd/client.go
@@ -26,6 +26,7 @@ import (
 	"github.com/alibaba/sentinel-golang/api"
 	sentinelConf "github.com/alibaba/sentinel-golang/core/config"
 	"github.com/alibaba/sentinel-golang/core/flow"
+
 	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
@@ -35,6 +36,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/filter/sentinel/go-server/cmd/server.go b/filter/sentinel/go-server/cmd/server.go
index 20b32b9..bf297b2 100644
--- a/filter/sentinel/go-server/cmd/server.go
+++ b/filter/sentinel/go-server/cmd/server.go
@@ -29,6 +29,7 @@ import (
 	"github.com/alibaba/sentinel-golang/api"
 	sentinelConf "github.com/alibaba/sentinel-golang/core/config"
 	"github.com/alibaba/sentinel-golang/core/flow"
+
 	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
diff --git a/filter/sentinel/go-server/pkg/user.go b/filter/sentinel/go-server/pkg/user.go
index 7a3231a..b778495 100644
--- a/filter/sentinel/go-server/pkg/user.go
+++ b/filter/sentinel/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/filter/sentinel/go-server/tests/integration/userprovider_test.go b/filter/sentinel/go-server/tests/integration/userprovider_test.go
index d6a5ecc..397f3ab 100644
--- a/filter/sentinel/go-server/tests/integration/userprovider_test.go
+++ b/filter/sentinel/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/filter/tpslimit/go-server/pkg/limit_strategy.go b/filter/tpslimit/go-server/pkg/limit_strategy.go
index 161e62d..f64a049 100644
--- a/filter/tpslimit/go-server/pkg/limit_strategy.go
+++ b/filter/tpslimit/go-server/pkg/limit_strategy.go
@@ -24,6 +24,7 @@ import (
 import (
 	"github.com/apache/dubbo-go/common/extension"
 	"github.com/apache/dubbo-go/filter"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/filter/tpslimit/go-server/pkg/user.go b/filter/tpslimit/go-server/pkg/user.go
index 7a3231a..b778495 100644
--- a/filter/tpslimit/go-server/pkg/user.go
+++ b/filter/tpslimit/go-server/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/game/go-server-game/cmd/server.go b/game/go-server-game/cmd/server.go
index dbb9f28..16e42d8 100644
--- a/game/go-server-game/cmd/server.go
+++ b/game/go-server-game/cmd/server.go
@@ -1,29 +1,29 @@
 package main
 
 import (
-    "os"
-    "os/signal"
-    "syscall"
-    "time"
-
-    "github.com/apache/dubbo-go/common/logger"
-    "github.com/apache/dubbo-go/config"
-    hessian "github.com/apache/dubbo-go-hessian2"
-
-    _ "github.com/apache/dubbo-go/protocol/dubbo"
-    _ "github.com/apache/dubbo-go/registry/protocol"
-
-    _ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-    _ "github.com/apache/dubbo-go/filter/filter_impl"
+	"os"
+	"os/signal"
+	"syscall"
+	"time"
+)
 
-    _ "github.com/apache/dubbo-go/cluster/cluster_impl"
-    _ "github.com/apache/dubbo-go/cluster/loadbalance"
-    // _ "github.com/apache/dubbo-go/metadata/service/remote"
-    _ "github.com/apache/dubbo-go/metadata/service/inmemory"
-    _ "github.com/apache/dubbo-go/registry/zookeeper"
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
+	"github.com/apache/dubbo-go/common/logger"
+	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
+	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
+	_ "github.com/apache/dubbo-go/protocol/dubbo"
+	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
+)
 
-    "github.com/apache/dubbo-go-samples/game/go-server-game/pkg"
-    "github.com/apache/dubbo-go-samples/game/pkg/pojo"
+import (
+	"github.com/apache/dubbo-go-samples/game/go-server-game/pkg"
+	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
 func init() {
diff --git a/game/go-server-game/pkg/consumer.go b/game/go-server-game/pkg/consumer.go
index dc3c045..c879fae 100644
--- a/game/go-server-game/pkg/consumer.go
+++ b/game/go-server-game/pkg/consumer.go
@@ -1,5 +1,7 @@
 package pkg
 
-import "github.com/apache/dubbo-go-samples/game/pkg/consumer/gate"
+import (
+	"github.com/apache/dubbo-go-samples/game/pkg/consumer/gate"
+)
 
-var GateBasketball = new(gate.BasketballService)
\ No newline at end of file
+var GateBasketball = new(gate.BasketballService)
diff --git a/game/go-server-game/pkg/provider.go b/game/go-server-game/pkg/provider.go
index 7892000..7b7c246 100644
--- a/game/go-server-game/pkg/provider.go
+++ b/game/go-server-game/pkg/provider.go
@@ -1,13 +1,17 @@
 package pkg
 
 import (
-    "context"
-    "fmt"
-    "strconv"
+	"context"
+	"fmt"
+	"strconv"
+)
 
-    "github.com/apache/dubbo-go/common/logger"
+import (
+	"github.com/apache/dubbo-go/common/logger"
+)
 
-    "github.com/apache/dubbo-go-samples/game/pkg/pojo"
+import (
+	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
 type BasketballService struct{}
@@ -103,4 +107,4 @@ func (p *BasketballService) Rank (ctx context.Context, uid string) (*pojo.Result
 
 func (p *BasketballService) Reference() string {
     return "gameProvider.basketballService"
-}
\ No newline at end of file
+}
diff --git a/game/go-server-game/tests/integration/gameprovider_test.go b/game/go-server-game/tests/integration/gameprovider_test.go
index 02dcf4a..6240102 100755
--- a/game/go-server-game/tests/integration/gameprovider_test.go
+++ b/game/go-server-game/tests/integration/gameprovider_test.go
@@ -1,10 +1,12 @@
 package integration
 
 import (
-    "context"
-    "testing"
+	"context"
+	"testing"
+)
 
-    "github.com/stretchr/testify/assert"
+import (
+	"github.com/stretchr/testify/assert"
 )
 
 func TestLogin(t *testing.T) {
@@ -29,4 +31,4 @@ func TestRank(t *testing.T) {
     assert.Nil(t, err)
     assert.NotNil(t, res)
     assert.Equal(t, int32(0), res.Code)
-}
\ No newline at end of file
+}
diff --git a/game/go-server-game/tests/integration/main_test.go b/game/go-server-game/tests/integration/main_test.go
index e04d87a..9459f1a 100644
--- a/game/go-server-game/tests/integration/main_test.go
+++ b/game/go-server-game/tests/integration/main_test.go
@@ -1,27 +1,27 @@
 package integration
 
 import (
-    "os"
-    "testing"
-    "time"
-
-    hessian "github.com/apache/dubbo-go-hessian2"
-    "github.com/apache/dubbo-go/config"
-
-    _ "github.com/apache/dubbo-go/protocol/dubbo"
-    _ "github.com/apache/dubbo-go/registry/protocol"
-
-    _ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-    _ "github.com/apache/dubbo-go/filter/filter_impl"
+	"os"
+	"testing"
+	"time"
+)
 
-    _ "github.com/apache/dubbo-go/cluster/cluster_impl"
-    _ "github.com/apache/dubbo-go/cluster/loadbalance"
-    // _ "github.com/apache/dubbo-go/metadata/service/remote"
-    _ "github.com/apache/dubbo-go/metadata/service/inmemory"
-    _ "github.com/apache/dubbo-go/registry/zookeeper"
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
+	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
+	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
+	_ "github.com/apache/dubbo-go/protocol/dubbo"
+	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
+)
 
-    "github.com/apache/dubbo-go-samples/game/pkg/consumer/game"
-    "github.com/apache/dubbo-go-samples/game/pkg/pojo"
+import (
+	"github.com/apache/dubbo-go-samples/game/pkg/consumer/game"
+	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
 var gameProvider = new(game.BasketballService)
@@ -34,4 +34,4 @@ func TestMain(m *testing.M) {
     time.Sleep(3 * time.Second)
 
     os.Exit(m.Run())
-}
\ No newline at end of file
+}
diff --git a/game/go-server-gate/cmd/server.go b/game/go-server-gate/cmd/server.go
index b16297b..bde9993 100755
--- a/game/go-server-gate/cmd/server.go
+++ b/game/go-server-gate/cmd/server.go
@@ -1,34 +1,34 @@
 package main
 
 import (
-    "context"
-    "encoding/json"
-    "io/ioutil"
-    "net/http"
-    "os"
-    "os/signal"
-    "strconv"
-    "syscall"
-    "time"
-
-    hessian "github.com/apache/dubbo-go-hessian2"
-    "github.com/apache/dubbo-go/common/logger"
-    "github.com/apache/dubbo-go/config"
-
-    _ "github.com/apache/dubbo-go/protocol/dubbo"
-    _ "github.com/apache/dubbo-go/registry/protocol"
-
-    _ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-    _ "github.com/apache/dubbo-go/filter/filter_impl"
-
-    _ "github.com/apache/dubbo-go/cluster/cluster_impl"
-    _ "github.com/apache/dubbo-go/cluster/loadbalance"
-    // _ "github.com/apache/dubbo-go/metadata/service/remote"
-    _ "github.com/apache/dubbo-go/metadata/service/inmemory"
-    _ "github.com/apache/dubbo-go/registry/zookeeper"
-
-    "github.com/apache/dubbo-go-samples/game/go-server-gate/pkg"
-    "github.com/apache/dubbo-go-samples/game/pkg/pojo"
+	"context"
+	"encoding/json"
+	"io/ioutil"
+	"net/http"
+	"os"
+	"os/signal"
+	"strconv"
+	"syscall"
+	"time"
+)
+
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
+	"github.com/apache/dubbo-go/common/logger"
+	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
+	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
+	_ "github.com/apache/dubbo-go/protocol/dubbo"
+	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/game/go-server-gate/pkg"
+	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
 func init() {
@@ -136,4 +136,4 @@ func responseWithOrigin(w http.ResponseWriter, r *http.Request, code int, json [
     w.Header().Set("Content-Type", "application/json; charset=utf-8")
     w.WriteHeader(code)
     w.Write(json)
-}
\ No newline at end of file
+}
diff --git a/game/go-server-gate/pkg/consumer.go b/game/go-server-gate/pkg/consumer.go
index 74bd910..fedca07 100644
--- a/game/go-server-gate/pkg/consumer.go
+++ b/game/go-server-gate/pkg/consumer.go
@@ -1,9 +1,12 @@
 package pkg
 
 import (
-    "context"
-    "github.com/apache/dubbo-go-samples/game/pkg/consumer/game"
-    "github.com/apache/dubbo-go-samples/game/pkg/pojo"
+	"context"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/game/pkg/consumer/game"
+	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
 var GameBasketball = new(game.BasketballService)
diff --git a/game/go-server-gate/pkg/provider.go b/game/go-server-gate/pkg/provider.go
index e47ed65..89d99d7 100644
--- a/game/go-server-gate/pkg/provider.go
+++ b/game/go-server-gate/pkg/provider.go
@@ -1,10 +1,15 @@
 package pkg
 
 import (
-    "context"
-    "github.com/apache/dubbo-go/common/logger"
+	"context"
+)
 
-    "github.com/apache/dubbo-go-samples/game/pkg/pojo"
+import (
+	"github.com/apache/dubbo-go/common/logger"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
 type BasketballService struct{}
diff --git a/game/go-server-gate/tests/integration/gateprovider_test.go b/game/go-server-gate/tests/integration/gateprovider_test.go
index ebb7ea2..c8b0c96 100644
--- a/game/go-server-gate/tests/integration/gateprovider_test.go
+++ b/game/go-server-gate/tests/integration/gateprovider_test.go
@@ -1,10 +1,12 @@
 package integration
 
 import (
-    "context"
-    "testing"
+	"context"
+	"testing"
+)
 
-    "github.com/stretchr/testify/assert"
+import (
+	"github.com/stretchr/testify/assert"
 )
 
 func TestSend(t *testing.T) {
@@ -15,4 +17,4 @@ func TestSend(t *testing.T) {
     assert.NotNil(t, res.Data)
     assert.Equal(t, "A001", res.Data["to"])
     assert.Equal(t, "hello", res.Data["message"])
-}
\ No newline at end of file
+}
diff --git a/game/go-server-gate/tests/integration/main_test.go b/game/go-server-gate/tests/integration/main_test.go
index 41bf36b..88bf8d3 100644
--- a/game/go-server-gate/tests/integration/main_test.go
+++ b/game/go-server-gate/tests/integration/main_test.go
@@ -1,27 +1,27 @@
 package integration
 
 import (
-    "os"
-    "testing"
-    "time"
-
-    hessian "github.com/apache/dubbo-go-hessian2"
-    "github.com/apache/dubbo-go/config"
-
-    _ "github.com/apache/dubbo-go/protocol/dubbo"
-    _ "github.com/apache/dubbo-go/registry/protocol"
-
-    _ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-    _ "github.com/apache/dubbo-go/filter/filter_impl"
+	"os"
+	"testing"
+	"time"
+)
 
-    _ "github.com/apache/dubbo-go/cluster/cluster_impl"
-    _ "github.com/apache/dubbo-go/cluster/loadbalance"
-    // _ "github.com/apache/dubbo-go/metadata/service/remote"
-    _ "github.com/apache/dubbo-go/metadata/service/inmemory"
-    _ "github.com/apache/dubbo-go/registry/zookeeper"
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
+	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
+	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
+	_ "github.com/apache/dubbo-go/protocol/dubbo"
+	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
+)
 
-    "github.com/apache/dubbo-go-samples/game/pkg/consumer/gate"
-    "github.com/apache/dubbo-go-samples/game/pkg/pojo"
+import (
+	"github.com/apache/dubbo-go-samples/game/pkg/consumer/gate"
+	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
 var gateProvider = new(gate.BasketballService)
@@ -34,4 +34,4 @@ func TestMain(m *testing.M) {
     time.Sleep(3 * time.Second)
 
     os.Exit(m.Run())
-}
\ No newline at end of file
+}
diff --git a/game/pkg/consumer/game/basketball.go b/game/pkg/consumer/game/basketball.go
index 20dc0b6..36a343e 100644
--- a/game/pkg/consumer/game/basketball.go
+++ b/game/pkg/consumer/game/basketball.go
@@ -1,8 +1,11 @@
 package game
 
 import (
-    "context"
-    "github.com/apache/dubbo-go-samples/game/pkg/pojo"
+	"context"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
 type BasketballService struct {
diff --git a/game/pkg/consumer/gate/basketball.go b/game/pkg/consumer/gate/basketball.go
index 74833d3..9d656d7 100644
--- a/game/pkg/consumer/gate/basketball.go
+++ b/game/pkg/consumer/gate/basketball.go
@@ -1,8 +1,11 @@
 package gate
 
 import (
-    "context"
-    "github.com/apache/dubbo-go-samples/game/pkg/pojo"
+	"context"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/game/pkg/pojo"
 )
 
 type BasketballService struct {
diff --git a/game/pkg/pojo/info.go b/game/pkg/pojo/info.go
index 59d47dc..6125b5a 100644
--- a/game/pkg/pojo/info.go
+++ b/game/pkg/pojo/info.go
@@ -7,4 +7,4 @@ type Info struct {
 
 func (m Info) JavaClassName() string {
 	return "org.apache.dubbo.pojo.Info"
-}
\ No newline at end of file
+}
diff --git a/general/dubbo/go-client/cmd/client.go b/general/dubbo/go-client/cmd/client.go
index 1b89fc6..9df1d28 100644
--- a/general/dubbo/go-client/cmd/client.go
+++ b/general/dubbo/go-client/cmd/client.go
@@ -24,19 +24,20 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/general/dubbo/go-client/pkg"
-	"github.com/apache/dubbo-go/config"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/general/dubbo/go-client/pkg"
 )
 
 var (
diff --git a/general/dubbo/go-server/cmd/server.go b/general/dubbo/go-server/cmd/server.go
index 97e5477..af84144 100644
--- a/general/dubbo/go-server/cmd/server.go
+++ b/general/dubbo/go-server/cmd/server.go
@@ -27,26 +27,26 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/general/dubbo/go-server/pkg"
-
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
-
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
+	_ "github.com/apache/dubbo-go/protocol/dubbo"
+	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/general/dubbo/go-server/pkg"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
diff --git a/general/dubbo/go-server/pkg/user_provider.go b/general/dubbo/go-server/pkg/user_provider.go
index 6ccb0f1..38cb8c9 100644
--- a/general/dubbo/go-server/pkg/user_provider.go
+++ b/general/dubbo/go-server/pkg/user_provider.go
@@ -25,13 +25,12 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/dubbogo/gost/log"
-	perrors "github.com/pkg/errors"
-)
-
-import (
 	"github.com/apache/dubbo-go-hessian2/java_exception"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
+
+	perrors "github.com/pkg/errors"
 )
 
 func init() {
diff --git a/general/dubbo/go-server/tests/integration/main_test.go b/general/dubbo/go-server/tests/integration/main_test.go
index eaad5f4..52f360a 100644
--- a/general/dubbo/go-server/tests/integration/main_test.go
+++ b/general/dubbo/go-server/tests/integration/main_test.go
@@ -20,12 +20,20 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
+	"context"
+	"fmt"
+	"os"
+	"strconv"
+	"testing"
+	"time"
+)
 
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
@@ -33,15 +41,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"context"
-	"fmt"
-	"os"
-	"strconv"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/general/dubbo/go-server/tests/integration/userprovider_test.go b/general/dubbo/go-server/tests/integration/userprovider_test.go
index 70e7617..988e1cd 100644
--- a/general/dubbo/go-server/tests/integration/userprovider_test.go
+++ b/general/dubbo/go-server/tests/integration/userprovider_test.go
@@ -21,14 +21,19 @@ package integration
 
 import (
 	"context"
-	"github.com/apache/dubbo-go-hessian2/java_exception"
-	"github.com/apache/dubbo-go-samples/general/dubbo/go-server/pkg"
 	"testing"
 )
+
 import (
+	"github.com/apache/dubbo-go-hessian2/java_exception"
+
 	"github.com/stretchr/testify/assert"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/general/dubbo/go-server/pkg"
+)
+
 func TestGetUserA000(t *testing.T) {
 	user := &User{}
 	err := userProvider.GetUser(context.TODO(), []interface{}{"A000"}, user)
diff --git a/general/grpc/go-client/cmd/client.go b/general/grpc/go-client/cmd/client.go
index a22f23a..68917e8 100644
--- a/general/grpc/go-client/cmd/client.go
+++ b/general/grpc/go-client/cmd/client.go
@@ -19,9 +19,6 @@ package main
 
 import (
 	"context"
-	"github.com/apache/dubbo-go-samples/general/grpc/go-client/pkg"
-	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
-	"github.com/dubbogo/gost/log"
 	"time"
 )
 
@@ -35,6 +32,13 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/grpc"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/general/grpc/go-client/pkg"
+	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
 )
 
 var grpcGreeterImpl = new(pkg.GrpcGreeterImpl)
diff --git a/general/grpc/go-client/pkg/hello.go b/general/grpc/go-client/pkg/hello.go
index d133e1f..645b709 100644
--- a/general/grpc/go-client/pkg/hello.go
+++ b/general/grpc/go-client/pkg/hello.go
@@ -19,10 +19,16 @@ package pkg
 
 import (
 	"context"
-	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
+)
+
+import (
 	"google.golang.org/grpc"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
+)
+
 type GrpcGreeterImpl struct {
 	SayHello func(ctx context.Context, in *protobuf.HelloRequest, out *protobuf.HelloReply) error
 }
diff --git a/general/grpc/go-server/cmd/server.go b/general/grpc/go-server/cmd/server.go
index b4d9875..feaf763 100644
--- a/general/grpc/go-server/cmd/server.go
+++ b/general/grpc/go-server/cmd/server.go
@@ -19,7 +19,6 @@ package main
 
 import (
 	"fmt"
-	"github.com/apache/dubbo-go-samples/general/grpc/go-server/pkg"
 	"os"
 	"os/signal"
 	"syscall"
@@ -38,6 +37,10 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/general/grpc/go-server/pkg"
+)
+
 var (
 	survivalTimeout = int(3 * time.Second)
 )
diff --git a/general/grpc/go-server/pkg/greeter.go b/general/grpc/go-server/pkg/greeter.go
index 7f26eb0..623341e 100644
--- a/general/grpc/go-server/pkg/greeter.go
+++ b/general/grpc/go-server/pkg/greeter.go
@@ -20,6 +20,9 @@ package pkg
 import (
 	"context"
 	"fmt"
+)
+
+import (
 	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
 )
 
diff --git a/general/grpc/go-server/tests/integration/greeter_test.go b/general/grpc/go-server/tests/integration/greeter_test.go
index 23c30d5..f49e5a1 100644
--- a/general/grpc/go-server/tests/integration/greeter_test.go
+++ b/general/grpc/go-server/tests/integration/greeter_test.go
@@ -21,11 +21,17 @@ package integration
 
 import (
 	"context"
-	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
-	"github.com/stretchr/testify/assert"
 	"testing"
 )
 
+import (
+	"github.com/stretchr/testify/assert"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
+)
+
 func TestGreeter(t *testing.T) {
 	reply := &protobuf.HelloReply{}
 	req := &protobuf.HelloRequest{
diff --git a/general/grpc/go-server/tests/integration/main_test.go b/general/grpc/go-server/tests/integration/main_test.go
index 909161a..3012eeb 100644
--- a/general/grpc/go-server/tests/integration/main_test.go
+++ b/general/grpc/go-server/tests/integration/main_test.go
@@ -21,9 +21,12 @@ package integration
 
 import (
 	"context"
-	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
-	"google.golang.org/grpc"
+	"os"
+	"testing"
+	"time"
+)
 
+import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -33,12 +36,12 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/grpc"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"google.golang.org/grpc"
 )
 
 import (
-	"os"
-	"testing"
-	"time"
+	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
 )
 
 var grpcGreeterImpl = new(GrpcGreeterImpl)
diff --git a/general/grpc/protobuf/helloworld.pb.go b/general/grpc/protobuf/helloworld.pb.go
index fe0c3c8..4121836 100644
--- a/general/grpc/protobuf/helloworld.pb.go
+++ b/general/grpc/protobuf/helloworld.pb.go
@@ -6,10 +6,6 @@ package protobuf
 import (
 	context "context"
 	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
 	math "math"
 )
 
@@ -17,9 +13,14 @@ import (
 	"github.com/apache/dubbo-go/protocol"
 	dgrpc "github.com/apache/dubbo-go/protocol/grpc"
 	"github.com/apache/dubbo-go/protocol/invocation"
+
+	proto "github.com/golang/protobuf/proto"
+
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
diff --git a/general/grpc/stream/go-client/app/client.go b/general/grpc/stream/go-client/app/client.go
index b2431b9..9762c31 100644
--- a/general/grpc/stream/go-client/app/client.go
+++ b/general/grpc/stream/go-client/app/client.go
@@ -28,7 +28,6 @@ import (
 
 import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	gxlog "github.com/dubbogo/gost/log"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -38,6 +37,8 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/grpc"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	gxlog "github.com/dubbogo/gost/log"
 )
 
 var (
diff --git a/general/grpc/stream/go-client/app/hello.go b/general/grpc/stream/go-client/app/hello.go
index 1066565..5b1648a 100644
--- a/general/grpc/stream/go-client/app/hello.go
+++ b/general/grpc/stream/go-client/app/hello.go
@@ -22,11 +22,9 @@ import (
 )
 
 import (
-	"google.golang.org/grpc"
-)
-
-import (
 	"github.com/apache/dubbo-go/config"
+
+	"google.golang.org/grpc"
 )
 
 var grpcGreeterImpl = new(GrpcGreeterImpl)
diff --git a/general/grpc/stream/go-client/app/helloworld.pb.go b/general/grpc/stream/go-client/app/helloworld.pb.go
index 2183a4f..957566e 100644
--- a/general/grpc/stream/go-client/app/helloworld.pb.go
+++ b/general/grpc/stream/go-client/app/helloworld.pb.go
@@ -6,10 +6,6 @@ package main
 import (
 	context "context"
 	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
 	math "math"
 )
 
@@ -17,9 +13,14 @@ import (
 	"github.com/apache/dubbo-go/protocol"
 	dgrpc "github.com/apache/dubbo-go/protocol/grpc"
 	"github.com/apache/dubbo-go/protocol/invocation"
+
+	proto "github.com/golang/protobuf/proto"
+
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
diff --git a/general/grpc/stream/go-server/app/helloworld.pb.go b/general/grpc/stream/go-server/app/helloworld.pb.go
index 2183a4f..957566e 100644
--- a/general/grpc/stream/go-server/app/helloworld.pb.go
+++ b/general/grpc/stream/go-server/app/helloworld.pb.go
@@ -6,10 +6,6 @@ package main
 import (
 	context "context"
 	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
 	math "math"
 )
 
@@ -17,9 +13,14 @@ import (
 	"github.com/apache/dubbo-go/protocol"
 	dgrpc "github.com/apache/dubbo-go/protocol/grpc"
 	"github.com/apache/dubbo-go/protocol/invocation"
+
+	proto "github.com/golang/protobuf/proto"
+
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
diff --git a/general/grpc/unary/go-client/app/client.go b/general/grpc/unary/go-client/app/client.go
index f39b32f..a5621fa 100644
--- a/general/grpc/unary/go-client/app/client.go
+++ b/general/grpc/unary/go-client/app/client.go
@@ -31,6 +31,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/grpc"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	gxlog "github.com/dubbogo/gost/log"
 )
 
diff --git a/general/grpc/unary/go-client/app/helloworld.pb.go b/general/grpc/unary/go-client/app/helloworld.pb.go
index 75e18b9..3b5a1dd 100644
--- a/general/grpc/unary/go-client/app/helloworld.pb.go
+++ b/general/grpc/unary/go-client/app/helloworld.pb.go
@@ -7,20 +7,20 @@ import (
 	"context"
 	"fmt"
 	"math"
-
-	"github.com/golang/protobuf/proto"
-	"google.golang.org/grpc"
-	"google.golang.org/grpc/codes"
-	"google.golang.org/grpc/status"
 )
 
 import (
 	"github.com/apache/dubbo-go/protocol"
 	dgrpc "github.com/apache/dubbo-go/protocol/grpc"
 	"github.com/apache/dubbo-go/protocol/invocation"
+
+	"github.com/golang/protobuf/proto"
+
+	"google.golang.org/grpc"
+	"google.golang.org/grpc/codes"
+	"google.golang.org/grpc/status"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
diff --git a/general/grpc/unary/go-server/app/helloworld.pb.go b/general/grpc/unary/go-server/app/helloworld.pb.go
index 3f17426..a653d36 100644
--- a/general/grpc/unary/go-server/app/helloworld.pb.go
+++ b/general/grpc/unary/go-server/app/helloworld.pb.go
@@ -6,10 +6,6 @@ package main
 import (
 	context "context"
 	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
 	math "math"
 )
 
@@ -17,9 +13,14 @@ import (
 	"github.com/apache/dubbo-go/protocol"
 	dgrpc "github.com/apache/dubbo-go/protocol/grpc"
 	"github.com/apache/dubbo-go/protocol/invocation"
+
+	proto "github.com/golang/protobuf/proto"
+
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
diff --git a/general/jsonrpc/go-client/app/client.go b/general/jsonrpc/go-client/app/client.go
index aa857df..24066b5 100644
--- a/general/jsonrpc/go-client/app/client.go
+++ b/general/jsonrpc/go-client/app/client.go
@@ -27,21 +27,17 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-)
-
-import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/jsonrpc"
 	_ "github.com/apache/dubbo-go/registry/protocol"
-
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
 )
 
 var (
diff --git a/general/jsonrpc/go-server/app/server.go b/general/jsonrpc/go-server/app/server.go
index 3ad3d4e..1f0dfe9 100644
--- a/general/jsonrpc/go-server/app/server.go
+++ b/general/jsonrpc/go-server/app/server.go
@@ -26,16 +26,14 @@ import (
 )
 
 import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/jsonrpc"
 	_ "github.com/apache/dubbo-go/registry/protocol"
-
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
diff --git a/general/jsonrpc/go-server/app/user_provider.go b/general/jsonrpc/go-server/app/user_provider.go
index 3700daa..8957c7a 100644
--- a/general/jsonrpc/go-server/app/user_provider.go
+++ b/general/jsonrpc/go-server/app/user_provider.go
@@ -7,11 +7,10 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
-)
 
-import (
-	"github.com/apache/dubbo-go/config"
 	perrors "github.com/pkg/errors"
 )
 
diff --git a/general/jsonrpc/go-server/app/user_provider1.go b/general/jsonrpc/go-server/app/user_provider1.go
index 4b7af5a..8007234 100644
--- a/general/jsonrpc/go-server/app/user_provider1.go
+++ b/general/jsonrpc/go-server/app/user_provider1.go
@@ -7,11 +7,10 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
-)
 
-import (
-	"github.com/apache/dubbo-go/config"
 	perrors "github.com/pkg/errors"
 )
 
diff --git a/general/jsonrpc/go-server/app/user_provider2.go b/general/jsonrpc/go-server/app/user_provider2.go
index 752eb8b..1726574 100644
--- a/general/jsonrpc/go-server/app/user_provider2.go
+++ b/general/jsonrpc/go-server/app/user_provider2.go
@@ -7,11 +7,10 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
-)
 
-import (
-	"github.com/apache/dubbo-go/config"
 	perrors "github.com/pkg/errors"
 )
 
diff --git a/general/rest/go-client/cmd/client.go b/general/rest/go-client/cmd/client.go
index 13148a7..d2f123c 100644
--- a/general/rest/go-client/cmd/client.go
+++ b/general/rest/go-client/cmd/client.go
@@ -27,18 +27,17 @@ import (
 )
 
 import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/rest"
 	_ "github.com/apache/dubbo-go/registry/protocol"
-	"github.com/dubbogo/gost/log"
-
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
-
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
 )
 
 import (
diff --git a/general/rest/go-server/cmd/server.go b/general/rest/go-server/cmd/server.go
index 469fbb2..1fb66fe 100644
--- a/general/rest/go-server/cmd/server.go
+++ b/general/rest/go-server/cmd/server.go
@@ -26,21 +26,21 @@ import (
 )
 
 import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	_ "github.com/apache/dubbo-go/protocol/rest"
 	"github.com/apache/dubbo-go/protocol/rest/server/server_impl"
 	_ "github.com/apache/dubbo-go/registry/protocol"
-	"github.com/dubbogo/gost/log"
-	"github.com/emicklei/go-restful/v3"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
 
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
+	"github.com/dubbogo/gost/log"
 
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
+	"github.com/emicklei/go-restful/v3"
 )
 
 import (
diff --git a/general/rest/go-server/pkg/user_provider.go b/general/rest/go-server/pkg/user_provider.go
index 5fa4428..bf42866 100644
--- a/general/rest/go-server/pkg/user_provider.go
+++ b/general/rest/go-server/pkg/user_provider.go
@@ -6,12 +6,11 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
-	perrors "github.com/pkg/errors"
-)
 
-import (
-	"github.com/apache/dubbo-go/config"
+	perrors "github.com/pkg/errors"
 )
 
 func init() {
diff --git a/general/rest/go-server/pkg/user_provider1.go b/general/rest/go-server/pkg/user_provider1.go
index e8ffb21..6fdc271 100644
--- a/general/rest/go-server/pkg/user_provider1.go
+++ b/general/rest/go-server/pkg/user_provider1.go
@@ -6,12 +6,11 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
-	perrors "github.com/pkg/errors"
-)
 
-import (
-	"github.com/apache/dubbo-go/config"
+	perrors "github.com/pkg/errors"
 )
 
 func init() {
diff --git a/general/rest/go-server/pkg/user_provider2.go b/general/rest/go-server/pkg/user_provider2.go
index 1399d05..8287d31 100644
--- a/general/rest/go-server/pkg/user_provider2.go
+++ b/general/rest/go-server/pkg/user_provider2.go
@@ -6,12 +6,11 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
-	perrors "github.com/pkg/errors"
-)
 
-import (
-	"github.com/apache/dubbo-go/config"
+	perrors "github.com/pkg/errors"
 )
 
 func init() {
diff --git a/generic/go-client/cmd/client.go b/generic/go-client/cmd/client.go
index 269988e..0d9d4f3 100644
--- a/generic/go-client/cmd/client.go
+++ b/generic/go-client/cmd/client.go
@@ -27,11 +27,6 @@ import (
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/generic/go-client/pkg"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -41,6 +36,12 @@ import (
 	"github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/generic/go-client/pkg"
 )
 
 var (
diff --git a/generic/go-server/cmd/server.go b/generic/go-server/cmd/server.go
index 041116a..7e2784e 100644
--- a/generic/go-server/cmd/server.go
+++ b/generic/go-server/cmd/server.go
@@ -27,7 +27,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -37,7 +36,9 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+)
 
+import (
 	"github.com/apache/dubbo-go-samples/generic/go-server/pkg"
 )
 
diff --git a/generic/go-server/pkg/user.go b/generic/go-server/pkg/user.go
index a7eef28..dd62f6d 100644
--- a/generic/go-server/pkg/user.go
+++ b/generic/go-server/pkg/user.go
@@ -23,12 +23,10 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
 )
 
 func init() {
diff --git a/generic/go-server/tests/integration/main_test.go b/generic/go-server/tests/integration/main_test.go
index 41fe4f0..f24056e 100644
--- a/generic/go-server/tests/integration/main_test.go
+++ b/generic/go-server/tests/integration/main_test.go
@@ -20,6 +20,12 @@
 package integration
 
 import (
+	"os"
+	"testing"
+	"time"
+)
+
+import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -31,12 +37,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"os"
-	"testing"
-	"time"
-)
-
 var appName = "UserConsumerTest"
 var referenceConfig = config.ReferenceConfig{
 	InterfaceName: "org.apache.dubbo.UserProvider",
diff --git a/generic/go-server/tests/integration/userprovider_test.go b/generic/go-server/tests/integration/userprovider_test.go
index c272129..975e40b 100644
--- a/generic/go-server/tests/integration/userprovider_test.go
+++ b/generic/go-server/tests/integration/userprovider_test.go
@@ -21,12 +21,14 @@ package integration
 
 import (
 	"context"
-	"github.com/stretchr/testify/assert"
 	"testing"
 	"time"
 )
+
 import (
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/stretchr/testify/assert"
 )
 
 func TestGetUser(t *testing.T) {
diff --git a/group/go-client/cmd/client.go b/group/go-client/cmd/client.go
index 8d42052..391bbd4 100644
--- a/group/go-client/cmd/client.go
+++ b/group/go-client/cmd/client.go
@@ -25,11 +25,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/group/go-client/pkg"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -38,6 +33,12 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/group/go-client/pkg"
 )
 
 var userProviderA = new(pkg.UserProviderGroupA)
diff --git a/group/go-server-group-a/pkg/user.go b/group/go-server-group-a/pkg/user.go
index 47e2ec1..f61464f 100644
--- a/group/go-server-group-a/pkg/user.go
+++ b/group/go-server-group-a/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/group/go-server-group-a/tests/integration/main_test.go b/group/go-server-group-a/tests/integration/main_test.go
index 4a75f7a..b4a5139 100644
--- a/group/go-server-group-a/tests/integration/main_test.go
+++ b/group/go-server-group-a/tests/integration/main_test.go
@@ -28,11 +28,10 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
diff --git a/group/go-server-group-a/tests/integration/userprovider_test.go b/group/go-server-group-a/tests/integration/userprovider_test.go
index 3c4661a..6552e24 100644
--- a/group/go-server-group-a/tests/integration/userprovider_test.go
+++ b/group/go-server-group-a/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/group/go-server-group-b/pkg/user.go b/group/go-server-group-b/pkg/user.go
index f8d375a..221a208 100644
--- a/group/go-server-group-b/pkg/user.go
+++ b/group/go-server-group-b/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/group/go-server-group-b/tests/integration/main_test.go b/group/go-server-group-b/tests/integration/main_test.go
index 4a75f7a..b4a5139 100644
--- a/group/go-server-group-b/tests/integration/main_test.go
+++ b/group/go-server-group-b/tests/integration/main_test.go
@@ -28,11 +28,10 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
diff --git a/helloworld/go-client/cmd/client.go b/helloworld/go-client/cmd/client.go
index c44abbd..b6ac640 100644
--- a/helloworld/go-client/cmd/client.go
+++ b/helloworld/go-client/cmd/client.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	gxlog "github.com/dubbogo/gost/log"
 )
 
diff --git a/metric/go-client/cmd/client.go b/metric/go-client/cmd/client.go
index e06bf2a..d22c212 100644
--- a/metric/go-client/cmd/client.go
+++ b/metric/go-client/cmd/client.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/metric/go-server/cmd/server.go b/metric/go-server/cmd/server.go
index 6ed88ed..369a8b8 100644
--- a/metric/go-server/cmd/server.go
+++ b/metric/go-server/cmd/server.go
@@ -29,8 +29,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/prometheus/client_golang/prometheus/promhttp"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -41,6 +39,8 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/prometheus/client_golang/prometheus/promhttp"
 )
 
 import (
diff --git a/metric/go-server/pkg/user.go b/metric/go-server/pkg/user.go
index fb78eeb..df78163 100644
--- a/metric/go-server/pkg/user.go
+++ b/metric/go-server/pkg/user.go
@@ -19,17 +19,16 @@ package pkg
 
 import (
 	"context"
-	"github.com/opentracing/opentracing-go"
 	"time"
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
+
+	"github.com/opentracing/opentracing-go"
 )
 
 func init() {
diff --git a/metric/go-server/tests/integration/main_test.go b/metric/go-server/tests/integration/main_test.go
index 45de1c7..b4a5139 100644
--- a/metric/go-server/tests/integration/main_test.go
+++ b/metric/go-server/tests/integration/main_test.go
@@ -20,12 +20,18 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
+	"context"
+	"os"
+	"testing"
+	"time"
+)
 
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
@@ -33,13 +39,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/metric/go-server/tests/integration/userprovider_test.go b/metric/go-server/tests/integration/userprovider_test.go
index 0ee7a59..776299a 100644
--- a/metric/go-server/tests/integration/userprovider_test.go
+++ b/metric/go-server/tests/integration/userprovider_test.go
@@ -25,6 +25,7 @@ import (
 	"net/http"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/multi-registry/go-client/cmd/client.go b/multi-registry/go-client/cmd/client.go
index 9516cd5..22bce13 100644
--- a/multi-registry/go-client/cmd/client.go
+++ b/multi-registry/go-client/cmd/client.go
@@ -25,7 +25,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -35,6 +34,7 @@ import (
 	_ "github.com/apache/dubbo-go/registry/nacos"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/multi-registry/go-server/cmd/server.go b/multi-registry/go-server/cmd/server.go
index 0d538c9..388188b 100644
--- a/multi-registry/go-server/cmd/server.go
+++ b/multi-registry/go-server/cmd/server.go
@@ -27,7 +27,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
diff --git a/multi-registry/go-server/pkg/user.go b/multi-registry/go-server/pkg/user.go
index 9920a59..b778495 100644
--- a/multi-registry/go-server/pkg/user.go
+++ b/multi-registry/go-server/pkg/user.go
@@ -23,12 +23,10 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
 )
 
 func init() {
diff --git a/multi-registry/go-server/tests/integration/main_test.go b/multi-registry/go-server/tests/integration/main_test.go
index a6c66da..d910b0d 100644
--- a/multi-registry/go-server/tests/integration/main_test.go
+++ b/multi-registry/go-server/tests/integration/main_test.go
@@ -20,6 +20,13 @@
 package integration
 
 import (
+	"context"
+	"os"
+	"testing"
+	"time"
+)
+
+import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
@@ -32,13 +39,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/multi-registry/go-server/tests/integration/userprovider_test.go b/multi-registry/go-server/tests/integration/userprovider_test.go
index dc29d9a..7183e64 100644
--- a/multi-registry/go-server/tests/integration/userprovider_test.go
+++ b/multi-registry/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/multi-zone/go-client/cmd/client.go b/multi-zone/go-client/cmd/client.go
index 6095f55..a72f62e 100644
--- a/multi-zone/go-client/cmd/client.go
+++ b/multi-zone/go-client/cmd/client.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
@@ -40,7 +41,6 @@ import (
 	"github.com/apache/dubbo-go-samples/multi-zone/go-client/pkg"
 )
 
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
 func main() {
 	hessian.RegisterPOJO(&pkg.User{})
 	userProvider := new(pkg.UserProvider)
diff --git a/multi-zone/go-client/tests/integration/main_test.go b/multi-zone/go-client/tests/integration/main_test.go
index e0d834e..44b9717 100644
--- a/multi-zone/go-client/tests/integration/main_test.go
+++ b/multi-zone/go-client/tests/integration/main_test.go
@@ -20,13 +20,17 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
-	"github.com/apache/dubbo-go-samples/multi-zone/go-client/pkg"
+	"os"
+	"testing"
+	"time"
+)
 
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
@@ -34,9 +38,7 @@ import (
 )
 
 import (
-	"os"
-	"testing"
-	"time"
+	"github.com/apache/dubbo-go-samples/multi-zone/go-client/pkg"
 )
 
 var userProvider = new(pkg.UserProvider)
diff --git a/multi-zone/go-client/tests/integration/userprovider_test.go b/multi-zone/go-client/tests/integration/userprovider_test.go
index 098445c..2961b57 100644
--- a/multi-zone/go-client/tests/integration/userprovider_test.go
+++ b/multi-zone/go-client/tests/integration/userprovider_test.go
@@ -21,14 +21,19 @@ package integration
 
 import (
 	"context"
-	"github.com/apache/dubbo-go/common/constant"
-	"github.com/apache/dubbo-go-samples/multi-zone/go-client/pkg"
 	"testing"
 )
+
 import (
+	"github.com/apache/dubbo-go/common/constant"
+
 	"github.com/stretchr/testify/assert"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/multi-zone/go-client/pkg"
+)
+
 func TestGetUser(t *testing.T) {
 	ctx := context.WithValue(context.Background(), constant.REGISTRY_KEY+"."+constant.ZONE_FORCE_KEY, true)
 
diff --git a/multi-zone/go-server-hz/pkg/user.go b/multi-zone/go-server-hz/pkg/user.go
index b75b3fc..a637df7 100644
--- a/multi-zone/go-server-hz/pkg/user.go
+++ b/multi-zone/go-server-hz/pkg/user.go
@@ -24,6 +24,7 @@ import (
 
 import (
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/multi-zone/go-server-hz/tests/integration/userprovider_test.go b/multi-zone/go-server-hz/tests/integration/userprovider_test.go
index 89988b7..a506b8d 100644
--- a/multi-zone/go-server-hz/tests/integration/userprovider_test.go
+++ b/multi-zone/go-server-hz/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/multi-zone/go-server-sh/pkg/user.go b/multi-zone/go-server-sh/pkg/user.go
index b75b3fc..a637df7 100644
--- a/multi-zone/go-server-sh/pkg/user.go
+++ b/multi-zone/go-server-sh/pkg/user.go
@@ -24,6 +24,7 @@ import (
 
 import (
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/multi-zone/go-server-sh/tests/integration/main_test.go b/multi-zone/go-server-sh/tests/integration/main_test.go
index f79029c..b4a5139 100644
--- a/multi-zone/go-server-sh/tests/integration/main_test.go
+++ b/multi-zone/go-server-sh/tests/integration/main_test.go
@@ -39,8 +39,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/multi-zone/go-server-sh/tests/integration/userprovider_test.go b/multi-zone/go-server-sh/tests/integration/userprovider_test.go
index c8d3dd8..04ab061 100644
--- a/multi-zone/go-server-sh/tests/integration/userprovider_test.go
+++ b/multi-zone/go-server-sh/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/registry/etcd/go-client/cmd/client.go b/registry/etcd/go-client/cmd/client.go
index 1a16c1a..99ca471 100644
--- a/registry/etcd/go-client/cmd/client.go
+++ b/registry/etcd/go-client/cmd/client.go
@@ -25,11 +25,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/registry/etcd/go-client/pkg"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -38,6 +33,12 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/etcdv3"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/registry/etcd/go-client/pkg"
 )
 
 var userProvider = new(pkg.UserProvider)
diff --git a/registry/etcd/go-server/cmd/server.go b/registry/etcd/go-server/cmd/server.go
index 1d06639..5fa2e8c 100644
--- a/registry/etcd/go-server/cmd/server.go
+++ b/registry/etcd/go-server/cmd/server.go
@@ -27,8 +27,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/registry/etcd/go-server/pkg"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -40,6 +38,10 @@ import (
 	_ "github.com/apache/dubbo-go/registry/protocol"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/registry/etcd/go-server/pkg"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
diff --git a/registry/etcd/go-server/pkg/user.go b/registry/etcd/go-server/pkg/user.go
index 9920a59..b778495 100644
--- a/registry/etcd/go-server/pkg/user.go
+++ b/registry/etcd/go-server/pkg/user.go
@@ -23,12 +23,10 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
 )
 
 func init() {
diff --git a/registry/etcd/go-server/tests/integration/main_test.go b/registry/etcd/go-server/tests/integration/main_test.go
index 2611d11..b22e364 100644
--- a/registry/etcd/go-server/tests/integration/main_test.go
+++ b/registry/etcd/go-server/tests/integration/main_test.go
@@ -20,25 +20,24 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
+	"context"
+	"os"
+	"testing"
+	"time"
+)
 
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/etcdv3"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/registry/etcd/go-server/tests/integration/userprovider_test.go b/registry/etcd/go-server/tests/integration/userprovider_test.go
index dc29d9a..7183e64 100644
--- a/registry/etcd/go-server/tests/integration/userprovider_test.go
+++ b/registry/etcd/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/registry/nacos/go-client/cmd/client.go b/registry/nacos/go-client/cmd/client.go
index 72037c3..c9e0117 100644
--- a/registry/nacos/go-client/cmd/client.go
+++ b/registry/nacos/go-client/cmd/client.go
@@ -25,11 +25,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/registry/nacos/go-client/pkg"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -38,6 +33,12 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/nacos"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/registry/nacos/go-client/pkg"
 )
 
 var userProvider = new(pkg.UserProvider)
diff --git a/registry/nacos/go-server/pkg/user.go b/registry/nacos/go-server/pkg/user.go
index 9920a59..b778495 100644
--- a/registry/nacos/go-server/pkg/user.go
+++ b/registry/nacos/go-server/pkg/user.go
@@ -23,12 +23,10 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
 )
 
 func init() {
diff --git a/registry/nacos/go-server/tests/integration/main_test.go b/registry/nacos/go-server/tests/integration/main_test.go
index a6a81e4..eb1bc0c 100644
--- a/registry/nacos/go-server/tests/integration/main_test.go
+++ b/registry/nacos/go-server/tests/integration/main_test.go
@@ -20,25 +20,24 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go/config"
+	"context"
+	"os"
+	"testing"
+	"time"
+)
 
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/nacos"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/registry/nacos/go-server/tests/integration/userprovider_test.go b/registry/nacos/go-server/tests/integration/userprovider_test.go
index dc29d9a..7183e64 100644
--- a/registry/nacos/go-server/tests/integration/userprovider_test.go
+++ b/registry/nacos/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/registry/servicediscovery/consul/go-client/cmd/client.go b/registry/servicediscovery/consul/go-client/cmd/client.go
index d9b46af..0be5b6c 100644
--- a/registry/servicediscovery/consul/go-client/cmd/client.go
+++ b/registry/servicediscovery/consul/go-client/cmd/client.go
@@ -27,30 +27,28 @@ import (
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/registry/servicediscovery/consul/go-client/pkg/pojo"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
-
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-
 	_ "github.com/apache/dubbo-go/metadata/mapping/dynamic"
 	_ "github.com/apache/dubbo-go/metadata/report/consul"
 	_ "github.com/apache/dubbo-go/metadata/service/remote"
+	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/consul"
+	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
+
 	gxlog "github.com/dubbogo/gost/log"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/registry/servicediscovery/consul/go-client/pkg/pojo"
+)
+
 var (
 	survivalTimeout int = 10e9
 )
diff --git a/registry/servicediscovery/consul/go-server/cmd/server.go b/registry/servicediscovery/consul/go-server/cmd/server.go
index b3a571b..ffc5857 100644
--- a/registry/servicediscovery/consul/go-server/cmd/server.go
+++ b/registry/servicediscovery/consul/go-server/cmd/server.go
@@ -26,30 +26,27 @@ import (
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/registry/servicediscovery/consul/go-server/pkg/pojo"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
-	"github.com/apache/dubbo-go/config"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
-	_ "github.com/apache/dubbo-go/protocol/jsonrpc"
-	_ "github.com/apache/dubbo-go/registry/protocol"
-
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
-
-	_ "github.com/apache/dubbo-go/registry/consul"
-
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/metadata/mapping/memory"
 	_ "github.com/apache/dubbo-go/metadata/report/consul"
 	_ "github.com/apache/dubbo-go/metadata/service/remote"
+	_ "github.com/apache/dubbo-go/protocol/dubbo"
+	_ "github.com/apache/dubbo-go/protocol/jsonrpc"
+	_ "github.com/apache/dubbo-go/registry/consul"
+	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/registry/servicediscovery/consul/go-server/pkg/pojo"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
diff --git a/registry/servicediscovery/consul/go-server/pkg/pojo/user.go b/registry/servicediscovery/consul/go-server/pkg/pojo/user.go
index e011f01..4e59463 100644
--- a/registry/servicediscovery/consul/go-server/pkg/pojo/user.go
+++ b/registry/servicediscovery/consul/go-server/pkg/pojo/user.go
@@ -24,9 +24,7 @@ import (
 
 import (
 	"github.com/apache/dubbo-go/config"
-)
 
-import (
 	gxlog "github.com/dubbogo/gost/log"
 )
 
diff --git a/registry/servicediscovery/consul/go-server/tests/integration/main_test.go b/registry/servicediscovery/consul/go-server/tests/integration/main_test.go
index 1c6a64b..88a7662 100644
--- a/registry/servicediscovery/consul/go-server/tests/integration/main_test.go
+++ b/registry/servicediscovery/consul/go-server/tests/integration/main_test.go
@@ -28,7 +28,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
diff --git a/registry/servicediscovery/consul/go-server/tests/integration/userprovider_test.go b/registry/servicediscovery/consul/go-server/tests/integration/userprovider_test.go
index dc29d9a..7183e64 100644
--- a/registry/servicediscovery/consul/go-server/tests/integration/userprovider_test.go
+++ b/registry/servicediscovery/consul/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/registry/servicediscovery/etcd/go-client/cmd/client.go b/registry/servicediscovery/etcd/go-client/cmd/client.go
index bb167d8..021c58f 100644
--- a/registry/servicediscovery/etcd/go-client/cmd/client.go
+++ b/registry/servicediscovery/etcd/go-client/cmd/client.go
@@ -25,12 +25,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/registry/servicediscovery/etcd/go-client/pkg"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -44,6 +38,12 @@ import (
 	_ "github.com/apache/dubbo-go/registry/etcdv3"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/registry/servicediscovery/etcd/go-client/pkg"
 )
 
 var userProvider = new(pkg.UserProvider)
diff --git a/registry/servicediscovery/etcd/go-server/cmd/server.go b/registry/servicediscovery/etcd/go-server/cmd/server.go
index 0c7ae04..07bee9f 100644
--- a/registry/servicediscovery/etcd/go-server/cmd/server.go
+++ b/registry/servicediscovery/etcd/go-server/cmd/server.go
@@ -27,8 +27,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/registry/servicediscovery/etcd/go-server/pkg"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -45,6 +43,10 @@ import (
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/registry/servicediscovery/etcd/go-server/pkg"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
diff --git a/registry/servicediscovery/etcd/go-server/pkg/user.go b/registry/servicediscovery/etcd/go-server/pkg/user.go
index 9920a59..b778495 100644
--- a/registry/servicediscovery/etcd/go-server/pkg/user.go
+++ b/registry/servicediscovery/etcd/go-server/pkg/user.go
@@ -23,12 +23,10 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
 )
 
 func init() {
diff --git a/registry/servicediscovery/etcd/go-server/tests/integration/main_test.go b/registry/servicediscovery/etcd/go-server/tests/integration/main_test.go
index 90d99a4..6f4c991 100644
--- a/registry/servicediscovery/etcd/go-server/tests/integration/main_test.go
+++ b/registry/servicediscovery/etcd/go-server/tests/integration/main_test.go
@@ -20,8 +20,14 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
+	"context"
+	"os"
+	"testing"
+	"time"
+)
 
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -37,13 +43,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/registry/servicediscovery/etcd/go-server/tests/integration/userprovider_test.go b/registry/servicediscovery/etcd/go-server/tests/integration/userprovider_test.go
index dc29d9a..7183e64 100644
--- a/registry/servicediscovery/etcd/go-server/tests/integration/userprovider_test.go
+++ b/registry/servicediscovery/etcd/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/registry/servicediscovery/file/go-client/cmd/client.go b/registry/servicediscovery/file/go-client/cmd/client.go
index b6f37a9..de86cd6 100644
--- a/registry/servicediscovery/file/go-client/cmd/client.go
+++ b/registry/servicediscovery/file/go-client/cmd/client.go
@@ -25,12 +25,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/registry/servicediscovery/file/go-client/pkg"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -43,6 +37,12 @@ import (
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/registry/servicediscovery/file/go-client/pkg"
 )
 
 var userProvider = new(pkg.UserProvider)
diff --git a/registry/servicediscovery/file/go-server/cmd/server.go b/registry/servicediscovery/file/go-server/cmd/server.go
index 6c2b0b5..2e8eb8f 100644
--- a/registry/servicediscovery/file/go-server/cmd/server.go
+++ b/registry/servicediscovery/file/go-server/cmd/server.go
@@ -27,8 +27,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/registry/servicediscovery/file/go-server/pkg"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -45,6 +43,10 @@ import (
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/registry/servicediscovery/file/go-server/pkg"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
diff --git a/registry/servicediscovery/file/go-server/pkg/user.go b/registry/servicediscovery/file/go-server/pkg/user.go
index 9920a59..b778495 100644
--- a/registry/servicediscovery/file/go-server/pkg/user.go
+++ b/registry/servicediscovery/file/go-server/pkg/user.go
@@ -23,12 +23,10 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
 )
 
 func init() {
diff --git a/registry/servicediscovery/file/go-server/tests/integration/main_test.go b/registry/servicediscovery/file/go-server/tests/integration/main_test.go
index 86de468..08b8fda 100644
--- a/registry/servicediscovery/file/go-server/tests/integration/main_test.go
+++ b/registry/servicediscovery/file/go-server/tests/integration/main_test.go
@@ -20,8 +20,14 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
+	"context"
+	"os"
+	"testing"
+	"time"
+)
 
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -37,13 +43,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/registry/servicediscovery/file/go-server/tests/integration/userprovider_test.go b/registry/servicediscovery/file/go-server/tests/integration/userprovider_test.go
index dc29d9a..7183e64 100644
--- a/registry/servicediscovery/file/go-server/tests/integration/userprovider_test.go
+++ b/registry/servicediscovery/file/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/registry/servicediscovery/nacos/go-client/cmd/client.go b/registry/servicediscovery/nacos/go-client/cmd/client.go
index 8440c16..a49aef9 100644
--- a/registry/servicediscovery/nacos/go-client/cmd/client.go
+++ b/registry/servicediscovery/nacos/go-client/cmd/client.go
@@ -25,12 +25,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/registry/servicediscovery/etcd/go-client/pkg"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -45,6 +39,12 @@ import (
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/registry/servicediscovery/etcd/go-client/pkg"
 )
 
 var userProvider = new(pkg.UserProvider)
diff --git a/registry/servicediscovery/nacos/go-server/cmd/server.go b/registry/servicediscovery/nacos/go-server/cmd/server.go
index 4084ab5..2a1e71d 100644
--- a/registry/servicediscovery/nacos/go-server/cmd/server.go
+++ b/registry/servicediscovery/nacos/go-server/cmd/server.go
@@ -27,8 +27,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/registry/servicediscovery/nacos/go-server/pkg"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -46,6 +44,10 @@ import (
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/registry/servicediscovery/nacos/go-server/pkg"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
diff --git a/registry/servicediscovery/nacos/go-server/pkg/user.go b/registry/servicediscovery/nacos/go-server/pkg/user.go
index 9920a59..b778495 100644
--- a/registry/servicediscovery/nacos/go-server/pkg/user.go
+++ b/registry/servicediscovery/nacos/go-server/pkg/user.go
@@ -23,12 +23,10 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
 )
 
 func init() {
diff --git a/registry/servicediscovery/nacos/go-server/tests/integration/main_test.go b/registry/servicediscovery/nacos/go-server/tests/integration/main_test.go
index cdc8b96..89acd08 100644
--- a/registry/servicediscovery/nacos/go-server/tests/integration/main_test.go
+++ b/registry/servicediscovery/nacos/go-server/tests/integration/main_test.go
@@ -20,8 +20,14 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
+	"context"
+	"os"
+	"testing"
+	"time"
+)
 
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -38,13 +44,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/registry/servicediscovery/nacos/go-server/tests/integration/userprovider_test.go b/registry/servicediscovery/nacos/go-server/tests/integration/userprovider_test.go
index dc29d9a..7183e64 100644
--- a/registry/servicediscovery/nacos/go-server/tests/integration/userprovider_test.go
+++ b/registry/servicediscovery/nacos/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/registry/servicediscovery/zookeeper/go-client/cmd/client.go b/registry/servicediscovery/zookeeper/go-client/cmd/client.go
index 9f82758..8088f8f 100644
--- a/registry/servicediscovery/zookeeper/go-client/cmd/client.go
+++ b/registry/servicediscovery/zookeeper/go-client/cmd/client.go
@@ -25,12 +25,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/registry/servicediscovery/zookeeper/go-client/pkg"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
@@ -43,6 +37,12 @@ import (
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/registry/servicediscovery/zookeeper/go-client/pkg"
 )
 
 var userProvider = new(pkg.UserProvider)
diff --git a/registry/servicediscovery/zookeeper/go-server/cmd/server.go b/registry/servicediscovery/zookeeper/go-server/cmd/server.go
index 80fe85c..0124682 100644
--- a/registry/servicediscovery/zookeeper/go-server/cmd/server.go
+++ b/registry/servicediscovery/zookeeper/go-server/cmd/server.go
@@ -27,8 +27,6 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/apache/dubbo-go-samples/registry/servicediscovery/zookeeper/go-server/pkg"
-
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -45,6 +43,10 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
+import (
+	"github.com/apache/dubbo-go-samples/registry/servicediscovery/zookeeper/go-server/pkg"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
diff --git a/registry/servicediscovery/zookeeper/go-server/pkg/user.go b/registry/servicediscovery/zookeeper/go-server/pkg/user.go
index 9920a59..b778495 100644
--- a/registry/servicediscovery/zookeeper/go-server/pkg/user.go
+++ b/registry/servicediscovery/zookeeper/go-server/pkg/user.go
@@ -23,12 +23,10 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
 )
 
 func init() {
diff --git a/registry/servicediscovery/zookeeper/go-server/tests/integration/main_test.go b/registry/servicediscovery/zookeeper/go-server/tests/integration/main_test.go
index fa94ebc..0486cc7 100644
--- a/registry/servicediscovery/zookeeper/go-server/tests/integration/main_test.go
+++ b/registry/servicediscovery/zookeeper/go-server/tests/integration/main_test.go
@@ -20,17 +20,21 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
+	"context"
+	"os"
+	"testing"
+	"time"
+)
 
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	//_ "github.com/apache/dubbo-go/metadata/mapping/dynamic"
 	_ "github.com/apache/dubbo-go/metadata/mapping/memory"
 	_ "github.com/apache/dubbo-go/metadata/report/zookeeper"
-	//_ "github.com/apache/dubbo-go/metadata/service/remote"
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
@@ -38,13 +42,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/registry/servicediscovery/zookeeper/go-server/tests/integration/userprovider_test.go b/registry/servicediscovery/zookeeper/go-server/tests/integration/userprovider_test.go
index dc29d9a..7183e64 100644
--- a/registry/servicediscovery/zookeeper/go-server/tests/integration/userprovider_test.go
+++ b/registry/servicediscovery/zookeeper/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/router/condition/go-client/cmd/client.go b/router/condition/go-client/cmd/client.go
index 4f9e495..f6d1773 100644
--- a/router/condition/go-client/cmd/client.go
+++ b/router/condition/go-client/cmd/client.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
@@ -40,8 +41,6 @@ import (
 	"github.com/apache/dubbo-go-samples/router/condition/go-client/pkg"
 )
 
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-// need to setup environment variable "CONF_ROUTER_FILE_PATH" to "conf/router_config.yml" before run
 func main() {
 	userProvider := new(pkg.UserProvider)
 	config.SetConsumerService(userProvider)
diff --git a/router/condition/go-server/tests/integration/main_test.go b/router/condition/go-server/tests/integration/main_test.go
index 758cc00..9279543 100644
--- a/router/condition/go-server/tests/integration/main_test.go
+++ b/router/condition/go-server/tests/integration/main_test.go
@@ -20,8 +20,14 @@
 package integration
 
 import (
-	hessian "github.com/apache/dubbo-go-hessian2"
+	"context"
+	"os"
+	"testing"
+	"time"
+)
 
+import (
+	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/cluster/router/condition"
@@ -33,13 +39,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/router/condition/go-server/tests/integration/userprovider_test.go b/router/condition/go-server/tests/integration/userprovider_test.go
index 05c607f..f4c030c 100644
--- a/router/condition/go-server/tests/integration/userprovider_test.go
+++ b/router/condition/go-server/tests/integration/userprovider_test.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"testing"
 )
+
 import (
 	"github.com/stretchr/testify/assert"
 )
diff --git a/router/tag/go-client/cmd/client.go b/router/tag/go-client/cmd/client.go
index 1586ec9..bee40d1 100644
--- a/router/tag/go-client/cmd/client.go
+++ b/router/tag/go-client/cmd/client.go
@@ -41,6 +41,7 @@ import (
 	_ "github.com/apache/dubbo-go/registry/directory"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	gxlog "github.com/dubbogo/gost/log"
 )
 
diff --git a/router/tag/go-server/tests/integration/main_test.go b/router/tag/go-server/tests/integration/main_test.go
index 8d37927..1ec5da9 100644
--- a/router/tag/go-server/tests/integration/main_test.go
+++ b/router/tag/go-server/tests/integration/main_test.go
@@ -20,6 +20,13 @@
 package integration
 
 import (
+	"context"
+	"os"
+	"testing"
+	"time"
+)
+
+import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
@@ -32,13 +39,6 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
 var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
diff --git a/router/tag/go-server/tests/integration/userprovider_test.go b/router/tag/go-server/tests/integration/userprovider_test.go
index 863c533..e4dbb83 100644
--- a/router/tag/go-server/tests/integration/userprovider_test.go
+++ b/router/tag/go-server/tests/integration/userprovider_test.go
@@ -26,6 +26,7 @@ import (
 
 import (
 	"github.com/apache/dubbo-go/common/constant"
+
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/shopping-order/go-client/cmd/client.go b/shopping-order/go-client/cmd/client.go
index 7486877..f5e10e0 100644
--- a/shopping-order/go-client/cmd/client.go
+++ b/shopping-order/go-client/cmd/client.go
@@ -36,6 +36,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/transaction-wg/seata-golang/pkg/client"
 	seataConfig "github.com/transaction-wg/seata-golang/pkg/client/config"
 	"github.com/transaction-wg/seata-golang/pkg/client/tm"
diff --git a/shopping-order/go-client/pkg/svc.go b/shopping-order/go-client/pkg/svc.go
index 2f8d9ae..1dcba91 100644
--- a/shopping-order/go-client/pkg/svc.go
+++ b/shopping-order/go-client/pkg/svc.go
@@ -25,6 +25,7 @@ import (
 import (
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/config"
+
 	seataContext "github.com/transaction-wg/seata-golang/pkg/client/context"
 	"github.com/transaction-wg/seata-golang/pkg/client/tm"
 )
diff --git a/shopping-order/go-server-order/cmd/order_svc.go b/shopping-order/go-server-order/cmd/order_svc.go
index 2eb6659..0521b08 100644
--- a/shopping-order/go-server-order/cmd/order_svc.go
+++ b/shopping-order/go-server-order/cmd/order_svc.go
@@ -23,6 +23,7 @@ import (
 
 import (
 	"github.com/apache/dubbo-go/common/constant"
+
 	"github.com/opentrx/mysql"
 )
 
diff --git a/shopping-order/go-server-order/cmd/server.go b/shopping-order/go-server-order/cmd/server.go
index 0feb02b..d45eb76 100644
--- a/shopping-order/go-server-order/cmd/server.go
+++ b/shopping-order/go-server-order/cmd/server.go
@@ -37,7 +37,9 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/nacos"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+
 	"github.com/opentrx/mysql"
+
 	"github.com/transaction-wg/seata-golang/pkg/client"
 	seataConfig "github.com/transaction-wg/seata-golang/pkg/client/config"
 )
diff --git a/shopping-order/go-server-order/pkg/dao/dao.go b/shopping-order/go-server-order/pkg/dao/dao.go
index 99c9865..79f1272 100644
--- a/shopping-order/go-server-order/pkg/dao/dao.go
+++ b/shopping-order/go-server-order/pkg/dao/dao.go
@@ -25,6 +25,7 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
+
 	"github.com/bwmarrin/snowflake"
 )
 
diff --git a/shopping-order/go-server-product/cmd/product_svc.go b/shopping-order/go-server-product/cmd/product_svc.go
index 1b5e21e..03c659e 100644
--- a/shopping-order/go-server-product/cmd/product_svc.go
+++ b/shopping-order/go-server-product/cmd/product_svc.go
@@ -23,6 +23,7 @@ import (
 
 import (
 	"github.com/apache/dubbo-go/common/constant"
+
 	"github.com/opentrx/mysql"
 )
 
diff --git a/shopping-order/go-server-product/cmd/server.go b/shopping-order/go-server-product/cmd/server.go
index fa39efb..8b0607f 100644
--- a/shopping-order/go-server-product/cmd/server.go
+++ b/shopping-order/go-server-product/cmd/server.go
@@ -37,7 +37,9 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/nacos"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+
 	"github.com/opentrx/mysql"
+
 	"github.com/transaction-wg/seata-golang/pkg/client"
 	seataConfig "github.com/transaction-wg/seata-golang/pkg/client/config"
 )
diff --git a/tls/go-client/cmd/client.go b/tls/go-client/cmd/client.go
index 9e97f6c..9ed5f7c 100755
--- a/tls/go-client/cmd/client.go
+++ b/tls/go-client/cmd/client.go
@@ -29,6 +29,7 @@ import (
 
 import (
 	getty "github.com/apache/dubbo-getty"
+
 	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
@@ -39,6 +40,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	gxlog "github.com/dubbogo/gost/log"
 )
 
@@ -103,4 +105,4 @@ func initSignal() {
 			return
 		}
 	}
-}
\ No newline at end of file
+}
diff --git a/tls/go-server/cmd/server.go b/tls/go-server/cmd/server.go
index 9f59211..7325b19 100755
--- a/tls/go-server/cmd/server.go
+++ b/tls/go-server/cmd/server.go
@@ -28,6 +28,7 @@ import (
 
 import (
 	getty "github.com/apache/dubbo-getty"
+
 	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
@@ -44,7 +45,6 @@ import (
 	"github.com/apache/dubbo-go-samples/tls/go-server/pkg"
 )
 
-// survival time
 var (
 	survivalTimeout = 	int(3e9)
 )
@@ -96,4 +96,4 @@ func initSignal() {
 			return
 		}
 	}
-}
\ No newline at end of file
+}
diff --git a/tls/go-server/pkg/user.go b/tls/go-server/pkg/user.go
index e295a11..936eabb 100755
--- a/tls/go-server/pkg/user.go
+++ b/tls/go-server/pkg/user.go
@@ -49,4 +49,4 @@ func (u *UserProvider) Reference() string {
 
 func (u User) JavaClassName() string {
 	return "org.apache.dubbo.User"
-}
\ No newline at end of file
+}
diff --git a/tls/go-server/tests/integration/main_test.go b/tls/go-server/tests/integration/main_test.go
index 5abb8f7..89d1c93 100644
--- a/tls/go-server/tests/integration/main_test.go
+++ b/tls/go-server/tests/integration/main_test.go
@@ -29,6 +29,7 @@ import (
 
 import (
 	getty "github.com/apache/dubbo-getty"
+
 	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
diff --git a/tracing/dubbo/go-client/app/client.go b/tracing/dubbo/go-client/app/client.go
index 1e739f6..e6c9edf 100644
--- a/tracing/dubbo/go-client/app/client.go
+++ b/tracing/dubbo/go-client/app/client.go
@@ -28,25 +28,24 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/dubbogo/gost/log"
-	"github.com/opentracing/opentracing-go"
-	zipkinot "github.com/openzipkin-contrib/zipkin-go-opentracing"
-	"github.com/openzipkin/zipkin-go"
-	zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
-)
-
-import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
 
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
+	"github.com/dubbogo/gost/log"
 
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
+	"github.com/opentracing/opentracing-go"
+
+	zipkinot "github.com/openzipkin-contrib/zipkin-go-opentracing"
+
+	"github.com/openzipkin/zipkin-go"
+	zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
 )
 
 var (
diff --git a/tracing/dubbo/go-server/app/server.go b/tracing/dubbo/go-server/app/server.go
index eada598..9b5444d 100644
--- a/tracing/dubbo/go-server/app/server.go
+++ b/tracing/dubbo/go-server/app/server.go
@@ -27,24 +27,22 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
-	"github.com/opentracing/opentracing-go"
-	zipkinot "github.com/openzipkin-contrib/zipkin-go-opentracing"
-	"github.com/openzipkin/zipkin-go"
-	zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
-)
-
-import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
+	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
 
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
+	"github.com/opentracing/opentracing-go"
 
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
+	zipkinot "github.com/openzipkin-contrib/zipkin-go-opentracing"
+
+	"github.com/openzipkin/zipkin-go"
+	zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
 )
 
 var (
diff --git a/tracing/dubbo/go-server/app/user.go b/tracing/dubbo/go-server/app/user.go
index a96d42e..3745caa 100644
--- a/tracing/dubbo/go-server/app/user.go
+++ b/tracing/dubbo/go-server/app/user.go
@@ -23,13 +23,12 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-	"github.com/opentracing/opentracing-go"
-)
-
-import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
+	"github.com/dubbogo/gost/log"
+
+	"github.com/opentracing/opentracing-go"
 )
 
 func init() {
diff --git a/tracing/grpc/go-client/app/client.go b/tracing/grpc/go-client/app/client.go
index e433d53..a928c3a 100644
--- a/tracing/grpc/go-client/app/client.go
+++ b/tracing/grpc/go-client/app/client.go
@@ -27,12 +27,6 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-	opentracing "github.com/opentracing/opentracing-go"
-	jaegercfg "github.com/uber/jaeger-client-go/config"
-)
-
-import (
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
@@ -43,6 +37,12 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/grpc"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
+	"github.com/dubbogo/gost/log"
+
+	opentracing "github.com/opentracing/opentracing-go"
+
+	jaegercfg "github.com/uber/jaeger-client-go/config"
 )
 
 var (
diff --git a/tracing/grpc/go-client/app/hello.go b/tracing/grpc/go-client/app/hello.go
index f3e6a8f..b4c859a 100644
--- a/tracing/grpc/go-client/app/hello.go
+++ b/tracing/grpc/go-client/app/hello.go
@@ -22,11 +22,9 @@ import (
 )
 
 import (
-	"google.golang.org/grpc"
-)
-
-import (
 	"github.com/apache/dubbo-go/config"
+
+	"google.golang.org/grpc"
 )
 
 var grpcGreeterImpl = new(GrpcGreeterImpl)
diff --git a/tracing/grpc/go-client/app/helloworld.pb.go b/tracing/grpc/go-client/app/helloworld.pb.go
index 75e18b9..3b5a1dd 100644
--- a/tracing/grpc/go-client/app/helloworld.pb.go
+++ b/tracing/grpc/go-client/app/helloworld.pb.go
@@ -7,20 +7,20 @@ import (
 	"context"
 	"fmt"
 	"math"
-
-	"github.com/golang/protobuf/proto"
-	"google.golang.org/grpc"
-	"google.golang.org/grpc/codes"
-	"google.golang.org/grpc/status"
 )
 
 import (
 	"github.com/apache/dubbo-go/protocol"
 	dgrpc "github.com/apache/dubbo-go/protocol/grpc"
 	"github.com/apache/dubbo-go/protocol/invocation"
+
+	"github.com/golang/protobuf/proto"
+
+	"google.golang.org/grpc"
+	"google.golang.org/grpc/codes"
+	"google.golang.org/grpc/status"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
diff --git a/tracing/grpc/go-server/app/helloworld.pb.go b/tracing/grpc/go-server/app/helloworld.pb.go
index 75e18b9..3b5a1dd 100644
--- a/tracing/grpc/go-server/app/helloworld.pb.go
+++ b/tracing/grpc/go-server/app/helloworld.pb.go
@@ -7,20 +7,20 @@ import (
 	"context"
 	"fmt"
 	"math"
-
-	"github.com/golang/protobuf/proto"
-	"google.golang.org/grpc"
-	"google.golang.org/grpc/codes"
-	"google.golang.org/grpc/status"
 )
 
 import (
 	"github.com/apache/dubbo-go/protocol"
 	dgrpc "github.com/apache/dubbo-go/protocol/grpc"
 	"github.com/apache/dubbo-go/protocol/invocation"
+
+	"github.com/golang/protobuf/proto"
+
+	"google.golang.org/grpc"
+	"google.golang.org/grpc/codes"
+	"google.golang.org/grpc/status"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
diff --git a/tracing/grpc/go-server/app/server.go b/tracing/grpc/go-server/app/server.go
index 5abdce4..f922f79 100644
--- a/tracing/grpc/go-server/app/server.go
+++ b/tracing/grpc/go-server/app/server.go
@@ -37,6 +37,7 @@ import (
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 
 	opentracing "github.com/opentracing/opentracing-go"
+
 	jaegercfg "github.com/uber/jaeger-client-go/config"
 )
 
diff --git a/tracing/jsonrpc/go-client/app/client.go b/tracing/jsonrpc/go-client/app/client.go
index 4974ec5..3052740 100644
--- a/tracing/jsonrpc/go-client/app/client.go
+++ b/tracing/jsonrpc/go-client/app/client.go
@@ -27,25 +27,24 @@ import (
 )
 
 import (
-	"github.com/dubbogo/gost/log"
-	"github.com/opentracing/opentracing-go"
-	zipkinot "github.com/openzipkin-contrib/zipkin-go-opentracing"
-	"github.com/openzipkin/zipkin-go"
-	zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
-)
-
-import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/jsonrpc"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
 
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
+	"github.com/dubbogo/gost/log"
 
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
+	"github.com/opentracing/opentracing-go"
+
+	zipkinot "github.com/openzipkin-contrib/zipkin-go-opentracing"
+
+	"github.com/openzipkin/zipkin-go"
+	zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
 )
 
 var (
diff --git a/tracing/jsonrpc/go-server/app/server.go b/tracing/jsonrpc/go-server/app/server.go
index 90f6042..caae38f 100644
--- a/tracing/jsonrpc/go-server/app/server.go
+++ b/tracing/jsonrpc/go-server/app/server.go
@@ -26,24 +26,22 @@ import (
 )
 
 import (
-	"github.com/opentracing/opentracing-go"
-	zipkinot "github.com/openzipkin-contrib/zipkin-go-opentracing"
-	"github.com/openzipkin/zipkin-go"
-	zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
-)
-
-import (
+	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
+	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
+	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/protocol/jsonrpc"
 	_ "github.com/apache/dubbo-go/registry/protocol"
+	_ "github.com/apache/dubbo-go/registry/zookeeper"
 
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
+	"github.com/opentracing/opentracing-go"
 
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
-	_ "github.com/apache/dubbo-go/registry/zookeeper"
+	zipkinot "github.com/openzipkin-contrib/zipkin-go-opentracing"
+
+	"github.com/openzipkin/zipkin-go"
+	zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
 )
 
 var (
diff --git a/tracing/jsonrpc/go-server/app/user_provider.go b/tracing/jsonrpc/go-server/app/user_provider.go
index cb6a60e..211473e 100644
--- a/tracing/jsonrpc/go-server/app/user_provider.go
+++ b/tracing/jsonrpc/go-server/app/user_provider.go
@@ -8,12 +8,12 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
+
 	"github.com/opentracing/opentracing-go"
-)
 
-import (
-	"github.com/apache/dubbo-go/config"
 	perrors "github.com/pkg/errors"
 )
 
diff --git a/tracing/jsonrpc/go-server/app/user_provider1.go b/tracing/jsonrpc/go-server/app/user_provider1.go
index 4b7af5a..8007234 100644
--- a/tracing/jsonrpc/go-server/app/user_provider1.go
+++ b/tracing/jsonrpc/go-server/app/user_provider1.go
@@ -7,11 +7,10 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
-)
 
-import (
-	"github.com/apache/dubbo-go/config"
 	perrors "github.com/pkg/errors"
 )
 
diff --git a/tracing/jsonrpc/go-server/app/user_provider2.go b/tracing/jsonrpc/go-server/app/user_provider2.go
index a5f9766..1726574 100644
--- a/tracing/jsonrpc/go-server/app/user_provider2.go
+++ b/tracing/jsonrpc/go-server/app/user_provider2.go
@@ -7,12 +7,11 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
-	perrors "github.com/pkg/errors"
-)
 
-import (
-	"github.com/apache/dubbo-go/config"
+	perrors "github.com/pkg/errors"
 )
 
 func init() {
diff --git a/version/go-client/cmd/client.go b/version/go-client/cmd/client.go
index a01094f..fb697de 100644
--- a/version/go-client/cmd/client.go
+++ b/version/go-client/cmd/client.go
@@ -33,6 +33,7 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/version/go-server-v1/pkg/user.go b/version/go-server-v1/pkg/user.go
index 26f1017..cd1ad81 100644
--- a/version/go-server-v1/pkg/user.go
+++ b/version/go-server-v1/pkg/user.go
@@ -24,6 +24,7 @@ import (
 
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/version/go-server-v1/tests/integration/userprovider_test.go b/version/go-server-v1/tests/integration/userprovider_test.go
index 6f9dadd..b38dcdb 100644
--- a/version/go-server-v1/tests/integration/userprovider_test.go
+++ b/version/go-server-v1/tests/integration/userprovider_test.go
@@ -28,7 +28,6 @@ import (
 	"github.com/stretchr/testify/assert"
 )
 
-// in conf/client.yaml
 func TestGetUser(t *testing.T) {
 	user := &User{}
 	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
diff --git a/version/go-server-v2/pkg/user.go b/version/go-server-v2/pkg/user.go
index f2d6ff6..8560a48 100644
--- a/version/go-server-v2/pkg/user.go
+++ b/version/go-server-v2/pkg/user.go
@@ -25,6 +25,7 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	"github.com/apache/dubbo-go/config"
+
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/version/go-server-v2/tests/integration/userprovider_test.go b/version/go-server-v2/tests/integration/userprovider_test.go
index a5d8154..fb83b01 100644
--- a/version/go-server-v2/tests/integration/userprovider_test.go
+++ b/version/go-server-v2/tests/integration/userprovider_test.go
@@ -28,7 +28,6 @@ import (
 	"github.com/stretchr/testify/assert"
 )
 
-// in conf/client.yaml
 func TestGetUser(t *testing.T) {
 	user := &User{}
 	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)

[dubbo-go-samples] 08/18: Ftr: Add integration test multi-server support (#158)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e834a934184c098cce3ee6acddfe58a6c19a89b9
Author: EnableAsync <43...@users.noreply.github.com>
AuthorDate: Thu Jul 8 14:28:21 2021 +0800

    Ftr: Add integration test multi-server support (#158)
    
    Fix: add consumer config for middle
    
    Ftr: add multi-zone to integration testing
    
    Fix: start_integrate_test.sh
    
    Fix: start_integrate_test.sh
    
    Fix: test.sh
---
 chain/build/test.sh      | 44 ++++++++++++++++++++++++++++++++++++++++++++
 integrate_test.sh        | 22 ++++++++++++++--------
 multi-zone/build/test.sh | 45 +++++++++++++++++++++++++++++++++++++++++++++
 start_integrate_test.sh  | 13 ++++++++-----
 4 files changed, 111 insertions(+), 13 deletions(-)

diff --git a/chain/build/test.sh b/chain/build/test.sh
new file mode 100755
index 0000000..8cff497
--- /dev/null
+++ b/chain/build/test.sh
@@ -0,0 +1,44 @@
+# 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, softwarek
+# 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.
+
+# This file is for integration testing only
+
+P_DIR="$1"
+
+# start zookeeper
+make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename "$P_DIR")" BASE_DIR="$P_DIR"/dist -f build/Makefile docker-up
+
+# start server
+make PROJECT_DIR="$P_DIR"/backend PROJECT_NAME="$(basename "$P_DIR"/backend)" BASE_DIR="$P_DIR"/backend/dist -f build/Makefile start
+make PROJECT_DIR="$P_DIR"/middle PROJECT_NAME="$(basename "$P_DIR"/middle)" CONF_CONSUMER_FILE_PATH="$P_DIR"/middle/conf/client.yml BASE_DIR="$P_DIR"/middle/dist -f build/Makefile start
+
+# start integration testing
+make PROJECT_DIR="$P_DIR"/backend PROJECT_NAME="$(basename "$P_DIR"/backend)" BASE_DIR="$P_DIR"/backend/dist -f build/Makefile integration
+result=$?
+
+make PROJECT_DIR="$P_DIR"/middle PROJECT_NAME="$(basename "$P_DIR"/middle)" BASE_DIR="$P_DIR"/middle/dist CONF_CONSUMER_FILE_PATH="$P_DIR"/middle/conf/test.yml -f build/Makefile integration
+result2=$?
+
+if [ $result -eq 0 ]; then
+    result=$result2
+fi
+
+# stop server and clean
+make PROJECT_DIR="$P_DIR"/backend PROJECT_NAME="$(basename "$P_DIR"/backend)" BASE_DIR="$P_DIR"/backend/dist -f build/Makefile clean
+make PROJECT_DIR="$P_DIR"/middle PROJECT_NAME="$(basename "$P_DIR"/middle)" BASE_DIR="$P_DIR"/middle/dist -f build/Makefile clean
+
+make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename "$P_DIR")" BASE_DIR="$P_DIR"/dist -f build/Makefile docker-down
+
+exit $result
diff --git a/integrate_test.sh b/integrate_test.sh
old mode 100644
new mode 100755
index 16e6915..bd6d076
--- a/integrate_test.sh
+++ b/integrate_test.sh
@@ -15,22 +15,28 @@
 #  limitations under the License.
 
 if [ -z "$1" ]; then
-  echo 'Provide test directory please, like : ./integrate_test.sh $(pwd)/helloworld/go-server .'
-  exit
+    echo "Provide test directory please, like : ./integrate_test.sh $(pwd)/helloworld/go-server ."
+    exit
 fi
 
 P_DIR=$(pwd)/$1
 
-make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile docker-up
+if [ -f "$P_DIR"/build/test.sh ]; then
+    "$P_DIR"/build/test.sh "$P_DIR"
+    result=$?
+    exit $((result))
+fi
+
+make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename $P_DIR)" BASE_DIR="$P_DIR"/dist -f build/Makefile docker-up
 
 # start server
-make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile start
+make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename $P_DIR)" BASE_DIR="$P_DIR"/dist -f build/Makefile start
 # start integration
-make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile integration
+make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename $P_DIR)" BASE_DIR="$P_DIR"/dist -f build/Makefile integration
 result=$?
 # stop server
-make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile clean
+make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename $P_DIR)" BASE_DIR="$P_DIR"/dist -f build/Makefile clean
 
-make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile docker-down
+make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename $P_DIR)" BASE_DIR="$P_DIR"/dist -f build/Makefile docker-down
 
-exit $((result))
\ No newline at end of file
+exit $((result))
diff --git a/multi-zone/build/test.sh b/multi-zone/build/test.sh
new file mode 100755
index 0000000..836fea6
--- /dev/null
+++ b/multi-zone/build/test.sh
@@ -0,0 +1,45 @@
+# 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, softwarek
+# 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.
+
+# This file is for integration testing only
+
+P_DIR="$1"
+
+# start zookeeper
+make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename "$P_DIR")" BASE_DIR="$P_DIR"/dist -f build/Makefile docker-up
+
+# start server
+make PROJECT_DIR="$P_DIR"/go-server-hz PROJECT_NAME="$(basename "$P_DIR"/go-server-hz)" BASE_DIR="$P_DIR"/go-server-hz/dist -f build/Makefile start
+make PROJECT_DIR="$P_DIR"/go-server-sh PROJECT_NAME="$(basename "$P_DIR"/go-server-sh)" BASE_DIR="$P_DIR"/go-server-sh/dist -f build/Makefile start
+
+# start integration testing
+make PROJECT_DIR="$P_DIR"/go-server-hz PROJECT_NAME="$(basename "$P_DIR"/go-server-hz)" BASE_DIR="$P_DIR"/go-server-hz/dist -f build/Makefile integration
+result=$?
+
+make PROJECT_DIR="$P_DIR"/go-server-sh PROJECT_NAME="$(basename "$P_DIR"/go-server-sh)" BASE_DIR="$P_DIR"/go-server-sh/dist -f build/Makefile integration
+result2=$?
+
+if [ $result -eq 0 ]; then
+    result=$result2
+fi
+
+# stop server and clean
+make PROJECT_DIR="$P_DIR"/go-server-hz PROJECT_NAME="$(basename "$P_DIR"/go-server-hz)" BASE_DIR="$P_DIR"/go-server-hz/dist -f build/Makefile clean
+make PROJECT_DIR="$P_DIR"/go-server-sh PROJECT_NAME="$(basename "$P_DIR"/go-server-sh)" BASE_DIR="$P_DIR"/go-server-sh/dist -f build/Makefile clean
+
+# stop zookeeper
+make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename "$P_DIR")" BASE_DIR="$P_DIR"/dist -f build/Makefile docker-down
+
+exit $result
\ No newline at end of file
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index 181d229..0ebe563 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -23,6 +23,9 @@ array=("async/go-server")
 # attachment
 array+=("attachment/go-server")
 
+# chain
+array+=("chain")
+
 # config-api
 array+=("config-api/go-server")
 
@@ -65,6 +68,9 @@ array+=("helloworld/go-server")
 # metric
 array+=("metric/go-server")
 
+# multi-zone
+array+=("multi-zone")
+
 # registry
 #array+=("registry/etcd/go-server")
 #array+=("registry/nacos/go-server")
@@ -87,12 +93,9 @@ array+=("version/go-server-v2")
 
 for((i=0;i<${#array[*]};i++))
 do
-	./integrate_test.sh ${array[i]}
+	./integrate_test.sh "${array[i]}"
 	result=$?
 	if [ $result -gt 0 ]; then
-    exit $result
+        exit $result
 	fi
 done
-
-# chain
-# multi-zone
\ No newline at end of file

[dubbo-go-samples] 03/18: Merge pull request #113 from zhaoyunxing92/1.5.7-rc

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit af15597dcba1d23eeb87b83492cbf6e7294b146b
Merge: fc4f6db 62acd57
Author: Laurence <45...@users.noreply.github.com>
AuthorDate: Sun May 16 20:10:07 2021 +0800

    Merge pull request #113 from zhaoyunxing92/1.5.7-rc
    
    update dubbo-go version 1.5.7-rc

 .run/{ => async}/async-client.run.xml              |    2 +-
 .run/{ => async}/async-server.run.xml              |    2 +-
 .run/{ => async}/async-test.run.xml                |    0
 .run/{ => attachment}/attachment-go-client.run.xml |    2 +-
 .run/{ => attachment}/attachment-go-server.run.xml |    2 +-
 .../attatchment-test.run.xml}                      |    6 +-
 .run/{ => chain}/chain-backend-server.run.xml      |    2 +-
 .run/{ => chain}/chain-backend-test.run.xml        |    2 +-
 .run/{ => chain}/chain-frontend-client.run.xml     |    2 +-
 .run/{ => chain}/chain-middle-server.run.xml       |    2 +-
 .run/{ => chain}/chain-middle-test.run.xml         |    2 +-
 .run/{ => config-api}/config-api-client.run.xml    |    2 +-
 .run/{ => config-api}/config-api-server.run.xml    |    2 +-
 .run/{ => config-api}/config-api-test.run.xml      |    0
 .../configcenter-apollo-client.run.xml             |    2 +-
 .../configcenter-apollo-server.run.xml             |    2 +-
 .../configcenter-apollo-test.run.xml               |    2 +-
 .../configcenter-nacos-client.run.xml              |    2 +-
 .../configcenter-nacos-server.run.xml              |    2 +-
 .../configcenter-nacos-test.run.xml                |    2 +-
 .../configcenter-zookeeper-client.run.xml          |    2 +-
 .../configcenter-zookeeper-server.run.xml          |    2 +-
 .../configcenter-zookeeper-test.run.xml            |    2 +-
 .run/{ => context}/context-client.run.xml          |    2 +-
 .run/{ => context}/context-server.run.xml          |    2 +-
 .run/{ => context}/context-test.run.xml            |    0
 .run/{ => direct}/direct-go-client.run.xml         |    2 +-
 .run/{ => direct}/direct-go-server.run.xml         |    2 +-
 .../direct-test.run.xml}                           |    6 +-
 .run/{ => docker}/docker-client.run.xml            |    2 +-
 .run/{ => docker}/docker-server.run.xml            |    2 +-
 .run/{ => docker}/docker-test.run.xml              |    0
 .run/{ => filter}/filter-custom-client.run.xml     |    2 +-
 .run/{ => filter}/filter-custom-server.run.xml     |    2 +-
 .run/{ => filter}/filter-custom-test.run.xml       |    2 +-
 .run/{ => filter}/filter-sentinel-client.run.xml   |    2 +-
 .run/{ => filter}/filter-sentinel-server.run.xml   |    2 +-
 .run/{ => filter}/filter-sentinel-test.run.xml     |    2 +-
 .../filter-tpslimit-client.run.xml}                |   10 +-
 .run/{ => filter}/filter-tpslimit-server.run.xml   |    2 +-
 .run/{ => filter}/filter-tpslimit-test.run.xml     |    2 +-
 .run/game/game-go-game-server.run.xml              |   16 +
 .run/game/game-go-game-test.run.xml                |   17 +
 .run/game/game-go-gate-server.run.xml              |   16 +
 .run/game/game-go-gate-test.run.xml                |   17 +
 .run/general/general-dubbo-go-client.run.xml       |   15 +
 .../general-dubbo-go-server.run.xml}               |   10 +-
 .../general-dubbo-test.run.xml}                    |    6 +-
 .run/general/general-grpc-go-client.run.xml        |   15 +
 .run/general/general-grpc-go-server.run.xml        |   15 +
 .run/general/general-grpc-stream-go-client.run.xml |   15 +
 .run/general/general-grpc-stream-go-server.run.xml |   15 +
 .../general-grpc-test.run.xml}                     |    6 +-
 .run/general/general-grpc-unary-go-client.run.xml  |   15 +
 .run/general/general-grpc-unary-go-server.run.xml  |   15 +
 .run/{ => general}/general-rest-go-client.run.xml  |    2 +-
 .run/{ => general}/general-rest-go-server.run.xml  |    2 +-
 .run/{ => generic}/generic-go-client.run.xml       |    2 +-
 .run/{ => generic}/generic-go-server.run.xml       |    2 +-
 .../generic-test.run.xml}                          |    6 +-
 .run/{ => group}/group-go-client.run.xml           |    2 +-
 .run/group/group-go-server-group-a-test.run.xml    |   17 +
 .run/{ => group}/group-go-server-group-a.run.xml   |    2 +-
 .run/group/group-go-server-group-b-test.run.xml    |   17 +
 .run/{ => group}/group-go-server-group-b.run.xml   |    2 +-
 .run/{ => helloworld}/helloworld-go-client.run.xml |    2 +-
 .run/{ => helloworld}/helloworld-go-server.run.xml |    2 +-
 .../helloworld-test.run.xml}                       |    6 +-
 .run/{ => metric}/metric-go-client.run.xml         |    2 +-
 .run/{ => metric}/metric-go-server.run.xml         |    2 +-
 .../metric-test.run.xml}                           |    6 +-
 .../multi-registry-go-client.run.xml               |   15 +
 .../multi-registry-go-server.run.xml               |   15 +
 .../multi-registry-test.run.xml}                   |    6 +-
 .run/multi-zone/multi-zone-client.run.xml          |   15 +
 .run/multi-zone/multi-zone-server-hz-test.run.xml  |   17 +
 .run/multi-zone/multi-zone-server-hz.run.xml       |   15 +
 .run/multi-zone/multi-zone-server-sh-test.run.xml  |   17 +
 .run/multi-zone/multi-zone-server-sh.run.xml       |   15 +
 .run/router/condition-client.run.xml               |   16 +
 .run/router/condition-server.run.xml               |   15 +
 .../condition-test.run.xml}                        |    7 +-
 .run/router/tag-client.run.xml                     |   16 +
 .run/router/tag-server.run.xml                     |   15 +
 .../tag-test.run.xml}                              |    7 +-
 .run/seata/seata_client_app.run.xml                |   16 +
 .run/seata/seata_order-svc_app.run.xml             |   16 +
 .run/seata/seata_product-svc_app.run.xml           |   16 +
 .run/shopping-order/go-client.run.xml              |   16 +
 .run/shopping-order/order-go-server.run.xml        |   16 +
 .run/shopping-order/product-go-server.run.xml      |   16 +
 .run/tls/tls-client.run.xml                        |   15 +
 .run/tls/tls-server.run.xml                        |   15 +
 .run/tls/tls-test.run.xml                          |   17 +
 .run/version/version-go-client.run.xml             |   15 +
 .run/version/version-go-server-v1.run.xml          |   15 +
 .run/version/version-go-server-v2.run.xml          |   15 +
 HOWTO.md                                           |  151 +
 HOWTO_zh.md                                        |  141 +
 LICENSE                                            |  201 +
 README.md                                          |   41 +
 README_zh.md                                       |   41 +
 async/README.md                                    |   46 +
 async/README_zh.md                                 |   45 +
 async/go-client/cmd/client.go                      |   66 +
 async/go-client/conf/client.yml                    |   61 +
 async/go-client/conf/log.yml                       |   28 +
 async/go-client/pkg/user.go                        |   78 +
 async/go-server/cmd/server.go                      |   78 +
 async/go-server/conf/client.yml                    |   61 +
 async/go-server/conf/log.yml                       |   28 +
 async/go-server/conf/server.yml                    |   55 +
 async/go-server/docker/docker-compose.yml          |    9 +
 async/go-server/pkg/user.go                        |   60 +
 async/go-server/tests/integration/main_test.go     |   87 +
 .../tests/integration/userprovider_test.go         |   52 +
 attachment/README.md                               |   35 +
 attachment/README_zh.md                            |   37 +
 attachment/go-client/cmd/client.go                 |   67 +
 attachment/go-client/conf/client.yml               |   59 +
 attachment/go-client/conf/log.yml                  |   27 +
 attachment/go-client/pkg/user.go                   |   42 +
 attachment/go-server/cmd/server.go                 |   79 +
 attachment/go-server/conf/client.yml               |   59 +
 attachment/go-server/conf/log.yml                  |   27 +
 attachment/go-server/conf/server.yml               |   55 +
 attachment/go-server/docker/docker-compose.yml     |    9 +
 attachment/go-server/pkg/user.go                   |   72 +
 .../go-server/tests/integration/main_test.go       |   73 +
 .../tests/integration/userprovider_test.go         |   47 +
 build/Makefile                                     |  139 +
 chain/README.md                                    |   77 +
 chain/README_zh.md                                 |   80 +
 chain/backend/cmd/server.go                        |   76 +
 chain/backend/conf/client.yml                      |   67 +
 chain/backend/conf/log.yml                         |   27 +
 chain/backend/conf/server.yml                      |   73 +
 chain/backend/pkg/cat_service.go                   |   51 +
 chain/backend/pkg/dog_service.go                   |   51 +
 chain/backend/pkg/lion_service.go                  |   51 +
 chain/backend/pkg/tiger_service.go                 |   51 +
 chain/backend/tests/integration/main_test.go       |   94 +
 chain/backend/tests/integration/services_test.go   |   54 +
 chain/docker/docker-compose.yml                    |    9 +
 chain/frontend/cmd/client.go                       |   56 +
 chain/frontend/conf/client.yml                     |   59 +
 chain/frontend/conf/log.yml                        |   27 +
 chain/frontend/pkg/people.go                       |   36 +
 chain/middle/cmd/server.go                         |   76 +
 chain/middle/conf/client.yml                       |   67 +
 chain/middle/conf/log.yml                          |   27 +
 chain/middle/conf/server.yml                       |   52 +
 chain/middle/conf/test.yml                         |   59 +
 chain/middle/pkg/american_service.go               |   78 +
 chain/middle/pkg/chinese_service.go                |   78 +
 chain/middle/tests/integration/main_test.go        |   70 +
 chain/middle/tests/integration/services_test.go    |   46 +
 ci.sh                                              |   29 +
 config-api/README.md                               |   65 +
 config-api/README_zh.md                            |   68 +
 config-api/go-client/cmd/client.go                 |   83 +
 config-api/go-client/conf/client.yml               |   59 +
 config-api/go-client/conf/log.yml                  |   27 +
 config-api/go-client/pkg/user.go                   |   42 +
 config-api/go-server/cmd/server.go                 |  100 +
 config-api/go-server/conf/client.yml               |   59 +
 config-api/go-server/conf/log.yml                  |   27 +
 config-api/go-server/conf/server.yml               |   55 +
 config-api/go-server/docker/docker-compose.yml     |    9 +
 config-api/go-server/pkg/user.go                   |   60 +
 .../go-server/tests/integration/main_test.go       |   72 +
 .../tests/integration/userprovider_test.go         |   38 +
 configcenter/README.md                             |   96 +
 configcenter/README_zh.md                          |  100 +
 configcenter/apollo/go-client/cmd/client.go        |   66 +
 configcenter/apollo/go-client/conf/client.yml      |   66 +
 configcenter/apollo/go-client/conf/log.yml         |   28 +
 configcenter/apollo/go-client/pkg/user.go          |   42 +
 configcenter/apollo/go-server/cmd/server.go        |   81 +
 configcenter/apollo/go-server/conf/client.yml      |   66 +
 configcenter/apollo/go-server/conf/log.yml         |   28 +
 configcenter/apollo/go-server/conf/server.yml      |   62 +
 .../apollo/go-server/docker/docker-compose.yml     |   40 +
 .../apollo/go-server/docker/sql/apolloconfigdb.sql |  433 ++
 .../apollo/go-server/docker/sql/apolloportaldb.sql |  368 ++
 configcenter/apollo/go-server/pkg/user.go          |   60 +
 .../go-server/tests/integration/main_test.go       |   71 +
 .../tests/integration/userprovider_test.go         |   39 +
 configcenter/nacos/go-client/cmd/client.go         |   66 +
 configcenter/nacos/go-client/conf/client.yml       |   64 +
 configcenter/nacos/go-client/conf/log.yml          |   28 +
 configcenter/nacos/go-client/pkg/user.go           |   42 +
 configcenter/nacos/go-server/cmd/server.go         |   79 +
 configcenter/nacos/go-server/conf/client.yml       |   64 +
 configcenter/nacos/go-server/conf/log.yml          |   28 +
 configcenter/nacos/go-server/conf/server.yml       |   60 +
 .../nacos/go-server/docker/docker-compose.yml      |   17 +
 configcenter/nacos/go-server/pkg/user.go           |   60 +
 .../nacos/go-server/tests/integration/main_test.go |   71 +
 .../tests/integration/userprovider_test.go         |   39 +
 configcenter/zookeeper/go-client/cmd/client.go     |   66 +
 configcenter/zookeeper/go-client/conf/client.yml   |   61 +
 configcenter/zookeeper/go-client/conf/log.yml      |   28 +
 configcenter/zookeeper/go-client/pkg/user.go       |   42 +
 configcenter/zookeeper/go-server/cmd/server.go     |   79 +
 configcenter/zookeeper/go-server/conf/client.yml   |   59 +
 configcenter/zookeeper/go-server/conf/log.yml      |   28 +
 configcenter/zookeeper/go-server/conf/server.yml   |   61 +
 .../zookeeper/go-server/docker/docker-compose.yml  |    8 +
 configcenter/zookeeper/go-server/pkg/user.go       |   60 +
 .../go-server/tests/integration/main_test.go       |   70 +
 .../tests/integration/userprovider_test.go         |   39 +
 context/README.md                                  |   58 +
 context/README_zh.md                               |   61 +
 context/go-client/cmd/client.go                    |   71 +
 context/go-client/conf/client.yml                  |   59 +
 context/go-client/conf/log.yml                     |   27 +
 context/go-client/pkg/user.go                      |   45 +
 context/go-server/cmd/server.go                    |   78 +
 context/go-server/conf/client.yml                  |   59 +
 context/go-server/conf/log.yml                     |   27 +
 context/go-server/conf/server.yml                  |   55 +
 context/go-server/docker/docker-compose.yml        |    9 +
 context/go-server/pkg/user.go                      |   76 +
 context/go-server/tests/integration/main_test.go   |   74 +
 .../tests/integration/userprovider_test.go         |   56 +
 direct/README.md                                   |  172 +
 direct/README_zh.md                                |  174 +
 direct/go-client/cmd/client.go                     |   67 +
 direct/go-client/conf/client.yml                   |   28 +
 direct/go-client/conf/log.yml                      |   28 +
 direct/go-client/pkg/user.go                       |   42 +
 direct/go-server/cmd/server.go                     |   78 +
 direct/go-server/conf/client.yml                   |   61 +
 direct/go-server/conf/log.yml                      |   28 +
 direct/go-server/conf/server.yml                   |   54 +
 direct/go-server/docker/docker-compose.yml         |    9 +
 direct/go-server/pkg/user.go                       |   60 +
 direct/go-server/tests/integration/main_test.go    |   70 +
 .../tests/integration/userprovider_test.go         |   40 +
 docker/Dockerfile                                  |    5 +
 docker/README.md                                   |   49 +
 docker/README_zh.md                                |   52 +
 docker/docker_run.sh                               |    5 +
 docker/go-client/cmd/client.go                     |   65 +
 docker/go-client/conf/client.yml                   |   59 +
 docker/go-client/conf/log.yml                      |   27 +
 docker/go-client/pkg/user.go                       |   42 +
 docker/go-server/cmd/server.go                     |   78 +
 docker/go-server/conf/client.yml                   |   59 +
 docker/go-server/conf/log.yml                      |   27 +
 docker/go-server/conf/server.yml                   |   55 +
 docker/go-server/docker/docker-compose.yml         |    9 +
 docker/go-server/pkg/user.go                       |   60 +
 docker/go-server/tests/integration/main_test.go    |   70 +
 .../tests/integration/userprovider_test.go         |   39 +
 filter/custom/README.md                            |   93 +
 filter/custom/README_zh.md                         |   93 +
 filter/custom/go-client/cmd/client.go              |   65 +
 filter/custom/go-client/conf/client.yml            |   59 +
 filter/custom/go-client/conf/log.yml               |   28 +
 filter/custom/go-client/pkg/user.go                |   42 +
 filter/custom/go-server/cmd/server.go              |   78 +
 filter/custom/go-server/conf/client.yml            |   59 +
 filter/custom/go-server/conf/log.yml               |   28 +
 filter/custom/go-server/conf/server.yml            |   58 +
 filter/custom/go-server/docker/docker-compose.yml  |    9 +
 filter/custom/go-server/pkg/custom_filter.go       |   92 +
 filter/custom/go-server/pkg/user.go                |   60 +
 .../go-server/tests/integration/main_test.go       |   70 +
 .../tests/integration/userprovider_test.go         |   38 +
 filter/sentinel/README.md                          |   48 +
 filter/sentinel/README_zh.md                       |   48 +
 filter/sentinel/go-client/cmd/client.go            |   92 +
 filter/sentinel/go-client/conf/client.yml          |   62 +
 filter/sentinel/go-client/conf/log.yml             |   28 +
 filter/sentinel/go-client/pkg/user.go              |   42 +
 filter/sentinel/go-server/cmd/server.go            |  104 +
 filter/sentinel/go-server/conf/client.yml          |   59 +
 filter/sentinel/go-server/conf/log.yml             |   28 +
 filter/sentinel/go-server/conf/server.yml          |   58 +
 .../sentinel/go-server/docker/docker-compose.yml   |    9 +
 filter/sentinel/go-server/pkg/user.go              |   60 +
 .../go-server/tests/integration/main_test.go       |   70 +
 .../tests/integration/userprovider_test.go         |   42 +
 filter/tpslimit/README.md                          |  173 +
 filter/tpslimit/README_zh.md                       |  173 +
 filter/tpslimit/go-client/cmd/client.go            |   64 +
 filter/tpslimit/go-client/conf/client.yml          |   59 +
 filter/tpslimit/go-client/conf/log.yml             |   28 +
 filter/tpslimit/go-client/pkg/user.go              |   43 +
 filter/tpslimit/go-server/cmd/server.go            |   78 +
 filter/tpslimit/go-server/conf/client.yml          |   59 +
 filter/tpslimit/go-server/conf/log.yml             |   28 +
 filter/tpslimit/go-server/conf/server.yml          |   60 +
 .../tpslimit/go-server/docker/docker-compose.yml   |    9 +
 filter/tpslimit/go-server/pkg/limit_strategy.go    |   68 +
 filter/tpslimit/go-server/pkg/reject_handler.go    |  107 +
 filter/tpslimit/go-server/pkg/user.go              |   60 +
 .../go-server/tests/integration/main_test.go       |   70 +
 .../tests/integration/userprovider_test.go         |   50 +
 game/README.md                                     |  268 ++
 game/README_zh.md                                  |  273 ++
 game/go-server-game/cmd/server.go                  |   64 +
 game/go-server-game/conf/client.yml                |   59 +
 game/go-server-game/conf/log.yml                   |   27 +
 game/go-server-game/conf/server.yml                |   57 +
 game/go-server-game/conf/test_client.yml           |   75 +
 game/go-server-game/docker/docker-compose.yml      |    9 +
 game/go-server-game/pkg/consumer.go                |    5 +
 game/go-server-game/pkg/provider.go                |   39 +
 .../tests/integration/gameprovider_test.go         |   32 +
 game/go-server-game/tests/integration/main_test.go |   37 +
 game/go-server-gate/cmd/server.go                  |  123 +
 game/go-server-gate/conf/client.yml                |   62 +
 game/go-server-gate/conf/log.yml                   |   27 +
 game/go-server-gate/conf/server.yml                |   53 +
 game/go-server-gate/conf/test_client.yml           |   67 +
 game/go-server-gate/docker/docker-compose.yml      |    9 +
 game/go-server-gate/pkg/consumer.go                |   28 +
 game/go-server-gate/pkg/provider.go                |   19 +
 .../tests/integration/gateprovider_test.go         |   18 +
 game/go-server-gate/tests/integration/main_test.go |   37 +
 game/pkg/consumer/game/basketball.go               |   16 +
 game/pkg/consumer/gate/basketball.go               |   14 +
 game/pkg/pojo/result.go                            |   15 +
 game/website/.DS_Store                             |  Bin 0 -> 6148 bytes
 game/website/css/style.css                         |   53 +
 game/website/img/bac.png                           |  Bin 0 -> 313830 bytes
 game/website/index.html                            |   51 +
 game/website/js/index.js                           |  100 +
 general/dubbo/go-client/cmd/client.go              |  290 ++
 general/dubbo/go-client/conf/client.yml            |   69 +
 general/dubbo/go-client/conf/log.yml               |   27 +
 general/dubbo/go-client/pkg/user.go                |  134 +
 general/dubbo/go-server/cmd/server.go              |   89 +
 general/dubbo/go-server/conf/client.yml            |   59 +
 general/dubbo/go-server/conf/log.yml               |   27 +
 general/dubbo/go-server/conf/server.yml            |   55 +
 general/dubbo/go-server/docker/docker-compose.yml  |    9 +
 general/dubbo/go-server/pkg/user.go                |  109 +
 general/dubbo/go-server/pkg/user_provider.go       |  128 +
 .../dubbo/go-server/tests/integration/main_test.go |  135 +
 .../tests/integration/userprovider_test.go         |  114 +
 general/dubbo/java-client/2.6/pom.xml              |   79 +
 .../src/main/java/org/apache/dubbo/Consumer.java   |  227 +
 .../2.6/src/main/java/org/apache/dubbo/Gender.java |   23 +
 .../2.6/src/main/java/org/apache/dubbo/User.java   |   83 +
 .../main/java/org/apache/dubbo/UserProvider.java   |   27 +
 .../resources/META-INF/spring/dubbo.consumer.xml   |   41 +
 .../2.6/src/main/resources/log4j.properties        |   19 +
 general/dubbo/java-client/2.7/pom.xml              |  126 +
 .../src/main/java/org/apache/dubbo/Consumer.java   |  227 +
 .../2.7/src/main/java/org/apache/dubbo/Gender.java |   23 +
 .../2.7/src/main/java/org/apache/dubbo/User.java   |   83 +
 .../main/java/org/apache/dubbo/UserProvider.java   |   27 +
 .../resources/META-INF/spring/dubbo.consumer.xml   |   41 +
 .../2.7/src/main/resources/log4j.properties        |   19 +
 general/dubbo/java-server/2.6/pom.xml              |   79 +
 .../2.6/src/main/java/org/apache/dubbo/Gender.java |   23 +
 .../src/main/java/org/apache/dubbo/Provider.java   |   34 +
 .../src/main/java/org/apache/dubbo/Response.java   |   92 +
 .../2.6/src/main/java/org/apache/dubbo/User.java   |   95 +
 .../main/java/org/apache/dubbo/UserProvider.java   |   50 +
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |  143 +
 .../java/org/apache/dubbo/UserProviderImpl.java    |  115 +
 .../resources/META-INF/spring/dubbo.provider.xml   |   36 +
 .../2.6/src/main/resources/log4j.properties        |   20 +
 general/dubbo/java-server/2.7/pom.xml              |  126 +
 .../2.7/src/main/java/org/apache/dubbo/Gender.java |   23 +
 .../src/main/java/org/apache/dubbo/Provider.java   |   34 +
 .../src/main/java/org/apache/dubbo/Response.java   |   92 +
 .../2.7/src/main/java/org/apache/dubbo/User.java   |   95 +
 .../main/java/org/apache/dubbo/UserProvider.java   |   50 +
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |  143 +
 .../java/org/apache/dubbo/UserProviderImpl.java    |  115 +
 .../resources/META-INF/spring/dubbo.provider.xml   |   36 +
 .../2.7/src/main/resources/log4j.properties        |   20 +
 general/grpc/go-client/cmd/client.go               |   61 +
 general/grpc/go-client/conf/client.yml             |   59 +
 general/grpc/go-client/conf/log.yml                |   27 +
 general/grpc/go-client/pkg/hello.go                |   36 +
 general/grpc/go-server/cmd/server.go               |   73 +
 general/grpc/go-server/conf/client.yml             |   59 +
 general/grpc/go-server/conf/log.yml                |   27 +
 general/grpc/go-server/conf/server.yml             |   55 +
 general/grpc/go-server/docker/docker-compose.yml   |   15 +
 general/grpc/go-server/pkg/greeter.go              |   43 +
 .../go-server/tests/integration/greeter_test.go    |   38 +
 .../grpc/go-server/tests/integration/main_test.go  |   64 +
 general/grpc/protobuf/helloworld.pb.go             |  283 ++
 general/grpc/protobuf/helloworld.proto             |   37 +
 general/grpc/protobuf/protobuf.mk                  |   26 +
 general/grpc/stream/go-client/app/Makefile         |    2 +
 general/grpc/stream/go-client/app/client.go        |  141 +
 general/grpc/stream/go-client/app/hello.go         |   50 +
 general/grpc/stream/go-client/app/helloworld.pb.go |  472 ++
 general/grpc/stream/go-client/app/helloworld.proto |   39 +
 general/grpc/stream/go-client/app/version.go       |   22 +
 general/grpc/stream/go-client/assembly/bin/load.sh |  203 +
 .../go-client/assembly/common/app.properties       |   23 +
 .../grpc/stream/go-client/assembly/common/build.sh |   83 +
 .../grpc/stream/go-client/assembly/linux/dev.sh    |   36 +
 .../stream/go-client/assembly/linux/release.sh     |   35 +
 .../grpc/stream/go-client/assembly/linux/test.sh   |   35 +
 general/grpc/stream/go-client/assembly/mac/dev.sh  |   36 +
 .../grpc/stream/go-client/assembly/mac/release.sh  |   34 +
 general/grpc/stream/go-client/assembly/mac/test.sh |   34 +
 .../grpc/stream/go-client/assembly/windows/dev.sh  |   34 +
 .../stream/go-client/assembly/windows/release.sh   |   34 +
 .../grpc/stream/go-client/assembly/windows/test.sh |   34 +
 .../grpc/stream/go-client/profiles/dev/client.yml  |   61 +
 general/grpc/stream/go-client/profiles/dev/log.yml |   28 +
 .../grpc/stream/go-client/profiles/release/log.yml |   28 +
 .../grpc/stream/go-client/profiles/test/client.yml |   63 +
 .../grpc/stream/go-client/profiles/test/log.yml    |   28 +
 general/grpc/stream/go-server/app/greeter.go       |  103 +
 general/grpc/stream/go-server/app/helloworld.pb.go |  472 ++
 general/grpc/stream/go-server/app/helloworld.proto |   39 +
 general/grpc/stream/go-server/app/server.go        |   71 +
 general/grpc/stream/go-server/app/version.go       |   22 +
 general/grpc/stream/go-server/assembly/bin/load.sh |  151 +
 .../go-server/assembly/common/app.properties       |   23 +
 .../grpc/stream/go-server/assembly/common/build.sh |   80 +
 .../grpc/stream/go-server/assembly/linux/dev.sh    |   36 +
 .../stream/go-server/assembly/linux/release.sh     |   36 +
 .../grpc/stream/go-server/assembly/linux/test.sh   |   36 +
 general/grpc/stream/go-server/assembly/mac/dev.sh  |   36 +
 .../grpc/stream/go-server/assembly/mac/release.sh  |   36 +
 general/grpc/stream/go-server/assembly/mac/test.sh |   36 +
 .../grpc/stream/go-server/assembly/windows/dev.sh  |   36 +
 .../stream/go-server/assembly/windows/release.sh   |   36 +
 .../grpc/stream/go-server/assembly/windows/test.sh |   36 +
 general/grpc/stream/go-server/profiles/dev/log.yml |   28 +
 .../grpc/stream/go-server/profiles/dev/server.yml  |   57 +
 .../grpc/stream/go-server/profiles/release/log.yml |   28 +
 .../stream/go-server/profiles/release/server.yml   |   54 +
 .../grpc/stream/go-server/profiles/test/log.yml    |   28 +
 .../grpc/stream/go-server/profiles/test/server.yml |   55 +
 general/grpc/unary/go-client/app/Makefile          |    2 +
 general/grpc/unary/go-client/app/client.go         |   62 +
 general/grpc/unary/go-client/app/hello.go          |   43 +
 general/grpc/unary/go-client/app/helloworld.pb.go  |  284 ++
 general/grpc/unary/go-client/app/helloworld.proto  |   37 +
 general/grpc/unary/go-client/app/version.go        |   22 +
 general/grpc/unary/go-client/assembly/bin/load.sh  |  203 +
 .../unary/go-client/assembly/common/app.properties |   23 +
 .../grpc/unary/go-client/assembly/common/build.sh  |   83 +
 general/grpc/unary/go-client/assembly/linux/dev.sh |   36 +
 .../grpc/unary/go-client/assembly/linux/release.sh |   35 +
 .../grpc/unary/go-client/assembly/linux/test.sh    |   35 +
 general/grpc/unary/go-client/assembly/mac/dev.sh   |   36 +
 .../grpc/unary/go-client/assembly/mac/release.sh   |   34 +
 general/grpc/unary/go-client/assembly/mac/test.sh  |   34 +
 .../grpc/unary/go-client/assembly/windows/dev.sh   |   34 +
 .../unary/go-client/assembly/windows/release.sh    |   34 +
 .../grpc/unary/go-client/assembly/windows/test.sh  |   34 +
 .../grpc/unary/go-client/profiles/dev/client.yml   |   61 +
 general/grpc/unary/go-client/profiles/dev/log.yml  |   28 +
 .../unary/go-client/profiles/release/client.yml    |   61 +
 .../grpc/unary/go-client/profiles/release/log.yml  |   28 +
 .../grpc/unary/go-client/profiles/test/client.yml  |   63 +
 general/grpc/unary/go-client/profiles/test/log.yml |   28 +
 general/grpc/unary/go-server/app/greeter.go        |   46 +
 general/grpc/unary/go-server/app/helloworld.pb.go  |  283 ++
 general/grpc/unary/go-server/app/helloworld.proto  |   37 +
 general/grpc/unary/go-server/app/server.go         |   79 +
 general/grpc/unary/go-server/app/version.go        |   22 +
 general/grpc/unary/go-server/assembly/bin/load.sh  |  151 +
 .../unary/go-server/assembly/common/app.properties |   23 +
 .../grpc/unary/go-server/assembly/common/build.sh  |   80 +
 general/grpc/unary/go-server/assembly/linux/dev.sh |   36 +
 .../grpc/unary/go-server/assembly/linux/release.sh |   36 +
 .../grpc/unary/go-server/assembly/linux/test.sh    |   36 +
 general/grpc/unary/go-server/assembly/mac/dev.sh   |   36 +
 .../grpc/unary/go-server/assembly/mac/release.sh   |   36 +
 general/grpc/unary/go-server/assembly/mac/test.sh  |   36 +
 .../grpc/unary/go-server/assembly/windows/dev.sh   |   36 +
 .../unary/go-server/assembly/windows/release.sh    |   36 +
 .../grpc/unary/go-server/assembly/windows/test.sh  |   36 +
 general/grpc/unary/go-server/profiles/dev/log.yml  |   28 +
 .../grpc/unary/go-server/profiles/dev/server.yml   |   57 +
 .../grpc/unary/go-server/profiles/release/log.yml  |   28 +
 .../unary/go-server/profiles/release/server.yml    |   54 +
 general/grpc/unary/go-server/profiles/test/log.yml |   28 +
 .../grpc/unary/go-server/profiles/test/server.yml  |   57 +
 general/grpc/unary/java-client/build.sh            |   21 +
 general/grpc/unary/java-client/pom.xml             |  247 ++
 .../java-client/src/main/assembly/assembly.xml     |   39 +
 .../src/main/assembly/conf/dubbo.properties        |   13 +
 .../src/main/assembly/conf/log4j.properties        |   19 +
 .../src/main/java/com/ikurento/user/Consumer.java  |  111 +
 .../java-client/src/main/proto/UserService.proto   |   56 +
 .../resources/META-INF/spring/dubbo.consumer.xml   |   43 +
 .../src/main/resources/META-INF/spring/service.xml |   36 +
 general/grpc/unary/java-server/build.sh            |   20 +
 general/grpc/unary/java-server/pom.xml             |  225 +
 general/grpc/unary/java-server/script/debug.sh     |   22 +
 .../java-server/src/main/assembly/assembly.xml     |   45 +
 .../java-server/src/main/assembly/bin/start.bat    |   44 +
 .../java-server/src/main/assembly/bin/start.sh     |  125 +
 .../src/main/assembly/conf/dubbo.properties        |   14 +
 .../src/main/assembly/conf/log4j.properties        |   20 +
 .../src/main/java/com/ikurento/user/Provider.java  |   34 +
 .../java/com/ikurento/user/UserProviderImpl.java   |   70 +
 .../java-server/src/main/proto/UserService.proto   |   56 +
 .../resources/META-INF/spring/dubbo.provider.xml   |   39 +
 .../src/main/resources/log4j.properties            |   20 +
 general/jsonrpc/go-client/app/client.go            |  258 ++
 general/jsonrpc/go-client/app/user.go              |   97 +
 general/jsonrpc/go-client/app/version.go           |   22 +
 general/jsonrpc/go-client/assembly/bin/load.sh     |  203 +
 .../go-client/assembly/common/app.properties       |   23 +
 general/jsonrpc/go-client/assembly/common/build.sh |   83 +
 general/jsonrpc/go-client/assembly/linux/dev.sh    |   36 +
 .../jsonrpc/go-client/assembly/linux/release.sh    |   35 +
 general/jsonrpc/go-client/assembly/linux/test.sh   |   35 +
 general/jsonrpc/go-client/assembly/mac/dev.sh      |   36 +
 general/jsonrpc/go-client/assembly/mac/release.sh  |   34 +
 general/jsonrpc/go-client/assembly/mac/test.sh     |   34 +
 general/jsonrpc/go-client/assembly/windows/dev.sh  |   34 +
 .../jsonrpc/go-client/assembly/windows/release.sh  |   34 +
 general/jsonrpc/go-client/assembly/windows/test.sh |   34 +
 general/jsonrpc/go-client/profiles/dev/client.yml  |   60 +
 general/jsonrpc/go-client/profiles/dev/log.yml     |   28 +
 .../jsonrpc/go-client/profiles/release/client.yml  |   60 +
 general/jsonrpc/go-client/profiles/release/log.yml |   28 +
 general/jsonrpc/go-client/profiles/test/client.yml |   60 +
 general/jsonrpc/go-client/profiles/test/log.yml    |   28 +
 general/jsonrpc/go-server/app/server.go            |   77 +
 general/jsonrpc/go-server/app/user.go              |   73 +
 general/jsonrpc/go-server/app/user_provider.go     |  102 +
 general/jsonrpc/go-server/app/user_provider1.go    |   87 +
 general/jsonrpc/go-server/app/user_provider2.go    |   97 +
 general/jsonrpc/go-server/app/version.go           |   22 +
 general/jsonrpc/go-server/assembly/bin/load.sh     |  151 +
 .../go-server/assembly/common/app.properties       |   23 +
 general/jsonrpc/go-server/assembly/common/build.sh |   80 +
 general/jsonrpc/go-server/assembly/linux/dev.sh    |   36 +
 .../jsonrpc/go-server/assembly/linux/release.sh    |   36 +
 general/jsonrpc/go-server/assembly/linux/test.sh   |   36 +
 general/jsonrpc/go-server/assembly/mac/dev.sh      |   36 +
 general/jsonrpc/go-server/assembly/mac/release.sh  |   36 +
 general/jsonrpc/go-server/assembly/mac/test.sh     |   36 +
 general/jsonrpc/go-server/assembly/windows/dev.sh  |   36 +
 .../jsonrpc/go-server/assembly/windows/release.sh  |   36 +
 general/jsonrpc/go-server/assembly/windows/test.sh |   36 +
 general/jsonrpc/go-server/profiles/dev/log.yml     |   28 +
 general/jsonrpc/go-server/profiles/dev/server.yml  |   75 +
 general/jsonrpc/go-server/profiles/release/log.yml |   28 +
 .../jsonrpc/go-server/profiles/release/server.yml  |   75 +
 general/jsonrpc/go-server/profiles/test/log.yml    |   28 +
 general/jsonrpc/go-server/profiles/test/server.yml |   75 +
 general/jsonrpc/java-client/build.sh               |   21 +
 general/jsonrpc/java-client/pom.xml                |  230 +
 .../java-client/src/main/assembly/assembly.xml     |   39 +
 .../src/main/assembly/conf/dubbo.properties        |   13 +
 .../src/main/assembly/conf/log4j.properties        |   19 +
 .../src/main/java/com/ikurento/user/Consumer.java  |  211 +
 .../src/main/java/com/ikurento/user/Gender.java    |   23 +
 .../src/main/java/com/ikurento/user/User.java      |   83 +
 .../main/java/com/ikurento/user/UserProvider.java  |   25 +
 .../resources/META-INF/spring/dubbo.consumer.xml   |   44 +
 .../src/main/resources/META-INF/spring/service.xml |   38 +
 .../src/main/resources/dubbo.properties            |   13 +
 .../src/main/resources/log4j.properties            |   19 +
 general/jsonrpc/java-server/build.sh               |   20 +
 general/jsonrpc/java-server/pom.xml                |  195 +
 general/jsonrpc/java-server/script/debug.sh        |   22 +
 .../java-server/src/main/assembly/assembly.xml     |   45 +
 .../src/main/assembly/conf/dubbo.properties        |   14 +
 .../src/main/assembly/conf/log4j.properties        |   20 +
 .../src/main/java/com/ikurento/user/Gender.java    |   23 +
 .../src/main/java/com/ikurento/user/Provider.java  |   34 +
 .../src/main/java/com/ikurento/user/Response.java  |   92 +
 .../src/main/java/com/ikurento/user/User.java      |   95 +
 .../main/java/com/ikurento/user/UserProvider.java  |   46 +
 .../com/ikurento/user/UserProviderAnotherImpl.java |  134 +
 .../java/com/ikurento/user/UserProviderImpl.java   |  111 +
 .../resources/META-INF/spring/dubbo.provider.xml   |   39 +
 .../src/main/resources/log4j.properties            |   20 +
 general/rest/README.md                             |   95 +
 general/rest/README_zh.md                          |   97 +
 general/rest/go-client/cmd/client.go               |  210 +
 general/rest/go-client/cmd/version.go              |   22 +
 general/rest/go-client/conf/client.yml             |  108 +
 general/rest/go-client/conf/log.yml                |   28 +
 general/rest/go-client/docker/docker-compose.yml   |    9 +
 general/rest/go-client/pkg/user.go                 |   97 +
 general/rest/go-server/cmd/server.go               |   92 +
 general/rest/go-server/cmd/version.go              |   22 +
 general/rest/go-server/conf/log.yml                |   28 +
 general/rest/go-server/conf/server.yml             |  121 +
 general/rest/go-server/docker/docker-compose.yml   |    9 +
 general/rest/go-server/pkg/user.go                 |   73 +
 general/rest/go-server/pkg/user_provider.go        |   89 +
 general/rest/go-server/pkg/user_provider1.go       |   79 +
 general/rest/go-server/pkg/user_provider2.go       |   89 +
 generic/README.md                                  |   44 +
 generic/README_zh.md                               |   41 +
 generic/go-client/cmd/client.go                    |  134 +
 generic/go-client/conf/client.yml                  |   59 +
 generic/go-client/conf/log.yml                     |   28 +
 generic/go-client/pkg/user.go                      |   33 +
 generic/go-server/cmd/server.go                    |   77 +
 generic/go-server/conf/client.yml                  |   59 +
 generic/go-server/conf/log.yml                     |   28 +
 generic/go-server/conf/server.yml                  |   55 +
 generic/go-server/docker/docker-compose.yml        |    9 +
 generic/go-server/pkg/user.go                      |   76 +
 generic/go-server/tests/integration/main_test.go   |   65 +
 .../tests/integration/userprovider_test.go         |   73 +
 generic/java-client/2.6/pom.xml                    |   79 +
 .../src/main/java/org/apache/dubbo/Consumer.java   |   53 +
 .../2.6/src/main/java/org/apache/dubbo/User.java   |   77 +
 .../2.6/src/main/resources/log4j.properties        |   19 +
 generic/java-client/2.7/pom.xml                    |  126 +
 .../src/main/java/org/apache/dubbo/Consumer.java   |   53 +
 .../2.7/src/main/java/org/apache/dubbo/User.java   |   77 +
 .../2.7/src/main/resources/log4j.properties        |   19 +
 generic/java-server/2.6/pom.xml                    |   79 +
 .../2.6/src/main/java/org/apache/dubbo/Gender.java |   23 +
 .../src/main/java/org/apache/dubbo/Provider.java   |   34 +
 .../src/main/java/org/apache/dubbo/Response.java   |   92 +
 .../2.6/src/main/java/org/apache/dubbo/User.java   |   95 +
 .../main/java/org/apache/dubbo/UserProvider.java   |   50 +
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |  143 +
 .../java/org/apache/dubbo/UserProviderImpl.java    |  115 +
 .../resources/META-INF/spring/dubbo.provider.xml   |   36 +
 .../2.6/src/main/resources/log4j.properties        |   20 +
 generic/java-server/2.7/pom.xml                    |  126 +
 .../2.7/src/main/java/org/apache/dubbo/Gender.java |   23 +
 .../src/main/java/org/apache/dubbo/Provider.java   |   34 +
 .../src/main/java/org/apache/dubbo/Response.java   |   92 +
 .../2.7/src/main/java/org/apache/dubbo/User.java   |   95 +
 .../main/java/org/apache/dubbo/UserProvider.java   |   50 +
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |  143 +
 .../java/org/apache/dubbo/UserProviderImpl.java    |  115 +
 .../resources/META-INF/spring/dubbo.provider.xml   |   36 +
 .../2.7/src/main/resources/log4j.properties        |   20 +
 go.mod                                             |   41 +
 go.sum                                             | 1321 ++++++
 group/README.md                                    |   33 +
 group/README_zh.md                                 |   33 +
 group/go-client/cmd/client.go                      |   76 +
 group/go-client/conf/client.yml                    |   69 +
 group/go-client/conf/log.yml                       |   27 +
 group/go-client/pkg/user.go                        |   50 +
 group/go-server-group-a/cmd/server.go              |   78 +
 group/go-server-group-a/conf/client.yml            |   60 +
 group/go-server-group-a/conf/log.yml               |   27 +
 group/go-server-group-a/conf/server.yml            |   55 +
 group/go-server-group-a/docker/docker-compose.yml  |    9 +
 group/go-server-group-a/pkg/user.go                |   60 +
 .../tests/integration/main_test.go                 |   71 +
 .../tests/integration/userprovider_test.go         |   38 +
 group/go-server-group-b/cmd/server.go              |   78 +
 group/go-server-group-b/conf/client.yml            |   60 +
 group/go-server-group-b/conf/log.yml               |   27 +
 group/go-server-group-b/conf/server.yml            |   55 +
 group/go-server-group-b/docker/docker-compose.yml  |    9 +
 group/go-server-group-b/pkg/user.go                |   60 +
 .../tests/integration/main_test.go                 |   71 +
 .../tests/integration/userprovider_test.go         |   39 +
 helloworld/README.md                               |  135 +
 helloworld/README_zh.md                            |  135 +
 helloworld/go-client/cmd/client.go                 |   64 +
 helloworld/go-client/conf/client.yml               |   59 +
 helloworld/go-client/conf/log.yml                  |   27 +
 helloworld/go-client/pkg/user.go                   |   42 +
 helloworld/go-server/cmd/server.go                 |   79 +
 helloworld/go-server/conf/client.yml               |   59 +
 helloworld/go-server/conf/log.yml                  |   27 +
 helloworld/go-server/conf/server.yml               |   55 +
 helloworld/go-server/docker/docker-compose.yml     |    9 +
 helloworld/go-server/pkg/user.go                   |   52 +
 .../go-server/tests/integration/main_test.go       |   70 +
 .../tests/integration/userprovider_test.go         |   39 +
 integrate_test.sh                                  |   36 +
 metric/README.md                                   |   39 +
 metric/README_zh.md                                |   39 +
 metric/go-client/cmd/client.go                     |   68 +
 metric/go-client/conf/client.yml                   |   59 +
 metric/go-client/conf/log.yml                      |   28 +
 metric/go-client/pkg/user.go                       |   42 +
 metric/go-server/cmd/server.go                     |   88 +
 metric/go-server/conf/client.yml                   |   59 +
 metric/go-server/conf/log.yml                      |   28 +
 metric/go-server/conf/server.yml                   |   61 +
 metric/go-server/docker/config/prometheus.yml      |   18 +
 metric/go-server/docker/docker-compose.yml         |   41 +
 metric/go-server/pkg/user.go                       |   68 +
 metric/go-server/tests/integration/main_test.go    |   71 +
 .../tests/integration/userprovider_test.go         |   47 +
 multi-registry/README.md                           |   35 +
 multi-registry/README_zh.md                        |   36 +
 multi-registry/go-client/cmd/client.go             |   66 +
 multi-registry/go-client/conf/client.yml           |   61 +
 multi-registry/go-client/conf/log.yml              |   28 +
 multi-registry/go-client/pkg/user.go               |   42 +
 multi-registry/go-server/cmd/server.go             |   80 +
 multi-registry/go-server/conf/client.yml           |   61 +
 multi-registry/go-server/conf/log.yml              |   28 +
 multi-registry/go-server/conf/server.yml           |   59 +
 multi-registry/go-server/docker/docker-compose.yml |   25 +
 multi-registry/go-server/pkg/user.go               |   63 +
 .../go-server/tests/integration/main_test.go       |   70 +
 .../tests/integration/userprovider_test.go         |   38 +
 multi-zone/README.md                               |   79 +
 multi-zone/README_zh.md                            |   79 +
 multi-zone/docker/docker-compose.yml               |   13 +
 multi-zone/go-client/cmd/client.go                 |   76 +
 multi-zone/go-client/conf/client.yml               |   68 +
 multi-zone/go-client/conf/log.yml                  |   28 +
 multi-zone/go-client/pkg/user.go                   |   42 +
 .../go-client/tests/integration/main_test.go       |   51 +
 .../tests/integration/userprovider_test.go         |   53 +
 multi-zone/go-server-hz/cmd/server.go              |   79 +
 multi-zone/go-server-hz/conf/client.yml            |   61 +
 multi-zone/go-server-hz/conf/log.yml               |   28 +
 multi-zone/go-server-hz/conf/server.yml            |   56 +
 multi-zone/go-server-hz/pkg/user.go                |   54 +
 .../go-server-hz/tests/integration/main_test.go    |   70 +
 .../tests/integration/userprovider_test.go         |   38 +
 multi-zone/go-server-sh/cmd/server.go              |   79 +
 multi-zone/go-server-sh/conf/client.yml            |   61 +
 multi-zone/go-server-sh/conf/log.yml               |   28 +
 multi-zone/go-server-sh/conf/server.yml            |   56 +
 multi-zone/go-server-sh/pkg/user.go                |   54 +
 .../go-server-sh/tests/integration/main_test.go    |   72 +
 .../tests/integration/userprovider_test.go         |   38 +
 registry/etcd/go-client/cmd/client.go              |   65 +
 registry/etcd/go-client/conf/client.yml            |   59 +
 registry/etcd/go-client/conf/log.yml               |   27 +
 registry/etcd/go-client/pkg/user.go                |   42 +
 registry/etcd/go-server/cmd/server.go              |   76 +
 registry/etcd/go-server/conf/client.yml            |   59 +
 registry/etcd/go-server/conf/log.yml               |   27 +
 registry/etcd/go-server/conf/server.yml            |   55 +
 registry/etcd/go-server/docker/docker-compose.yml  |   27 +
 registry/etcd/go-server/pkg/user.go                |   63 +
 .../etcd/go-server/tests/integration/main_test.go  |   70 +
 .../tests/integration/userprovider_test.go         |   38 +
 registry/kubernetes/README.md                      |   29 +
 registry/kubernetes/client.yaml                    |   15 +
 registry/kubernetes/role-binding.yaml              |   11 +
 registry/kubernetes/role.yaml                      |    8 +
 registry/kubernetes/sa.yaml                        |    4 +
 registry/kubernetes/server.yaml                    |   23 +
 registry/nacos/go-client/cmd/client.go             |   64 +
 registry/nacos/go-client/conf/client.yml           |   57 +
 registry/nacos/go-client/conf/log.yml              |   27 +
 registry/nacos/go-client/pkg/user.go               |   42 +
 registry/nacos/go-server/cmd/server.go             |   76 +
 registry/nacos/go-server/conf/client.yml           |   57 +
 registry/nacos/go-server/conf/log.yml              |   27 +
 registry/nacos/go-server/conf/server.yml           |   55 +
 registry/nacos/go-server/docker/docker-compose.yml |   11 +
 registry/nacos/go-server/pkg/user.go               |   63 +
 .../nacos/go-server/tests/integration/main_test.go |   70 +
 .../tests/integration/userprovider_test.go         |   38 +
 registry/servicediscovery/consul/README.md         |   47 +
 registry/servicediscovery/consul/README_zh.md      |   46 +
 .../consul/go-client/cmd/client.go                 |  106 +
 .../consul/go-client/cmd/version.go                |   22 +
 .../consul/go-client/conf/client.yml               |   77 +
 .../servicediscovery/consul/go-client/conf/log.yml |   28 +
 .../consul/go-client/pkg/pojo/user.go              |   42 +
 .../consul/go-server/cmd/server.go                 |   90 +
 .../consul/go-server/cmd/version.go                |   22 +
 .../consul/go-server/conf/client.yml               |   77 +
 .../servicediscovery/consul/go-server/conf/log.yml |   28 +
 .../consul/go-server/conf/server.yml               |   74 +
 .../consul/go-server/docker/docker-compose.yml     |    9 +
 .../consul/go-server/pkg/pojo/user.go              |   60 +
 .../go-server/tests/integration/main_test.go       |   76 +
 .../tests/integration/userprovider_test.go         |   38 +
 registry/servicediscovery/etcd/go-client/FIXME.md  |   36 +
 .../servicediscovery/etcd/go-client/cmd/client.go  |   71 +
 .../etcd/go-client/conf/client.yml                 |   74 +
 .../servicediscovery/etcd/go-client/conf/log.yml   |   27 +
 .../etcd/go-client/conf/server.yml                 |   33 +
 .../servicediscovery/etcd/go-client/pkg/user.go    |   42 +
 .../servicediscovery/etcd/go-server/cmd/server.go  |   81 +
 .../etcd/go-server/conf/client.yml                 |   74 +
 .../servicediscovery/etcd/go-server/conf/log.yml   |   27 +
 .../etcd/go-server/conf/server.yml                 |   71 +
 .../etcd/go-server/docker/docker-compose.yml       |   21 +
 .../servicediscovery/etcd/go-server/pkg/user.go    |   63 +
 .../etcd/go-server/tests/integration/main_test.go  |   75 +
 .../tests/integration/userprovider_test.go         |   38 +
 registry/servicediscovery/file/go-client/FIXME.md  |   26 +
 .../servicediscovery/file/go-client/cmd/client.go  |   70 +
 .../file/go-client/conf/client.yml                 |   64 +
 .../servicediscovery/file/go-client/conf/log.yml   |   27 +
 .../file/go-client/conf/server.yml                 |   23 +
 .../servicediscovery/file/go-client/pkg/user.go    |   42 +
 .../servicediscovery/file/go-server/cmd/server.go  |   81 +
 .../file/go-server/conf/client.yml                 |   63 +
 .../servicediscovery/file/go-server/conf/log.yml   |   27 +
 .../file/go-server/conf/server.yml                 |   61 +
 .../servicediscovery/file/go-server/pkg/user.go    |   63 +
 .../file/go-server/tests/integration/main_test.go  |   74 +
 .../tests/integration/userprovider_test.go         |   38 +
 registry/servicediscovery/nacos/go-client/FIXME.md |   40 +
 .../servicediscovery/nacos/go-client/cmd/client.go |   72 +
 .../nacos/go-client/conf/client.yml                |   77 +
 .../servicediscovery/nacos/go-client/conf/log.yml  |   27 +
 .../nacos/go-client/conf/server.yml                |   37 +
 .../servicediscovery/nacos/go-client/pkg/user.go   |   42 +
 .../servicediscovery/nacos/go-server/cmd/server.go |   82 +
 .../nacos/go-server/conf/client.yml                |   77 +
 .../servicediscovery/nacos/go-server/conf/log.yml  |   27 +
 .../nacos/go-server/conf/server.yml                |   75 +
 .../nacos/go-server/docker/docker-compose.yml      |   11 +
 .../servicediscovery/nacos/go-server/pkg/user.go   |   63 +
 .../nacos/go-server/tests/integration/main_test.go |   76 +
 .../tests/integration/userprovider_test.go         |   38 +
 .../servicediscovery/zookeeper/go-client/FIXME.md  |   40 +
 .../zookeeper/go-client/cmd/client.go              |   70 +
 .../zookeeper/go-client/conf/client.yml            |   73 +
 .../zookeeper/go-client/conf/log.yml               |   27 +
 .../zookeeper/go-client/conf/server.yml            |   33 +
 .../zookeeper/go-client/pkg/user.go                |   42 +
 .../zookeeper/go-server/cmd/server.go              |   81 +
 .../zookeeper/go-server/conf/client.yml            |   73 +
 .../zookeeper/go-server/conf/log.yml               |   27 +
 .../zookeeper/go-server/conf/server.yml            |   71 +
 .../zookeeper/go-server/docker/docker-compose.yml  |    8 +
 .../zookeeper/go-server/pkg/user.go                |   63 +
 .../go-server/tests/integration/main_test.go       |   76 +
 .../tests/integration/userprovider_test.go         |   38 +
 router/README.md                                   |   44 +
 router/README_zh.md                                |   43 +
 router/condition/go-client/cmd/client.go           |   60 +
 router/condition/go-client/conf/client.yml         |   59 +
 router/condition/go-client/conf/log.yml            |   27 +
 router/condition/go-client/conf/router_config.yml  |   13 +
 router/condition/go-client/pkg/user.go             |   42 +
 router/condition/go-server/cmd/server.go           |   80 +
 router/condition/go-server/conf/client.yml         |   59 +
 router/condition/go-server/conf/log.yml            |   27 +
 router/condition/go-server/conf/router_config.yml  |   13 +
 router/condition/go-server/conf/server.yml         |   55 +
 .../condition/go-server/docker/docker-compose.yml  |    9 +
 router/condition/go-server/pkg/user.go             |   52 +
 .../go-server/tests/integration/main_test.go       |   71 +
 .../tests/integration/userprovider_test.go         |   34 +
 router/tag/go-client/cmd/client.go                 |  105 +
 router/tag/go-client/conf/client.yml               |   59 +
 router/tag/go-client/conf/log.yml                  |   27 +
 router/tag/go-client/conf/router_config.yml        |   14 +
 router/tag/go-client/pkg/user.go                   |   42 +
 router/tag/go-server/cmd/server.go                 |   80 +
 router/tag/go-server/conf/client.yml               |   59 +
 router/tag/go-server/conf/log.yml                  |   27 +
 router/tag/go-server/conf/router_config.yml        |   14 +
 router/tag/go-server/conf/server.yml               |   55 +
 router/tag/go-server/docker/docker-compose.yml     |    9 +
 router/tag/go-server/pkg/user.go                   |   52 +
 .../tag/go-server/tests/integration/main_test.go   |   70 +
 .../tests/integration/userprovider_test.go         |   42 +
 seata/client/README.md                             |   12 +
 seata/client/app/client.go                         |  100 +
 seata/client/app/svc/svc.go                        |  153 +
 seata/client/app/version.go                        |   22 +
 seata/client/assembly/bin/load.sh                  |  204 +
 seata/client/assembly/common/app.properties        |   24 +
 seata/client/assembly/common/build.sh              |   83 +
 seata/client/assembly/linux/dev.sh                 |   36 +
 seata/client/assembly/linux/release.sh             |   35 +
 seata/client/assembly/linux/test.sh                |   35 +
 seata/client/assembly/mac/dev.sh                   |   36 +
 seata/client/assembly/mac/release.sh               |   34 +
 seata/client/assembly/mac/test.sh                  |   34 +
 seata/client/assembly/windows/dev.sh               |   34 +
 seata/client/assembly/windows/release.sh           |   34 +
 seata/client/assembly/windows/test.sh              |   34 +
 seata/client/profiles/dev/client.yml               |   65 +
 seata/client/profiles/dev/log.yml                  |   28 +
 seata/client/profiles/dev/seata.yml                |   25 +
 seata/client/profiles/release/client.yml           |   51 +
 seata/client/profiles/release/log.yml              |   28 +
 seata/client/profiles/release/seata.yml            |   27 +
 seata/client/profiles/test/client.yml              |   50 +
 seata/client/profiles/test/log.yml                 |   28 +
 seata/filter/seata_filter.go                       |   43 +
 seata/order-svc/README.md                          |   18 +
 seata/order-svc/app/dao/dao.go                     |  150 +
 seata/order-svc/app/order_svc.go                   |   55 +
 seata/order-svc/app/server.go                      |  113 +
 seata/order-svc/app/version.go                     |   22 +
 seata/order-svc/assembly/bin/load.sh               |  152 +
 seata/order-svc/assembly/common/app.properties     |   24 +
 seata/order-svc/assembly/common/build.sh           |   82 +
 seata/order-svc/assembly/linux/dev.sh              |   36 +
 seata/order-svc/assembly/linux/release.sh          |   36 +
 seata/order-svc/assembly/linux/test.sh             |   36 +
 seata/order-svc/assembly/mac/dev.sh                |   36 +
 seata/order-svc/assembly/mac/release.sh            |   36 +
 seata/order-svc/assembly/mac/test.sh               |   36 +
 seata/order-svc/assembly/windows/dev.sh            |   36 +
 seata/order-svc/assembly/windows/release.sh        |   36 +
 seata/order-svc/assembly/windows/test.sh           |   36 +
 seata/order-svc/profiles/dev/log.yml               |   28 +
 seata/order-svc/profiles/dev/seata.yml             |   29 +
 seata/order-svc/profiles/dev/server.yml            |   57 +
 seata/order-svc/profiles/release/log.yml           |   28 +
 seata/order-svc/profiles/release/seata.yml         |   30 +
 seata/order-svc/profiles/release/server.yml        |   60 +
 seata/order-svc/profiles/test/log.yml              |   28 +
 seata/order-svc/profiles/test/server.yml           |   58 +
 seata/product-svc/README.md                        |   18 +
 seata/product-svc/app/dao/dao.go                   |   75 +
 seata/product-svc/app/product_svc.go               |   55 +
 seata/product-svc/app/server.go                    |  114 +
 seata/product-svc/app/version.go                   |   22 +
 seata/product-svc/assembly/bin/load.sh             |  152 +
 seata/product-svc/assembly/common/app.properties   |   24 +
 seata/product-svc/assembly/common/build.sh         |   82 +
 seata/product-svc/assembly/linux/dev.sh            |   36 +
 seata/product-svc/assembly/linux/release.sh        |   36 +
 seata/product-svc/assembly/linux/test.sh           |   36 +
 seata/product-svc/assembly/mac/dev.sh              |   36 +
 seata/product-svc/assembly/mac/release.sh          |   36 +
 seata/product-svc/assembly/mac/test.sh             |   36 +
 seata/product-svc/assembly/windows/dev.sh          |   36 +
 seata/product-svc/assembly/windows/release.sh      |   36 +
 seata/product-svc/assembly/windows/test.sh         |   36 +
 seata/product-svc/profiles/dev/log.yml             |   28 +
 seata/product-svc/profiles/dev/seata.yml           |   31 +
 seata/product-svc/profiles/dev/server.yml          |   57 +
 seata/product-svc/profiles/release/log.yml         |   28 +
 seata/product-svc/profiles/release/seata.yml       |   31 +
 seata/product-svc/profiles/release/server.yml      |   60 +
 seata/product-svc/profiles/test/log.yml            |   28 +
 seata/product-svc/profiles/test/server.yml         |   58 +
 seata/scripts/seata_order.sql                      |  103 +
 seata/scripts/seata_product.sql                    |  112 +
 shopping-order/Dockerfile                          |   22 +
 shopping-order/README.md                           |  156 +
 shopping-order/README_zh.md                        |  153 +
 shopping-order/docker-compose.yml                  |  113 +
 shopping-order/go-client/cmd/client.go             |   99 +
 shopping-order/go-client/conf/client.yml           |   59 +
 shopping-order/go-client/conf/log.yml              |   26 +
 shopping-order/go-client/conf/seata.yml            |   23 +
 shopping-order/go-client/pkg/svc.go                |  151 +
 .../go-server-common/filter/seata_filter.go        |   56 +
 shopping-order/go-server-order/cmd/order_svc.go    |   54 +
 shopping-order/go-server-order/cmd/server.go       |  110 +
 shopping-order/go-server-order/conf/log.yml        |   26 +
 shopping-order/go-server-order/conf/seata.yml      |   28 +
 shopping-order/go-server-order/conf/server.yml     |   51 +
 .../go-server-order/docker/docker-compose.yml      |    9 +
 shopping-order/go-server-order/pkg/dao/dao.go      |  150 +
 .../go-server-product/cmd/product_svc.go           |   53 +
 shopping-order/go-server-product/cmd/server.go     |  112 +
 shopping-order/go-server-product/conf/log.yml      |   26 +
 shopping-order/go-server-product/conf/seata.yml    |   28 +
 shopping-order/go-server-product/conf/server.yml   |   51 +
 .../go-server-product/docker/docker-compose.yml    |    9 +
 shopping-order/go-server-product/pkg/dao/dao.go    |   81 +
 shopping-order/go.mod                              |   22 +
 shopping-order/go.sum                              | 1226 ++++++
 shopping-order/grafana/dashboards.yml              |   11 +
 shopping-order/grafana/dashboards/nacos_rev2.json  | 4582 ++++++++++++++++++++
 shopping-order/grafana/prometheus.yml              |   20 +
 shopping-order/mysql/mysqld.cnf                    |   37 +
 shopping-order/mysql/seata.sql                     |   62 +
 shopping-order/mysql/seata_order.sql               |  104 +
 shopping-order/mysql/seata_product.sql             |  115 +
 shopping-order/nacos/custom.properties             |   19 +
 .../prometheus/prometheus-standalone.yaml          |   34 +
 shopping-order/seata/file.conf                     |   65 +
 shopping-order/seata/registry.conf                 |   97 +
 start_integrate_test.sh                            |   98 +
 tls/README.md                                      |   61 +
 tls/README_zh.md                                   |   64 +
 tls/certs/ca.key                                   |   16 +
 tls/certs/ca.pem                                   |   15 +
 tls/certs/client.key                               |   16 +
 tls/certs/client.pem                               |   18 +
 tls/certs/server.key                               |   16 +
 tls/certs/server.pem                               |   18 +
 tls/go-client/cmd/client.go                        |  106 +
 tls/go-client/conf/client.yml                      |   57 +
 tls/go-client/conf/log.yml                         |   27 +
 tls/go-client/pkg/user.go                          |   42 +
 tls/go-server/cmd/server.go                        |   99 +
 tls/go-server/conf/client.yml                      |   57 +
 tls/go-server/conf/log.yml                         |   28 +
 tls/go-server/conf/server.yml                      |   56 +
 tls/go-server/docker/docker-compose.yml            |    9 +
 tls/go-server/pkg/user.go                          |   52 +
 tls/go-server/tests/integration/main_test.go       |   79 +
 .../tests/integration/userprovider_test.go         |   39 +
 tracing/dubbo/go-client/app/client.go              |  121 +
 tracing/dubbo/go-client/app/user.go                |   56 +
 tracing/dubbo/go-client/app/version.go             |   22 +
 tracing/dubbo/go-client/assembly/bin/load.sh       |  203 +
 .../dubbo/go-client/assembly/common/app.properties |   23 +
 tracing/dubbo/go-client/assembly/common/build.sh   |   83 +
 tracing/dubbo/go-client/assembly/linux/dev.sh      |   36 +
 tracing/dubbo/go-client/assembly/linux/release.sh  |   35 +
 tracing/dubbo/go-client/assembly/linux/test.sh     |   35 +
 tracing/dubbo/go-client/assembly/mac/dev.sh        |   36 +
 tracing/dubbo/go-client/assembly/mac/release.sh    |   34 +
 tracing/dubbo/go-client/assembly/mac/test.sh       |   34 +
 tracing/dubbo/go-client/assembly/windows/dev.sh    |   34 +
 .../dubbo/go-client/assembly/windows/release.sh    |   34 +
 tracing/dubbo/go-client/assembly/windows/test.sh   |   34 +
 tracing/dubbo/go-client/profiles/dev/client.yml    |   61 +
 tracing/dubbo/go-client/profiles/dev/log.yml       |   28 +
 .../dubbo/go-client/profiles/release/client.yml    |   60 +
 tracing/dubbo/go-client/profiles/release/log.yml   |   28 +
 tracing/dubbo/go-client/profiles/test/client.yml   |   59 +
 tracing/dubbo/go-client/profiles/test/log.yml      |   28 +
 tracing/dubbo/go-server/app/server.go              |  110 +
 tracing/dubbo/go-server/app/user.go                |   67 +
 tracing/dubbo/go-server/app/version.go             |   22 +
 tracing/dubbo/go-server/assembly/bin/load.sh       |  151 +
 .../dubbo/go-server/assembly/common/app.properties |   23 +
 tracing/dubbo/go-server/assembly/common/build.sh   |   80 +
 tracing/dubbo/go-server/assembly/linux/dev.sh      |   36 +
 tracing/dubbo/go-server/assembly/linux/release.sh  |   36 +
 tracing/dubbo/go-server/assembly/linux/test.sh     |   36 +
 tracing/dubbo/go-server/assembly/mac/dev.sh        |   36 +
 tracing/dubbo/go-server/assembly/mac/release.sh    |   36 +
 tracing/dubbo/go-server/assembly/mac/test.sh       |   36 +
 tracing/dubbo/go-server/assembly/windows/dev.sh    |   36 +
 .../dubbo/go-server/assembly/windows/release.sh    |   36 +
 tracing/dubbo/go-server/assembly/windows/test.sh   |   36 +
 tracing/dubbo/go-server/profiles/dev/log.yml       |   28 +
 tracing/dubbo/go-server/profiles/dev/server.yml    |   58 +
 tracing/dubbo/go-server/profiles/release/log.yml   |   28 +
 .../dubbo/go-server/profiles/release/server.yml    |   62 +
 tracing/dubbo/go-server/profiles/test/log.yml      |   28 +
 tracing/dubbo/go-server/profiles/test/server.yml   |   62 +
 tracing/dubbo/java-client/build.sh                 |   21 +
 tracing/dubbo/java-client/pom.xml                  |  230 +
 .../java-client/src/main/assembly/assembly.xml     |   43 +
 .../src/main/java/com/ikurento/user/Consumer.java  |   60 +
 .../src/main/java/com/ikurento/user/User.java      |   76 +
 .../main/java/com/ikurento/user/UserProvider.java  |   18 +
 .../resources/META-INF/spring/dubbo.consumer.xml   |   37 +
 .../src/main/resources/META-INF/spring/service.xml |   27 +
 .../src/main/resources/dubbo.properties            |   13 +
 .../src/main/resources/log4j.properties            |   19 +
 tracing/dubbo/java-server/build.sh                 |   20 +
 tracing/dubbo/java-server/pom.xml                  |  196 +
 tracing/dubbo/java-server/script/debug.sh          |   23 +
 .../java-server/src/main/assembly/assembly.xml     |   44 +
 .../src/main/java/com/ikurento/user/Provider.java  |   33 +
 .../src/main/java/com/ikurento/user/User.java      |   86 +
 .../main/java/com/ikurento/user/UserProvider.java  |   24 +
 .../java/com/ikurento/user/UserProviderImpl.java   |   30 +
 .../resources/META-INF/spring/dubbo.provider.xml   |   33 +
 .../src/main/resources/dubbo.properties            |   14 +
 .../src/main/resources/log4j.properties            |   20 +
 tracing/grpc/README.md                             |   46 +
 tracing/grpc/go-client/app/Makefile                |    2 +
 tracing/grpc/go-client/app/client.go               |  107 +
 tracing/grpc/go-client/app/hello.go                |   48 +
 tracing/grpc/go-client/app/helloworld.pb.go        |  284 ++
 tracing/grpc/go-client/app/helloworld.proto        |   37 +
 tracing/grpc/go-client/app/version.go              |   22 +
 tracing/grpc/go-client/assembly/bin/load.sh        |  203 +
 .../grpc/go-client/assembly/common/app.properties  |   23 +
 tracing/grpc/go-client/assembly/common/build.sh    |   83 +
 tracing/grpc/go-client/assembly/linux/dev.sh       |   36 +
 tracing/grpc/go-client/assembly/linux/release.sh   |   35 +
 tracing/grpc/go-client/assembly/linux/test.sh      |   35 +
 tracing/grpc/go-client/assembly/mac/dev.sh         |   36 +
 tracing/grpc/go-client/assembly/mac/release.sh     |   34 +
 tracing/grpc/go-client/assembly/mac/test.sh        |   34 +
 tracing/grpc/go-client/assembly/windows/dev.sh     |   34 +
 tracing/grpc/go-client/assembly/windows/release.sh |   34 +
 tracing/grpc/go-client/assembly/windows/test.sh    |   34 +
 tracing/grpc/go-client/profiles/dev/client.yml     |   61 +
 tracing/grpc/go-client/profiles/dev/log.yml        |   28 +
 tracing/grpc/go-client/profiles/release/client.yml |   61 +
 tracing/grpc/go-client/profiles/release/log.yml    |   28 +
 tracing/grpc/go-client/profiles/test/client.yml    |   63 +
 tracing/grpc/go-client/profiles/test/log.yml       |   28 +
 tracing/grpc/go-server/app/greeter.go              |   50 +
 tracing/grpc/go-server/app/helloworld.pb.go        |  284 ++
 tracing/grpc/go-server/app/helloworld.proto        |   37 +
 tracing/grpc/go-server/app/server.go               |   91 +
 tracing/grpc/go-server/app/version.go              |   22 +
 tracing/grpc/go-server/assembly/bin/load.sh        |  151 +
 .../grpc/go-server/assembly/common/app.properties  |   23 +
 tracing/grpc/go-server/assembly/common/build.sh    |   80 +
 tracing/grpc/go-server/assembly/linux/dev.sh       |   36 +
 tracing/grpc/go-server/assembly/linux/release.sh   |   36 +
 tracing/grpc/go-server/assembly/linux/test.sh      |   36 +
 tracing/grpc/go-server/assembly/mac/dev.sh         |   36 +
 tracing/grpc/go-server/assembly/mac/release.sh     |   36 +
 tracing/grpc/go-server/assembly/mac/test.sh        |   36 +
 tracing/grpc/go-server/assembly/windows/dev.sh     |   36 +
 tracing/grpc/go-server/assembly/windows/release.sh |   36 +
 tracing/grpc/go-server/assembly/windows/test.sh    |   36 +
 tracing/grpc/go-server/profiles/dev/log.yml        |   28 +
 tracing/grpc/go-server/profiles/dev/server.yml     |   57 +
 tracing/grpc/go-server/profiles/release/log.yml    |   28 +
 tracing/grpc/go-server/profiles/release/server.yml |   54 +
 tracing/grpc/go-server/profiles/test/log.yml       |   28 +
 tracing/grpc/go-server/profiles/test/server.yml    |   57 +
 tracing/jsonrpc/go-client/app/client.go            |  285 ++
 tracing/jsonrpc/go-client/app/user.go              |   97 +
 tracing/jsonrpc/go-client/app/version.go           |   22 +
 tracing/jsonrpc/go-client/assembly/bin/load.sh     |  203 +
 .../go-client/assembly/common/app.properties       |   23 +
 tracing/jsonrpc/go-client/assembly/common/build.sh |   83 +
 tracing/jsonrpc/go-client/assembly/linux/dev.sh    |   36 +
 .../jsonrpc/go-client/assembly/linux/release.sh    |   35 +
 tracing/jsonrpc/go-client/assembly/linux/test.sh   |   35 +
 tracing/jsonrpc/go-client/assembly/mac/dev.sh      |   36 +
 tracing/jsonrpc/go-client/assembly/mac/release.sh  |   34 +
 tracing/jsonrpc/go-client/assembly/mac/test.sh     |   34 +
 tracing/jsonrpc/go-client/assembly/windows/dev.sh  |   34 +
 .../jsonrpc/go-client/assembly/windows/release.sh  |   34 +
 tracing/jsonrpc/go-client/assembly/windows/test.sh |   34 +
 tracing/jsonrpc/go-client/profiles/dev/client.yml  |   62 +
 tracing/jsonrpc/go-client/profiles/dev/log.yml     |   28 +
 .../jsonrpc/go-client/profiles/release/client.yml  |   60 +
 tracing/jsonrpc/go-client/profiles/release/log.yml |   28 +
 tracing/jsonrpc/go-client/profiles/test/client.yml |   60 +
 tracing/jsonrpc/go-client/profiles/test/log.yml    |   28 +
 tracing/jsonrpc/go-server/app/server.go            |  109 +
 tracing/jsonrpc/go-server/app/user.go              |   73 +
 tracing/jsonrpc/go-server/app/user_provider.go     |  114 +
 tracing/jsonrpc/go-server/app/user_provider1.go    |   87 +
 tracing/jsonrpc/go-server/app/user_provider2.go    |   97 +
 tracing/jsonrpc/go-server/app/version.go           |   22 +
 tracing/jsonrpc/go-server/assembly/bin/load.sh     |  151 +
 .../go-server/assembly/common/app.properties       |   23 +
 tracing/jsonrpc/go-server/assembly/common/build.sh |   80 +
 tracing/jsonrpc/go-server/assembly/linux/dev.sh    |   36 +
 .../jsonrpc/go-server/assembly/linux/release.sh    |   36 +
 tracing/jsonrpc/go-server/assembly/linux/test.sh   |   36 +
 tracing/jsonrpc/go-server/assembly/mac/dev.sh      |   36 +
 tracing/jsonrpc/go-server/assembly/mac/release.sh  |   36 +
 tracing/jsonrpc/go-server/assembly/mac/test.sh     |   36 +
 tracing/jsonrpc/go-server/assembly/windows/dev.sh  |   36 +
 .../jsonrpc/go-server/assembly/windows/release.sh  |   36 +
 tracing/jsonrpc/go-server/assembly/windows/test.sh |   36 +
 tracing/jsonrpc/go-server/profiles/dev/log.yml     |   28 +
 tracing/jsonrpc/go-server/profiles/dev/server.yml  |   76 +
 tracing/jsonrpc/go-server/profiles/release/log.yml |   28 +
 .../jsonrpc/go-server/profiles/release/server.yml  |   75 +
 tracing/jsonrpc/go-server/profiles/test/log.yml    |   28 +
 tracing/jsonrpc/go-server/profiles/test/server.yml |   75 +
 version/README.md                                  |  139 +
 version/README_zh.md                               |  130 +
 version/go-api/pkg/user.go                         |   43 +
 version/go-client/cmd/client.go                    |   74 +
 version/go-client/conf/client.yml                  |   37 +
 version/go-client/conf/log.yml                     |   28 +
 version/go-server-v1/cmd/server.go                 |   87 +
 version/go-server-v1/conf/client.yml               |   60 +
 version/go-server-v1/conf/log.yml                  |   28 +
 version/go-server-v1/conf/server.yml               |   55 +
 version/go-server-v1/docker/docker-compose.yml     |    9 +
 version/go-server-v1/pkg/user.go                   |   50 +
 .../go-server-v1/tests/integration/main_test.go    |   71 +
 .../tests/integration/userprovider_test.go         |   41 +
 version/go-server-v2/cmd/server.go                 |   85 +
 version/go-server-v2/conf/client.yml               |   60 +
 version/go-server-v2/conf/log.yml                  |   28 +
 version/go-server-v2/conf/server.yml               |   55 +
 version/go-server-v2/docker/docker-compose.yml     |    9 +
 version/go-server-v2/pkg/user.go                   |   53 +
 .../go-server-v2/tests/integration/main_test.go    |   71 +
 .../tests/integration/userprovider_test.go         |   41 +
 1175 files changed, 69821 insertions(+), 85 deletions(-)

[dubbo-go-samples] 06/18: change dubbo-go version (#115)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ec98badb4b89430cc3c9f05d18e9a89ce644bf5d
Author: Xin.Zh <dr...@foxmail.com>
AuthorDate: Sun May 16 22:15:28 2021 +0800

    change dubbo-go version (#115)
---
 go.mod | 5 ++---
 go.sum | 4 ++++
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/go.mod b/go.mod
index 6d28f3d..e8ae5c3 100644
--- a/go.mod
+++ b/go.mod
@@ -5,8 +5,8 @@ require (
 	github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 // indirect
 	github.com/alibaba/sentinel-golang v1.0.2
 	github.com/apache/dubbo-getty v1.4.3
-	github.com/apache/dubbo-go v1.5.6
-	github.com/apache/dubbo-go-hessian2 v1.9.1
+	github.com/apache/dubbo-go v1.5.7-rc1
+	github.com/apache/dubbo-go-hessian2 v1.9.2
 	github.com/bwmarrin/snowflake v0.3.0
 	github.com/docker/go-connections v0.4.0 // indirect
 	github.com/dubbogo/gost v1.11.2
@@ -33,7 +33,6 @@ require (
 )
 
 replace (
-	github.com/apache/dubbo-go => github.com/apache/dubbo-go v1.5.7-rc1
 	github.com/envoyproxy/go-control-plane => github.com/envoyproxy/go-control-plane v0.8.0
 	google.golang.org/grpc => google.golang.org/grpc v1.26.0
 )
diff --git a/go.sum b/go.sum
index 6f9977b..357b231 100644
--- a/go.sum
+++ b/go.sum
@@ -95,10 +95,14 @@ github.com/apache/dubbo-go v1.5.6-rc2 h1:e9ziyPQx65n/dyGrA0/ce263jV2+nnSzzpdu9Lb
 github.com/apache/dubbo-go v1.5.6-rc2/go.mod h1:wLJvPWbnrf6/bhoohBT404QK4t2JoNcckMw+/fJ9P+c=
 github.com/apache/dubbo-go v1.5.6 h1:iTMrXo8jB6DxKOhM83NKDnGA8c9ZPnofCOos/GvKyF8=
 github.com/apache/dubbo-go v1.5.6/go.mod h1:wLJvPWbnrf6/bhoohBT404QK4t2JoNcckMw+/fJ9P+c=
+github.com/apache/dubbo-go v1.5.7-rc1 h1:PBK/Ox35L8QH85eBmHAqsg/EL2SnO+xwcCw67lQ4z4Q=
+github.com/apache/dubbo-go v1.5.7-rc1/go.mod h1:wLJvPWbnrf6/bhoohBT404QK4t2JoNcckMw+/fJ9P+c=
 github.com/apache/dubbo-go-hessian2 v1.8.2 h1:CQq2Mmlrk6Fqmudwl9Dqps8drTrBFnmXRlzgOjj0FqA=
 github.com/apache/dubbo-go-hessian2 v1.8.2/go.mod h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
 github.com/apache/dubbo-go-hessian2 v1.9.1 h1:ceSsU/9z/gv3hzUpl8GceEhQvF3i0BionfdHUGMmjHU=
 github.com/apache/dubbo-go-hessian2 v1.9.1/go.mod h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
+github.com/apache/dubbo-go-hessian2 v1.9.2 h1:XuI8KvENSfKiAhiCBS4RNihmQDoPNmGWKT3gTui0p9A=
+github.com/apache/dubbo-go-hessian2 v1.9.2/go.mod h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
 github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
 github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
 github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA=

[dubbo-go-samples] 15/18: fix: enhance 1.5 integrate test samples (#182)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8a158c4d6aff4b8cc28c4e6d28d108a71639c47c
Author: Laurence <45...@users.noreply.github.com>
AuthorDate: Fri Jul 30 16:44:31 2021 +0800

    fix: enhance 1.5 integrate test samples (#182)
    
    * fix: fix 1.5 samples
    
    * fix: add registry samples
    
    * fix: add multi-zone health check script
    
    * fix: change tls samples cert root
    
    * fix: fix tls path bug
    
    * fix: refresh router samples status
---
 .DS_Store                                          | Bin 0 -> 6148 bytes
 .gitignore                                         |   1 +
 .run/etcd-client.run.xml                           |  15 ++
 .run/etcd-server.run.xml                           |  15 ++
 .run/etcd-servicediscovery-client.run.xml          |  15 ++
 .run/etcd-servicediscovery-server.run.xml          |  15 ++
 .run/game/game-go-game-server.run.xml              |   2 +-
 .run/general-jsonrpc-go-client.run.xml             |  15 ++
 .run/general-jsonrpc-go-server.run.xml             |  15 ++
 .run/general/general-rest-go-server.run.xml        |  26 +--
 .run/nacos-client.run.xml                          |  15 ++
 .run/nacos-server.run.xml                          |  15 ++
 .run/nacos-servicediscovery-client.run.xml         |  15 ++
 .run/nacos-servicediscovery-server.run.xml         |  15 ++
 .run/tls/tls-client.run.xml                        |   5 +-
 .run/tls/tls-server.run.xml                        |   5 +-
 .run/zk-client.run.xml                             |  15 ++
 .run/zk-server.run.xml                             |  15 ++
 .run/zk-servicediscovery-client.run.xml            |  15 ++
 .run/zk-servicediscovery-server.run.xml            |  15 ++
 game/.DS_Store                                     | Bin 0 -> 6148 bytes
 game/go-server-game/cmd/server.go                  |  46 ++---
 game/go-server-game/pkg/provider.go                | 162 ++++++++--------
 .../tests/integration/gameprovider_test.go         |  30 +--
 game/go-server-game/tests/integration/main_test.go |  10 +-
 game/go-server-gate/cmd/server.go                  | 171 +++++++++--------
 game/go-server-gate/pkg/consumer.go                |  10 +-
 game/go-server-gate/pkg/provider.go                |   6 +-
 .../tests/integration/gateprovider_test.go         |  14 +-
 game/go-server-gate/tests/integration/main_test.go |  10 +-
 game/pkg/consumer/game/basketball.go               |   8 +-
 game/pkg/consumer/gate/basketball.go               |   4 +-
 game/pkg/pojo/info.go                              |   4 +-
 game/pkg/pojo/result.go                            |  10 +-
 general/dubbo/go-server/cmd/server.go              |   4 -
 general/grpc/unary/go-client/app/hello.go          |   1 -
 general/jsonrpc/go-client/assembly/bin/load.sh     | 203 ---------------------
 .../go-client/assembly/common/app.properties       |  23 ---
 general/jsonrpc/go-client/assembly/common/build.sh |  83 ---------
 general/jsonrpc/go-client/assembly/linux/dev.sh    |  36 ----
 .../jsonrpc/go-client/assembly/linux/release.sh    |  35 ----
 general/jsonrpc/go-client/assembly/linux/test.sh   |  35 ----
 general/jsonrpc/go-client/assembly/mac/dev.sh      |  36 ----
 general/jsonrpc/go-client/assembly/mac/release.sh  |  34 ----
 general/jsonrpc/go-client/assembly/mac/test.sh     |  34 ----
 general/jsonrpc/go-client/assembly/windows/dev.sh  |  34 ----
 .../jsonrpc/go-client/assembly/windows/release.sh  |  34 ----
 general/jsonrpc/go-client/assembly/windows/test.sh |  34 ----
 general/jsonrpc/go-client/{app => cmd}/client.go   |   0
 general/jsonrpc/go-client/{app => cmd}/user.go     |   0
 .../{go-server/app => go-client/cmd}/version.go    |   0
 .../go-client/{profiles/dev => conf}/client.yml    |   6 -
 .../profiles/dev => go-client/conf}/log.yml        |   0
 .../jsonrpc/go-client/profiles/release/client.yml  |  60 ------
 general/jsonrpc/go-client/profiles/release/log.yml |  28 ---
 general/jsonrpc/go-client/profiles/test/client.yml |  60 ------
 general/jsonrpc/go-server/assembly/bin/load.sh     | 151 ---------------
 .../go-server/assembly/common/app.properties       |  23 ---
 general/jsonrpc/go-server/assembly/common/build.sh |  80 --------
 general/jsonrpc/go-server/assembly/linux/dev.sh    |  36 ----
 .../jsonrpc/go-server/assembly/linux/release.sh    |  36 ----
 general/jsonrpc/go-server/assembly/linux/test.sh   |  36 ----
 general/jsonrpc/go-server/assembly/mac/dev.sh      |  36 ----
 general/jsonrpc/go-server/assembly/mac/release.sh  |  36 ----
 general/jsonrpc/go-server/assembly/mac/test.sh     |  36 ----
 general/jsonrpc/go-server/assembly/windows/dev.sh  |  36 ----
 .../jsonrpc/go-server/assembly/windows/release.sh  |  36 ----
 general/jsonrpc/go-server/assembly/windows/test.sh |  36 ----
 general/jsonrpc/go-server/{app => cmd}/server.go   |   0
 general/jsonrpc/go-server/{app => cmd}/user.go     |   0
 .../go-server/{app => cmd}/user_provider.go        |   0
 .../go-server/{app => cmd}/user_provider1.go       |   0
 .../go-server/{app => cmd}/user_provider2.go       |   0
 .../{go-client/app => go-server/cmd}/version.go    |   0
 .../profiles/dev => go-server/conf}/client.yml     |  30 +--
 .../go-server/{profiles/test => conf}/log.yml      |   0
 .../go-server/{profiles/dev => conf}/server.yml    |   9 -
 .../jsonrpc/go-server/docker/docker-compose.yml    |   8 +
 general/jsonrpc/go-server/profiles/release/log.yml |  28 ---
 .../jsonrpc/go-server/profiles/release/server.yml  |  75 --------
 general/jsonrpc/go-server/profiles/test/server.yml |  75 --------
 .../go-server/tests/integration/main_test.go       |  46 ++---
 .../tests/integration/userprovider_test.go}        |  30 ++-
 general/rest/go-client/cmd/client.go               |   1 -
 general/rest/go-server/conf/client.yml             |  35 ++++
 .../rest}/go-server/tests/integration/main_test.go |  39 ++--
 .../tests/integration/userprovider_test.go}        |  23 ++-
 go.mod                                             |  17 +-
 go.sum                                             | 175 +++++-------------
 multi-zone/go-server-hz/docker/docker-compose.yml  |  13 ++
 .../go-server-hz/docker/docker-health-check.sh     |  18 ++
 multi-zone/go-server-sh/docker/docker-compose.yml  |  13 ++
 .../go-server-sh/docker/docker-health-check.sh     |  18 ++
 .../zookeeper/go-client/cmd/client.go              |  61 +++----
 registry/zookeeper/go-client/conf/client.yml       |  57 ++++++
 .../zookeeper/go-client/conf}/log.yml              |   3 +-
 .../zookeeper/go-client/pkg/user.go                |  26 ++-
 .../zookeeper/go-server/cmd}/server.go             |  13 +-
 registry/zookeeper/go-server/conf/client.yml       |  57 ++++++
 .../zookeeper/go-server/conf}/log.yml              |   9 +-
 registry/zookeeper/go-server/conf/server.yml       |  55 ++++++
 .../zookeeper/go-server/docker/docker-compose.yml  |   8 +
 .../zookeeper/go-server/pkg/user.go                |  42 +++--
 .../go-server/tests/integration/main_test.go       |  11 --
 .../tests/integration/userprovider_test.go         |  23 ++-
 start_integrate_test.sh                            |  27 ++-
 tls/go-client/cmd/client.go                        |  16 +-
 tls/go-server/cmd/server.go                        |  19 +-
 tls/go-server/tests/integration/main_test.go       |  10 +-
 109 files changed, 1045 insertions(+), 2137 deletions(-)

diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..7f109e8
Binary files /dev/null and b/.DS_Store differ
diff --git a/.gitignore b/.gitignore
index f96f7f0..bd2f65a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
 *.dll
 *.so
 *.dylib
+*.DS_Store
 
 dist/
 *.log
diff --git a/.run/etcd-client.run.xml b/.run/etcd-client.run.xml
new file mode 100644
index 0000000..cf82dfa
--- /dev/null
+++ b/.run/etcd-client.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="etcd-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="registry">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/etcd/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/registry/etcd/go-client/conf/client.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/etcd/go-client/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-client/cmd/client.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/etcd-server.run.xml b/.run/etcd-server.run.xml
new file mode 100644
index 0000000..cc50598
--- /dev/null
+++ b/.run/etcd-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="etcd-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="registry">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/registry/etcd/go-server/conf/server.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/etcd/go-server/conf/log.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/etcd/go-server/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-server/cmd/server.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/etcd-servicediscovery-client.run.xml b/.run/etcd-servicediscovery-client.run.xml
new file mode 100644
index 0000000..4aabf5f
--- /dev/null
+++ b/.run/etcd-servicediscovery-client.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="etcd-servicediscovery-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="service-discovery">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/servicediscovery/etcd/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/registry/servicediscovery/etcd/go-client/conf/client.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/servicediscovery/etcd/go-client/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-client/cmd/client.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/etcd-servicediscovery-server.run.xml b/.run/etcd-servicediscovery-server.run.xml
new file mode 100644
index 0000000..61b6943
--- /dev/null
+++ b/.run/etcd-servicediscovery-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="etcd-servicediscovery-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="service-discovery">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/registry/servicediscovery/etcd/go-server/conf/server.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/servicediscovery/etcd/go-server/conf/log.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/servicediscovery/etcd/go-server/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-server/cmd/server.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/game/game-go-game-server.run.xml b/.run/game/game-go-game-server.run.xml
index 0adc8a3..60869f8 100644
--- a/.run/game/game-go-game-server.run.xml
+++ b/.run/game/game-go-game-server.run.xml
@@ -8,9 +8,9 @@
       <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/game/go-server-game/conf/client.yml" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/game/go-server-game/cmd/server.go" />
     <package value="github.com/apache/dubbo-go-samples/game/go-server-game/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/game/go-server-game/cmd/server.go" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/general-jsonrpc-go-client.run.xml b/.run/general-jsonrpc-go-client.run.xml
new file mode 100644
index 0000000..8ce15b1
--- /dev/null
+++ b/.run/general-jsonrpc-go-client.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="general-jsonrpc-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="general">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/jsonrpc/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/jsonrpc/go-client/conf/client.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/general/jsonrpc/go-client/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/general/rest/go-client/cmd/client.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/general-jsonrpc-go-server.run.xml b/.run/general-jsonrpc-go-server.run.xml
new file mode 100644
index 0000000..d36c5fb
--- /dev/null
+++ b/.run/general-jsonrpc-go-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="general-jsonrpc-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="general">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/jsonrpc/go-server/conf/log.yml" />
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/jsonrpc/go-server/conf/server.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/general/jsonrpc/go-server/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/general/rest/go-server/cmd/server.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/general/general-rest-go-server.run.xml b/.run/general/general-rest-go-server.run.xml
index 65c90bd..d4be83a 100644
--- a/.run/general/general-rest-go-server.run.xml
+++ b/.run/general/general-rest-go-server.run.xml
@@ -1,15 +1,15 @@
 <component name="ProjectRunConfigurationManager">
-    <configuration default="false" name="general-rest-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="general">
-        <module name="dubbo-go-samples" />
-        <working_directory value="$PROJECT_DIR$" />
-        <envs>
-            <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/rest/go-server/conf/log.yml" />
-            <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/rest/go-server/conf/server.yml" />
-        </envs>
-        <kind value="PACKAGE" />
-        <filePath value="$PROJECT_DIR$/general/rest/go-server/cmd/server.go" />
-        <package value="github.com/apache/dubbo-go-samples/general/rest/go-server/cmd" />
-        <directory value="$PROJECT_DIR$" />
-        <method v="2" />
-    </configuration>
+  <configuration default="false" name="general-rest-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="general">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/rest/go-server/conf/log.yml" />
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/rest/go-server/conf/server.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/general/rest/go-server/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/general/rest/go-server/cmd/server.go" />
+    <method v="2" />
+  </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/nacos-client.run.xml b/.run/nacos-client.run.xml
new file mode 100644
index 0000000..5ec522b
--- /dev/null
+++ b/.run/nacos-client.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="nacos-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="registry">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/nacos/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/registry/nacos/go-client/conf/client.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/nacos/go-client/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-client/cmd/client.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/nacos-server.run.xml b/.run/nacos-server.run.xml
new file mode 100644
index 0000000..2521aa4
--- /dev/null
+++ b/.run/nacos-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="nacos-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="registry">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/registry/nacos/go-server/conf/server.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/nacos/go-server/conf/log.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/nacos/go-server/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-server/cmd/server.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/nacos-servicediscovery-client.run.xml b/.run/nacos-servicediscovery-client.run.xml
new file mode 100644
index 0000000..202626a
--- /dev/null
+++ b/.run/nacos-servicediscovery-client.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="nacos-servicediscovery-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="service-discovery">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/servicediscovery/nacos/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/registry/servicediscovery/nacos/go-client/conf/client.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/servicediscovery/nacos/go-client/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-client/cmd/client.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/nacos-servicediscovery-server.run.xml b/.run/nacos-servicediscovery-server.run.xml
new file mode 100644
index 0000000..d991dbe
--- /dev/null
+++ b/.run/nacos-servicediscovery-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="nacos-servicediscovery-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="service-discovery">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/registry/servicediscovery/nacos/go-server/conf/server.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/servicediscovery/nacos/go-server/conf/log.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/servicediscovery/nacos/go-server/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-server/cmd/server.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/tls/tls-client.run.xml b/.run/tls/tls-client.run.xml
index a529113..b26594c 100644
--- a/.run/tls/tls-client.run.xml
+++ b/.run/tls/tls-client.run.xml
@@ -5,11 +5,12 @@
     <envs>
       <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/tls/go-client/conf/log.yml" />
       <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/tls/go-client/conf/client.yml" />
+      <env name="TLS_CERTS_ROOT" value="$PROJECT_DIR$/tls/certs" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/tls/go-client/cmd/client.go" />
     <package value="github.com/apache/dubbo-go-samples/tls/go-client/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/tls/go-client/cmd/client.go" />
     <method v="2" />
   </configuration>
-</component>
+</component>
\ No newline at end of file
diff --git a/.run/tls/tls-server.run.xml b/.run/tls/tls-server.run.xml
index 1674a9f..77fd0bb 100644
--- a/.run/tls/tls-server.run.xml
+++ b/.run/tls/tls-server.run.xml
@@ -5,11 +5,12 @@
     <envs>
       <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/tls/go-server/conf/server.yml" />
       <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/tls/go-server/conf/log.yml" />
+      <env name="TLS_CERTS_ROOT" value="$PROJECT_DIR$/tls/certs" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/tls/go-server/cmd/server.go" />
     <package value="github.com/apache/dubbo-go-samples/tls/go-server/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/tls/go-server/cmd/server.go" />
     <method v="2" />
   </configuration>
-</component>
+</component>
\ No newline at end of file
diff --git a/.run/zk-client.run.xml b/.run/zk-client.run.xml
new file mode 100644
index 0000000..1902fbc
--- /dev/null
+++ b/.run/zk-client.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="zk-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="registry">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/zookeeper/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/registry/zookeeper/go-client/conf/client.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/zookeeper/go-client/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-client/cmd/client.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/zk-server.run.xml b/.run/zk-server.run.xml
new file mode 100644
index 0000000..a403f73
--- /dev/null
+++ b/.run/zk-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="zk-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="registry">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/registry/zookeeper/go-server/conf/server.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/zookeeper/go-server/conf/log.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/zookeeper/go-server/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-server/cmd/server.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/zk-servicediscovery-client.run.xml b/.run/zk-servicediscovery-client.run.xml
new file mode 100644
index 0000000..0b7f97f
--- /dev/null
+++ b/.run/zk-servicediscovery-client.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="zk-servicediscovery-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="service-discovery">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/servicediscovery/zookeeper/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/registry/servicediscovery/zookeeper/go-client/conf/client.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/servicediscovery/zookeeper/go-client/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-client/cmd/client.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/zk-servicediscovery-server.run.xml b/.run/zk-servicediscovery-server.run.xml
new file mode 100644
index 0000000..cb0254c
--- /dev/null
+++ b/.run/zk-servicediscovery-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="zk-servicediscovery-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="service-discovery">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/registry/servicediscovery/zookeeper/go-server/conf/server.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/servicediscovery/zookeeper/go-server/conf/log.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/registry/servicediscovery/zookeeper/go-server/cmd" />
+    <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/attachment/go-server/cmd/server.go" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/game/.DS_Store b/game/.DS_Store
new file mode 100644
index 0000000..e704284
Binary files /dev/null and b/game/.DS_Store differ
diff --git a/game/go-server-game/cmd/server.go b/game/go-server-game/cmd/server.go
index 16e42d8..9fdc17d 100644
--- a/game/go-server-game/cmd/server.go
+++ b/game/go-server-game/cmd/server.go
@@ -27,38 +27,38 @@ import (
 )
 
 func init() {
-    config.SetProviderService(new(pkg.BasketballService))
+	config.SetProviderService(new(pkg.BasketballService))
 
-    config.SetConsumerService(pkg.GateBasketball)
+	config.SetConsumerService(pkg.GateBasketball)
 
-    hessian.RegisterPOJO(&pojo.Result{})
+	hessian.RegisterPOJO(&pojo.Result{})
 }
 
 func main() {
-    config.Load()
+	config.Load()
 
-    initSignal()
+	initSignal()
 }
 
 func initSignal() {
-    signals := make(chan os.Signal, 1)
+	signals := make(chan os.Signal, 1)
 
-    signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-    for {
-        sig := <-signals
-        logger.Infof("get signal %#s", sig.String())
-        switch sig {
-        case syscall.SIGHUP:
-            logger.Infof("app need reload")
-        default:
-            time.AfterFunc(time.Duration(time.Second*5), func() {
-                logger.Warnf("app exit now by force...")
-                os.Exit(1)
-            })
+	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
+	for {
+		sig := <-signals
+		logger.Infof("get signal %#s", sig.String())
+		switch sig {
+		case syscall.SIGHUP:
+			logger.Infof("app need reload")
+		default:
+			time.AfterFunc(time.Duration(time.Second*5), func() {
+				logger.Warnf("app exit now by force...")
+				os.Exit(1)
+			})
 
-            // The program exits normally or timeout forcibly exits.
-            logger.Warnf("app exit now...")
-            return
-        }
-    }
+			// The program exits normally or timeout forcibly exits.
+			logger.Warnf("app exit now...")
+			return
+		}
+	}
 }
diff --git a/game/go-server-game/pkg/provider.go b/game/go-server-game/pkg/provider.go
index 7b7c246..cfc2fea 100644
--- a/game/go-server-game/pkg/provider.go
+++ b/game/go-server-game/pkg/provider.go
@@ -19,92 +19,92 @@ type BasketballService struct{}
 var userMap = make(map[string]*pojo.Info, 0)
 
 func (p *BasketballService) Login(ctx context.Context, uid string) (*pojo.Result, error) {
-    logger.Infof("message: %#v", uid)
-    var (
-        info *pojo.Info
-        ok bool
-    )
-
-    // auto reply the same message
-    rsp, err := GateBasketball.Send(context.TODO(), uid, "")
-    if err != nil {
-        logger.Errorf("send fail: %#s", err.Error())
-        return &pojo.Result{Code: 1, Msg: err.Error()}, err
-    }
-
-    fmt.Println("receive data from gate:", rsp)
-
-    if info, ok = userMap[uid]; !ok {
-        info = &pojo.Info{}
-        info.Name = uid
-        userMap[uid] = info
-    }
-    return &pojo.Result{Code: 0, Msg: info.Name + ", your score is " + strconv.Itoa(info.Score) , Data: map[string]interface{}{"to": uid, "score": info.Score}}, nil
+	logger.Infof("message: %#v", uid)
+	var (
+		info *pojo.Info
+		ok   bool
+	)
+
+	// auto reply the same message
+	rsp, err := GateBasketball.Send(context.TODO(), uid, "")
+	if err != nil {
+		logger.Errorf("send fail: %#s", err.Error())
+		return &pojo.Result{Code: 1, Msg: err.Error()}, err
+	}
+
+	fmt.Println("receive data from gate:", rsp)
+
+	if info, ok = userMap[uid]; !ok {
+		info = &pojo.Info{}
+		info.Name = uid
+		userMap[uid] = info
+	}
+	return &pojo.Result{Code: 0, Msg: info.Name + ", your score is " + strconv.Itoa(info.Score), Data: map[string]interface{}{"to": uid, "score": info.Score}}, nil
 }
 
-func (p *BasketballService) Score (ctx context.Context, uid, score string) (*pojo.Result, error) {
-    logger.Infof("message: %#v, %#v", uid, score)
-    var (
-        info = &pojo.Info{}
-        ok bool
-    )
-
-    // auto reply the same message
-    rsp, err := GateBasketball.Send(context.TODO(), uid, score)
-    if err != nil {
-        logger.Errorf("send fail: %#s", err.Error())
-        return &pojo.Result{Code: 1, Msg: err.Error()}, err
-    }
-
-    fmt.Println("receive data from gate:", rsp)
-
-    if info, ok = userMap[uid]; !ok {
-      info = &pojo.Info{
-          Name: uid,
-      }
-      userMap[uid] = info
-      logger.Error("user data not found")
-      return &pojo.Result{Code: 1, Msg: "user data not found", Data: map[string]interface{}{}}, nil
-    }
-    intSource, err := strconv.Atoi(score)
-    if err != nil {
-        logger.Error(err.Error())
-    }
-    info.Score += intSource
-
-    return &pojo.Result{Code: 0, Msg: "进球成功", Data: map[string]interface{}{"to": uid, "score": info.Score}}, nil
+func (p *BasketballService) Score(ctx context.Context, uid, score string) (*pojo.Result, error) {
+	logger.Infof("message: %#v, %#v", uid, score)
+	var (
+		info = &pojo.Info{}
+		ok   bool
+	)
+
+	// auto reply the same message
+	rsp, err := GateBasketball.Send(context.TODO(), uid, score)
+	if err != nil {
+		logger.Errorf("send fail: %#s", err.Error())
+		return &pojo.Result{Code: 1, Msg: err.Error()}, err
+	}
+
+	fmt.Println("receive data from gate:", rsp)
+
+	if info, ok = userMap[uid]; !ok {
+		info = &pojo.Info{
+			Name: uid,
+		}
+		userMap[uid] = info
+		logger.Error("user data not found")
+		return &pojo.Result{Code: 1, Msg: "user data not found", Data: map[string]interface{}{}}, nil
+	}
+	intSource, err := strconv.Atoi(score)
+	if err != nil {
+		logger.Error(err.Error())
+	}
+	info.Score += intSource
+
+	return &pojo.Result{Code: 0, Msg: "进球成功", Data: map[string]interface{}{"to": uid, "score": info.Score}}, nil
 }
 
-func (p *BasketballService) Rank (ctx context.Context, uid string) (*pojo.Result, error) {
-    var (
-        rank = 1
-        info  *pojo.Info
-        ok bool
-    )
-
-    // auto reply the same message
-    rsp, err := GateBasketball.Send(context.TODO(), uid, "")
-    if err != nil {
-        logger.Errorf("send fail: %#s", err.Error())
-        return &pojo.Result{Code: 1, Msg: err.Error()}, err
-    }
-
-    fmt.Println("receive data from gate:", rsp)
-
-    if info, ok = userMap[uid]; !ok {
-        logger.Error("no user found")
-        return &pojo.Result{Code: 1, Msg: "no user found", Data: map[string]interface{}{"to": uid, "rank": rank}}, nil
-    }
-
-    for _, v := range userMap {
-        if v.Score > info.Score {
-            rank ++
-        }
-    }
-
-    return &pojo.Result{Code: 0, Msg: "success", Data: map[string]interface{}{"to": uid, "rank": rank}}, nil
+func (p *BasketballService) Rank(ctx context.Context, uid string) (*pojo.Result, error) {
+	var (
+		rank = 1
+		info *pojo.Info
+		ok   bool
+	)
+
+	// auto reply the same message
+	rsp, err := GateBasketball.Send(context.TODO(), uid, "")
+	if err != nil {
+		logger.Errorf("send fail: %#s", err.Error())
+		return &pojo.Result{Code: 1, Msg: err.Error()}, err
+	}
+
+	fmt.Println("receive data from gate:", rsp)
+
+	if info, ok = userMap[uid]; !ok {
+		logger.Error("no user found")
+		return &pojo.Result{Code: 1, Msg: "no user found", Data: map[string]interface{}{"to": uid, "rank": rank}}, nil
+	}
+
+	for _, v := range userMap {
+		if v.Score > info.Score {
+			rank++
+		}
+	}
+
+	return &pojo.Result{Code: 0, Msg: "success", Data: map[string]interface{}{"to": uid, "rank": rank}}, nil
 }
 
 func (p *BasketballService) Reference() string {
-    return "gameProvider.basketballService"
+	return "gameProvider.basketballService"
 }
diff --git a/game/go-server-game/tests/integration/gameprovider_test.go b/game/go-server-game/tests/integration/gameprovider_test.go
index 6240102..cae1134 100755
--- a/game/go-server-game/tests/integration/gameprovider_test.go
+++ b/game/go-server-game/tests/integration/gameprovider_test.go
@@ -10,25 +10,25 @@ import (
 )
 
 func TestLogin(t *testing.T) {
-    res, err := gameProvider.Login(context.TODO(), "A001")
-    assert.Nil(t, err)
-    assert.NotNil(t, res)
-    assert.Equal(t, int32(0), res.Code)
-    assert.NotNil(t, res.Data)
-    assert.Equal(t, "A001", res.Data["to"])
-    assert.Equal(t, 0, res.Data["score"])
+	res, err := gameProvider.Login(context.TODO(), "A001")
+	assert.Nil(t, err)
+	assert.NotNil(t, res)
+	assert.Equal(t, int32(0), res.Code)
+	assert.NotNil(t, res.Data)
+	assert.Equal(t, "A001", res.Data["to"])
+	assert.Equal(t, 0, res.Data["score"])
 }
 
 func TestScore(t *testing.T) {
-    res, err := gameProvider.Score(context.TODO(), "A001", "1")
-    assert.Nil(t, err)
-    assert.NotNil(t, res)
-    assert.Equal(t, int32(0), res.Code)
+	res, err := gameProvider.Score(context.TODO(), "A001", "1")
+	assert.Nil(t, err)
+	assert.NotNil(t, res)
+	assert.Equal(t, int32(0), res.Code)
 }
 
 func TestRank(t *testing.T) {
-    res, err := gameProvider.Rank(context.TODO(), "A001")
-    assert.Nil(t, err)
-    assert.NotNil(t, res)
-    assert.Equal(t, int32(0), res.Code)
+	res, err := gameProvider.Rank(context.TODO(), "A001")
+	assert.Nil(t, err)
+	assert.NotNil(t, res)
+	assert.Equal(t, int32(0), res.Code)
 }
diff --git a/game/go-server-game/tests/integration/main_test.go b/game/go-server-game/tests/integration/main_test.go
index 187f8c5..a623649 100644
--- a/game/go-server-game/tests/integration/main_test.go
+++ b/game/go-server-game/tests/integration/main_test.go
@@ -27,11 +27,11 @@ import (
 var gameProvider = new(pkg.BasketballService)
 
 func TestMain(m *testing.M) {
-    config.SetConsumerService(gameProvider)
+	config.SetConsumerService(gameProvider)
 
-    hessian.RegisterPOJO(&pojo.Result{})
-    config.Load()
-    time.Sleep(3 * time.Second)
+	hessian.RegisterPOJO(&pojo.Result{})
+	config.Load()
+	time.Sleep(3 * time.Second)
 
-    os.Exit(m.Run())
+	os.Exit(m.Run())
 }
diff --git a/game/go-server-gate/cmd/server.go b/game/go-server-gate/cmd/server.go
index bde9993..60a9ff5 100755
--- a/game/go-server-gate/cmd/server.go
+++ b/game/go-server-gate/cmd/server.go
@@ -32,108 +32,107 @@ import (
 )
 
 func init() {
-    config.SetProviderService(new(pkg.BasketballService))
+	config.SetProviderService(new(pkg.BasketballService))
 
-    config.SetConsumerService(pkg.GameBasketball)
+	config.SetConsumerService(pkg.GameBasketball)
 
-    hessian.RegisterPOJO(&pojo.Result{})
+	hessian.RegisterPOJO(&pojo.Result{})
 }
 
-
 func main() {
-    config.Load()
+	config.Load()
 
-    go startHttp()
+	go startHttp()
 
-    initSignal()
+	initSignal()
 }
 
 func initSignal() {
-    signals := make(chan os.Signal, 1)
-
-    signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-    for {
-        sig := <-signals
-        logger.Infof("get signal %s", sig.String())
-        switch sig {
-        case syscall.SIGHUP:
-            logger.Infof("app need reload")
-        default:
-            time.AfterFunc(time.Duration(time.Second*5), func() {
-                logger.Warnf("app exit now by force...")
-                os.Exit(1)
-            })
-
-            // The program exits normally or timeout forcibly exits.
-            logger.Warnf("app exit now...")
-            return
-        }
-    }
+	signals := make(chan os.Signal, 1)
+
+	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
+	for {
+		sig := <-signals
+		logger.Infof("get signal %s", sig.String())
+		switch sig {
+		case syscall.SIGHUP:
+			logger.Infof("app need reload")
+		default:
+			time.AfterFunc(time.Duration(time.Second*5), func() {
+				logger.Warnf("app exit now by force...")
+				os.Exit(1)
+			})
+
+			// The program exits normally or timeout forcibly exits.
+			logger.Warnf("app exit now...")
+			return
+		}
+	}
 }
 
 func startHttp() {
 
-    http.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
-        res, err := pkg.Login(context.TODO(), r.URL.Query().Get("name"))
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-
-        b, err := json.Marshal(res)
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-        responseWithOrigin(w, r, 200, b)
-    })
-
-    http.HandleFunc("/score", func(w http.ResponseWriter, r *http.Request) {
-        reqBody, err := ioutil.ReadAll(r.Body)
-        if err != nil {
-            logger.Error(err.Error())
-        }
-        var info pojo.Info
-        json.Unmarshal(reqBody, &info)
-        res, err := pkg.Score(context.TODO(), info.Name, strconv.Itoa(info.Score))
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-
-        b, err := json.Marshal(res)
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-        responseWithOrigin(w, r, 200, b)
-    })
-
-    http.HandleFunc("/rank", func(w http.ResponseWriter, r *http.Request) {
-        res, err := pkg.Rank(context.TODO(), r.URL.Query().Get("name"))
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-        b, err := json.Marshal(res)
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-        responseWithOrigin(w, r, 200, b)
-    })
-
-    _ = http.ListenAndServe("127.0.0.1:8089", nil)
+	http.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
+		res, err := pkg.Login(context.TODO(), r.URL.Query().Get("name"))
+		if err != nil {
+			responseWithOrigin(w, r, 200, []byte(err.Error()))
+			return
+		}
+
+		b, err := json.Marshal(res)
+		if err != nil {
+			responseWithOrigin(w, r, 200, []byte(err.Error()))
+			return
+		}
+		responseWithOrigin(w, r, 200, b)
+	})
+
+	http.HandleFunc("/score", func(w http.ResponseWriter, r *http.Request) {
+		reqBody, err := ioutil.ReadAll(r.Body)
+		if err != nil {
+			logger.Error(err.Error())
+		}
+		var info pojo.Info
+		json.Unmarshal(reqBody, &info)
+		res, err := pkg.Score(context.TODO(), info.Name, strconv.Itoa(info.Score))
+		if err != nil {
+			responseWithOrigin(w, r, 200, []byte(err.Error()))
+			return
+		}
+
+		b, err := json.Marshal(res)
+		if err != nil {
+			responseWithOrigin(w, r, 200, []byte(err.Error()))
+			return
+		}
+		responseWithOrigin(w, r, 200, b)
+	})
+
+	http.HandleFunc("/rank", func(w http.ResponseWriter, r *http.Request) {
+		res, err := pkg.Rank(context.TODO(), r.URL.Query().Get("name"))
+		if err != nil {
+			responseWithOrigin(w, r, 200, []byte(err.Error()))
+			return
+		}
+		b, err := json.Marshal(res)
+		if err != nil {
+			responseWithOrigin(w, r, 200, []byte(err.Error()))
+			return
+		}
+		responseWithOrigin(w, r, 200, b)
+	})
+
+	_ = http.ListenAndServe("127.0.0.1:8089", nil)
 }
 
 // avoid cors
 func responseWithOrigin(w http.ResponseWriter, r *http.Request, code int, json []byte) {
-    w.Header().Set("Access-Control-Allow-Origin", "*")
-    w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
-    w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
-    w.Header().Set("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type")
-    w.Header().Set("Access-Control-Allow-Credentials", "true")
-    w.Header().Set("Content-Type", "application/json; charset=utf-8")
-    w.WriteHeader(code)
-    w.Write(json)
+	w.Header().Set("Access-Control-Allow-Origin", "*")
+	w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
+	w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
+	w.Header().Set("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type")
+	w.Header().Set("Access-Control-Allow-Credentials", "true")
+	w.Header().Set("Content-Type", "application/json; charset=utf-8")
+	w.WriteHeader(code)
+	w.Write(json)
 }
diff --git a/game/go-server-gate/pkg/consumer.go b/game/go-server-gate/pkg/consumer.go
index fedca07..85a2908 100644
--- a/game/go-server-gate/pkg/consumer.go
+++ b/game/go-server-gate/pkg/consumer.go
@@ -10,19 +10,19 @@ import (
 )
 
 var GameBasketball = new(game.BasketballService)
-// var gameJump = new(game.JumpService)
 
+// var gameJump = new(game.JumpService)
 
 // just easy for demo test
 
 func Login(ctx context.Context, data string) (*pojo.Result, error) {
-    return GameBasketball.Login(ctx, data)
+	return GameBasketball.Login(ctx, data)
 }
 
 func Score(ctx context.Context, uid, score string) (*pojo.Result, error) {
-    return GameBasketball.Score(ctx, uid, score)
+	return GameBasketball.Score(ctx, uid, score)
 }
 
-func Rank (ctx context.Context, uid string) (*pojo.Result, error) {
-    return GameBasketball.Rank(ctx, uid)
+func Rank(ctx context.Context, uid string) (*pojo.Result, error) {
+	return GameBasketball.Rank(ctx, uid)
 }
diff --git a/game/go-server-gate/pkg/provider.go b/game/go-server-gate/pkg/provider.go
index 89d99d7..81dcf0e 100644
--- a/game/go-server-gate/pkg/provider.go
+++ b/game/go-server-gate/pkg/provider.go
@@ -15,10 +15,10 @@ import (
 type BasketballService struct{}
 
 func (p *BasketballService) Send(ctx context.Context, uid, data string) (*pojo.Result, error) {
-    logger.Infof("basketball: to=%s, message=%s", uid, data)
-    return &pojo.Result{Code: 0, Data: map[string]interface{}{"to": uid, "message": data}}, nil
+	logger.Infof("basketball: to=%s, message=%s", uid, data)
+	return &pojo.Result{Code: 0, Data: map[string]interface{}{"to": uid, "message": data}}, nil
 }
 
 func (p *BasketballService) Reference() string {
-    return "gateProvider.basketballService"
+	return "gateProvider.basketballService"
 }
diff --git a/game/go-server-gate/tests/integration/gateprovider_test.go b/game/go-server-gate/tests/integration/gateprovider_test.go
index c8b0c96..632eb6c 100644
--- a/game/go-server-gate/tests/integration/gateprovider_test.go
+++ b/game/go-server-gate/tests/integration/gateprovider_test.go
@@ -10,11 +10,11 @@ import (
 )
 
 func TestSend(t *testing.T) {
-    res, err := gateProvider.Send(context.TODO(), "A001", "hello")
-    assert.Nil(t, err)
-    assert.NotNil(t, res)
-    assert.Equal(t, int32(0), res.Code)
-    assert.NotNil(t, res.Data)
-    assert.Equal(t, "A001", res.Data["to"])
-    assert.Equal(t, "hello", res.Data["message"])
+	res, err := gateProvider.Send(context.TODO(), "A001", "hello")
+	assert.Nil(t, err)
+	assert.NotNil(t, res)
+	assert.Equal(t, int32(0), res.Code)
+	assert.NotNil(t, res.Data)
+	assert.Equal(t, "A001", res.Data["to"])
+	assert.Equal(t, "hello", res.Data["message"])
 }
diff --git a/game/go-server-gate/tests/integration/main_test.go b/game/go-server-gate/tests/integration/main_test.go
index d782b3e..d128ec6 100644
--- a/game/go-server-gate/tests/integration/main_test.go
+++ b/game/go-server-gate/tests/integration/main_test.go
@@ -27,11 +27,11 @@ import (
 var gateProvider = new(pkg.BasketballService)
 
 func TestMain(m *testing.M) {
-    config.SetConsumerService(gateProvider)
+	config.SetConsumerService(gateProvider)
 
-    hessian.RegisterPOJO(&pojo.Result{})
-    config.Load()
-    time.Sleep(3 * time.Second)
+	hessian.RegisterPOJO(&pojo.Result{})
+	config.Load()
+	time.Sleep(3 * time.Second)
 
-    os.Exit(m.Run())
+	os.Exit(m.Run())
 }
diff --git a/game/pkg/consumer/game/basketball.go b/game/pkg/consumer/game/basketball.go
index 36a343e..67d6f55 100644
--- a/game/pkg/consumer/game/basketball.go
+++ b/game/pkg/consumer/game/basketball.go
@@ -9,11 +9,11 @@ import (
 )
 
 type BasketballService struct {
-    Login   func(ctx context.Context, uid string) (*pojo.Result, error)
-    Score   func(ctx context.Context, uid, score string) (*pojo.Result, error)
-    Rank  func(ctx context.Context, uid string) (*pojo.Result, error)
+	Login func(ctx context.Context, uid string) (*pojo.Result, error)
+	Score func(ctx context.Context, uid, score string) (*pojo.Result, error)
+	Rank  func(ctx context.Context, uid string) (*pojo.Result, error)
 }
 
 func (p *BasketballService) Reference() string {
-    return "gameConsumer.basketballService"
+	return "gameConsumer.basketballService"
 }
diff --git a/game/pkg/consumer/gate/basketball.go b/game/pkg/consumer/gate/basketball.go
index 9d656d7..2cb85ba 100644
--- a/game/pkg/consumer/gate/basketball.go
+++ b/game/pkg/consumer/gate/basketball.go
@@ -9,9 +9,9 @@ import (
 )
 
 type BasketballService struct {
-    Send func(ctx context.Context, uid string, data string) (*pojo.Result, error)
+	Send func(ctx context.Context, uid string, data string) (*pojo.Result, error)
 }
 
 func (p *BasketballService) Reference() string {
-    return "gateConsumer.basketballService"
+	return "gateConsumer.basketballService"
 }
diff --git a/game/pkg/pojo/info.go b/game/pkg/pojo/info.go
index 6125b5a..8f923a7 100644
--- a/game/pkg/pojo/info.go
+++ b/game/pkg/pojo/info.go
@@ -1,8 +1,8 @@
 package pojo
 
 type Info struct {
-	Name string `json:"name"`
-	Score int	`json:"score"`
+	Name  string `json:"name"`
+	Score int    `json:"score"`
 }
 
 func (m Info) JavaClassName() string {
diff --git a/game/pkg/pojo/result.go b/game/pkg/pojo/result.go
index 28dfba6..63ddf5b 100644
--- a/game/pkg/pojo/result.go
+++ b/game/pkg/pojo/result.go
@@ -1,15 +1,15 @@
 package pojo
 
 type Result struct {
-    Code int32                  `json:"code"` // 0: success, [1, *): error
-    Msg  string                 `json:"msg,omitempty"`
-    Data map[string]interface{} `json:"data,omitempty"`
+	Code int32                  `json:"code"` // 0: success, [1, *): error
+	Msg  string                 `json:"msg,omitempty"`
+	Data map[string]interface{} `json:"data,omitempty"`
 }
 
 func (m Result) JavaClassName() string {
-    return "org.apache.dubbo.pojo.Result"
+	return "org.apache.dubbo.pojo.Result"
 }
 
 func (m *Result) Success() bool {
-    return m.Code == 0
+	return m.Code == 0
 }
diff --git a/general/dubbo/go-server/cmd/server.go b/general/dubbo/go-server/cmd/server.go
index af84144..706cfae 100644
--- a/general/dubbo/go-server/cmd/server.go
+++ b/general/dubbo/go-server/cmd/server.go
@@ -28,15 +28,11 @@ import (
 import (
 	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
-	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	"github.com/apache/dubbo-go/common/logger"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
-	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
diff --git a/general/grpc/unary/go-client/app/hello.go b/general/grpc/unary/go-client/app/hello.go
index 95b78c5..69778bc 100644
--- a/general/grpc/unary/go-client/app/hello.go
+++ b/general/grpc/unary/go-client/app/hello.go
@@ -17,7 +17,6 @@
 
 package main
 
-
 import (
 	"context"
 )
diff --git a/general/jsonrpc/go-client/assembly/bin/load.sh b/general/jsonrpc/go-client/assembly/bin/load.sh
deleted file mode 100644
index ffa240b..0000000
--- a/general/jsonrpc/go-client/assembly/bin/load.sh
+++ /dev/null
@@ -1,203 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-APP_NAME="APPLICATION_NAME"
-APP_ARGS=""
-SLEEP_INTERVAL=5
-MAX_LIFETIME=4000
-
-PROJECT_HOME=""
-OS_NAME=`uname`
-if [[ ${OS_NAME} != "Windows" ]]; then
-    PROJECT_HOME=`pwd`
-    PROJECT_HOME=${PROJECT_HOME}"/"
-else
-    APP_NAME="APPLICATION_NAME.exe"
-fi
-
-export CONF_CONSUMER_FILE_PATH=${PROJECT_HOME}"TARGET_CONF_FILE"
-export APP_LOG_CONF_FILE=${PROJECT_HOME}"TARGET_LOG_CONF_FILE"
-# export GOTRACEBACK=system
-# export GODEBUG=gctrace=1
-
-usage() {
-    echo "Usage: $0 start [conf suffix]"
-    echo "       $0 stop"
-    echo "       $0 term"
-    echo "       $0 restart"
-    echo "       $0 list"
-    echo "       $0 monitor"
-    echo "       $0 crontab"
-    exit
-}
-
-start() {
-    arg=$1
-    if [ "$arg" = "" ];then
-        echo "No registry type! Default client.yml!"
-    else
-        export CONF_CONSUMER_FILE_PATH=${CONF_CONSUMER_FILE_PATH//\.yml/\_$arg\.yml}
-    fi
-    if [ ! -f "${CONF_CONSUMER_FILE_PATH}" ];then
-        echo $CONF_CONSUMER_FILE_PATH" is not existing!"
-        return
-    fi
-    APP_LOG_PATH=${PROJECT_HOME}"logs/"
-    mkdir -p ${APP_LOG_PATH}
-    APP_BIN=${PROJECT_HOME}sbin/${APP_NAME}
-    chmod u+x ${APP_BIN}
-    # CMD="nohup ${APP_BIN} ${APP_ARGS} >>${APP_NAME}.nohup.out 2>&1 &"
-    CMD="${APP_BIN}"
-    eval ${CMD}
-    PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
-    if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
-        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
-    fi
-    CUR=`date +%FT%T`
-    if [ "${PID}" != "" ]; then
-        for p in ${PID}
-        do
-            echo "start ${APP_NAME} ( pid =" ${p} ") at " ${CUR}
-        done
-    fi
-}
-
-stop() {
-    PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
-    if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
-        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
-    fi
-    if [ "${PID}" != "" ];
-    then
-        for ps in ${PID}
-        do
-            echo "kill -SIGINT ${APP_NAME} ( pid =" ${ps} ")"
-            kill -2 ${ps}
-        done
-    fi
-}
-
-
-term() {
-    PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
-    if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
-        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
-    fi
-    if [ "${PID}" != "" ];
-    then
-        for ps in ${PID}
-        do
-            echo "kill -9 ${APP_NAME} ( pid =" ${ps} ")"
-            kill -9 ${ps}
-        done
-    fi
-}
-
-list() {
-    PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{printf("%s,%s,%s,%s\n", $1, $2, $9, $10)}'`
-    if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
-        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{printf("%s,%s,%s,%s,%s\n", $1, $4, $6, $7, $8)}'`
-    fi
-
-    if [ "${PID}" != "" ]; then
-        echo "list ${APP_NAME}"
-
-        if [[ ${OS_NAME} == "Linux" || ${OS_NAME} == "Darwin" ]]; then
-            echo "index: user, pid, start, duration"
-        else
-            echo "index: PID, WINPID, UID, STIME, COMMAND"
-        fi
-        idx=0
-        for ps in ${PID}
-        do
-            echo "${idx}: ${ps}"
-            ((idx ++))
-        done
-    fi
-}
-
-monitor() {
-    idx=0
-    while true; do
-        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
-        if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
-            PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
-        fi
-        if [[ "${PID}" == "" ]]; then
-            start
-            idx=0
-        fi
-
-        ((LIFE=idx*${SLEEP_INTERVAL}))
-        echo "${APP_NAME} ( pid = " ${PID} ") has been working in normal state for " $LIFE " seconds."
-        ((idx ++))
-        sleep ${SLEEP_INTERVAL}
-    done
-}
-
-crontab() {
-    idx=0
-    while true; do
-        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
-        if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
-            PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
-        fi
-        if [[ "${PID}" == "" ]]; then
-            start
-            idx=0
-        fi
-
-        ((LIFE=idx*${SLEEP_INTERVAL}))
-        echo "${APP_NAME} ( pid = " ${PID} ") has been working in normal state for " $LIFE " seconds."
-        ((idx ++))
-        sleep ${SLEEP_INTERVAL}
-        if [[ ${LIFE} -gt ${MAX_LIFETIME} ]]; then
-            kill -9 ${PID}
-        fi
-    done
-}
-
-opt=$1
-case C"$opt" in
-    Cstart)
-        start $2
-        ;;
-    Cstop)
-        stop
-        ;;
-    Cterm)
-        term
-        ;;
-    Crestart)
-        term
-        start $2
-        ;;
-    Clist)
-        list
-        ;;
-    Cmonitor)
-        monitor
-        ;;
-    Ccrontab)
-        crontab
-        ;;
-    C*)
-        usage
-        ;;
-esac
-
diff --git a/general/jsonrpc/go-client/assembly/common/app.properties b/general/jsonrpc/go-client/assembly/common/app.properties
deleted file mode 100644
index e10868f..0000000
--- a/general/jsonrpc/go-client/assembly/common/app.properties
+++ /dev/null
@@ -1,23 +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.
-
-
-export TARGET_EXEC_NAME="user_info_client"
-# BUILD_PACKAGE="dubbogo-examples/user-info/client/app"
-export BUILD_PACKAGE="app"
-
-export TARGET_CONF_FILE="conf/client.yml"
-export TARGET_LOG_CONF_FILE="conf/log.yml"
diff --git a/general/jsonrpc/go-client/assembly/common/build.sh b/general/jsonrpc/go-client/assembly/common/build.sh
deleted file mode 100644
index d1f7136..0000000
--- a/general/jsonrpc/go-client/assembly/common/build.sh
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-rm -rf target/
-
-PROJECT_HOME=`pwd`
-TARGET_FOLDER=${PROJECT_HOME}/target/${GOOS}
-
-TARGET_SBIN_NAME=${TARGET_EXEC_NAME}
-version=`cat app/version.go | grep Version | grep -v "Apache"  | awk -F '=' '{print $2}' | awk -F '"' '{print $2}'`
-if [[ ${GOOS} == "windows" ]]; then
-    TARGET_SBIN_NAME=${TARGET_SBIN_NAME}.exe
-fi
-TARGET_NAME=${TARGET_FOLDER}/${TARGET_SBIN_NAME}
-if [[ $PROFILE == "dev" ||  $PROFILE == "test" ]]; then
-    # GFLAGS=-gcflags "-N -l" -race -x -v # -x会把go build的详细过程输出
-    # GFLAGS=-gcflags "-N -l" -race -v
-    # GFLAGS="-gcflags \"-N -l\" -v"
-    cd ${BUILD_PACKAGE} && GOOS=$GOOS GOARCH=$GOARCH GO111MODULE=on go build -gcflags "-N -l" -x -v -i -o ${TARGET_NAME} && cd -
-else
-    # -s去掉符号表(然后panic时候的stack trace就没有任何文件名/行号信息了,这个等价于普通C/C++程序被strip的效果),
-    # -w去掉DWARF调试信息,得到的程序就不能用gdb调试了。-s和-w也可以分开使用,一般来说如果不打算用gdb调试,
-    # -w基本没啥损失。-s的损失就有点大了。
-    cd ${BUILD_PACKAGE} && GOOS=$GOOS GOARCH=$GOARCH GO111MODULE=on go build -ldflags "-w" -x -v -i -o ${TARGET_NAME} && cd -
-fi
-
-TAR_NAME=${TARGET_EXEC_NAME}-${version}-`date "+%Y%m%d-%H%M"`-${PROFILE}
-
-mkdir -p ${TARGET_FOLDER}/${TAR_NAME}
-
-SBIN_DIR=${TARGET_FOLDER}/${TAR_NAME}/sbin
-BIN_DIR=${TARGET_FOLDER}/${TAR_NAME}
-CONF_DIR=${TARGET_FOLDER}/${TAR_NAME}/conf
-
-mkdir -p ${SBIN_DIR}
-mkdir -p ${CONF_DIR}
-
-mv ${TARGET_NAME} ${SBIN_DIR}
-cp -r assembly/bin ${BIN_DIR}
-cd ${BIN_DIR}/bin/ && mv load.sh load_${TARGET_EXEC_NAME}.sh && cd -
-
-platform=$(uname)
-# modify APPLICATION_NAME
-if [ ${platform} == "Darwin" ]; then
-    sed -i "" "s~APPLICATION_NAME~${TARGET_EXEC_NAME}~g" ${BIN_DIR}/bin/*
-else
-    sed -i "s~APPLICATION_NAME~${TARGET_EXEC_NAME}~g" ${BIN_DIR}/bin/*
-fi
-
-# modify TARGET_CONF_FILE
-if [ ${platform} == "Darwin" ]; then
-    sed -i "" "s~TARGET_CONF_FILE~${TARGET_CONF_FILE}~g" ${BIN_DIR}/bin/*
-else
-    sed -i "s~TARGET_CONF_FILE~${TARGET_CONF_FILE}~g" ${BIN_DIR}/bin/*
-fi
-
-# modify TARGET_LOG_CONF_FILE
-if [ ${platform} == "Darwin" ]; then
-    sed -i "" "s~TARGET_LOG_CONF_FILE~${TARGET_LOG_CONF_FILE}~g" ${BIN_DIR}/bin/*
-else
-    sed -i "s~TARGET_LOG_CONF_FILE~${TARGET_LOG_CONF_FILE}~g" ${BIN_DIR}/bin/*
-fi
-
-cp -r profiles/${PROFILE}/* ${CONF_DIR}
-
-cd ${TARGET_FOLDER}
-
-tar czf ${TAR_NAME}.tar.gz ${TAR_NAME}/*
-
diff --git a/general/jsonrpc/go-client/assembly/linux/dev.sh b/general/jsonrpc/go-client/assembly/linux/dev.sh
deleted file mode 100644
index eada737..0000000
--- a/general/jsonrpc/go-client/assembly/linux/dev.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=linux
-export GOARCH=amd64
-
-export PROFILE="dev"
-
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-  . ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-  sh ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-client/assembly/linux/release.sh b/general/jsonrpc/go-client/assembly/linux/release.sh
deleted file mode 100644
index 10eb3d7..0000000
--- a/general/jsonrpc/go-client/assembly/linux/release.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=linux
-export GOARCH=amd64
-
-export PROFILE="release"
-export PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-  . ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-  sh ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-client/assembly/linux/test.sh b/general/jsonrpc/go-client/assembly/linux/test.sh
deleted file mode 100644
index 78b650c..0000000
--- a/general/jsonrpc/go-client/assembly/linux/test.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=linux
-export GOARCH=amd64
-
-export PROFILE="test"
-export PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-  . ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-  sh ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-client/assembly/mac/dev.sh b/general/jsonrpc/go-client/assembly/mac/dev.sh
deleted file mode 100644
index c828476..0000000
--- a/general/jsonrpc/go-client/assembly/mac/dev.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=darwin
-export GOARCH=amd64
-
-export PROFILE="dev"
-
-export PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-	. ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-	sh ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-client/assembly/mac/release.sh b/general/jsonrpc/go-client/assembly/mac/release.sh
deleted file mode 100644
index 91c2dfe..0000000
--- a/general/jsonrpc/go-client/assembly/mac/release.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=darwin
-export GOARCH=amd64
-
-export PROFILE="release"
-export PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-  . ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-  sh ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-client/assembly/mac/test.sh b/general/jsonrpc/go-client/assembly/mac/test.sh
deleted file mode 100644
index a7853f5..0000000
--- a/general/jsonrpc/go-client/assembly/mac/test.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-set -e
-
-export GOOS=darwin
-export GOARCH=amd64
-
-export PROFILE="test"
-export PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-  . ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-  sh ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-client/assembly/windows/dev.sh b/general/jsonrpc/go-client/assembly/windows/dev.sh
deleted file mode 100644
index 10a3866..0000000
--- a/general/jsonrpc/go-client/assembly/windows/dev.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=linux
-export GOARCH=amd64
-
-export PROFILE="dev"
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-  . ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-  sh ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-client/assembly/windows/release.sh b/general/jsonrpc/go-client/assembly/windows/release.sh
deleted file mode 100644
index 21af573..0000000
--- a/general/jsonrpc/go-client/assembly/windows/release.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=windows
-export GOARCH=amd64
-
-export PROFILE="release"
-export PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-  . ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-  sh ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-client/assembly/windows/test.sh b/general/jsonrpc/go-client/assembly/windows/test.sh
deleted file mode 100644
index 2104da8..0000000
--- a/general/jsonrpc/go-client/assembly/windows/test.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=windows
-export GOARCH=amd64
-
-export PROFILE="test"
-export PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-  . ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-  sh ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-client/app/client.go b/general/jsonrpc/go-client/cmd/client.go
similarity index 100%
rename from general/jsonrpc/go-client/app/client.go
rename to general/jsonrpc/go-client/cmd/client.go
diff --git a/general/jsonrpc/go-client/app/user.go b/general/jsonrpc/go-client/cmd/user.go
similarity index 100%
rename from general/jsonrpc/go-client/app/user.go
rename to general/jsonrpc/go-client/cmd/user.go
diff --git a/general/jsonrpc/go-server/app/version.go b/general/jsonrpc/go-client/cmd/version.go
similarity index 100%
copy from general/jsonrpc/go-server/app/version.go
copy to general/jsonrpc/go-client/cmd/version.go
diff --git a/general/jsonrpc/go-client/profiles/dev/client.yml b/general/jsonrpc/go-client/conf/client.yml
similarity index 90%
copy from general/jsonrpc/go-client/profiles/dev/client.yml
copy to general/jsonrpc/go-client/conf/client.yml
index ed757d7..8253be5 100644
--- a/general/jsonrpc/go-client/profiles/dev/client.yml
+++ b/general/jsonrpc/go-client/conf/client.yml
@@ -22,12 +22,6 @@ registries :
     address: "127.0.0.1:2181"
     username: ""
     password: ""
-  "shanghaizk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2182"
-    username: ""
-    password: ""
 
 references:
   "UserProvider":
diff --git a/general/jsonrpc/go-server/profiles/dev/log.yml b/general/jsonrpc/go-client/conf/log.yml
similarity index 100%
rename from general/jsonrpc/go-server/profiles/dev/log.yml
rename to general/jsonrpc/go-client/conf/log.yml
diff --git a/general/jsonrpc/go-client/profiles/release/client.yml b/general/jsonrpc/go-client/profiles/release/client.yml
deleted file mode 100644
index 48b7ebe..0000000
--- a/general/jsonrpc/go-client/profiles/release/client.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout : "3s"
-# connect timeout
-connect_timeout : "3s"
-
-# application config
-application:
-    organization : "ikurento.com"
-    name  : "BDTService"
-    module : "dubbogo user-info client"
-    version : "0.0.1"
-    owner : "ZX"
-    environment : "release"
-
-registries :
-  "hangzhouzk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-  "shanghaizk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2182"
-    username: ""
-    password: ""
-
-references:
-  "UserProvider":
-    # 可以指定多个registry,使用逗号隔开;不指定默认向所有注册中心注册
-    registry: "hangzhouzk"
-    protocol : "jsonrpc"
-    interface : "com.ikurento.user.UserProvider"
-    cluster: "failover"
-    methods :
-      - name: "GetUser"
-        retries: 3
-  "UserProvider1":
-    registry: "hangzhouzk"
-    protocol: "jsonrpc"
-    version : "2.0"
-    interface: "com.ikurento.user.UserProvider"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 3
-  "UserProvider2":
-    registry: "hangzhouzk"
-    protocol: "jsonrpc"
-    version : "2.0"
-    group: "as"
-    interface: "com.ikurento.user.UserProvider"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 3
diff --git a/general/jsonrpc/go-client/profiles/release/log.yml b/general/jsonrpc/go-client/profiles/release/log.yml
deleted file mode 100644
index d860624..0000000
--- a/general/jsonrpc/go-client/profiles/release/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "warn"
-development: true
-disableCaller: true
-disableStacktrace: true
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capitalColor"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/general/jsonrpc/go-client/profiles/test/client.yml b/general/jsonrpc/go-client/profiles/test/client.yml
deleted file mode 100644
index 78a21ad..0000000
--- a/general/jsonrpc/go-client/profiles/test/client.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout : "3s"
-# connect timeout
-connect_timeout : "3s"
-
-# application config
-application:
-  organization : "ikurento.com"
-  name  : "BDTService"
-  module : "dubbogo user-info client"
-  version : "0.0.1"
-  owner : "ZX"
-  environment : "test"
-
-registries :
-  "hangzhouzk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-  "shanghaizk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2182"
-    username: ""
-    password: ""
-
-references:
-  "UserProvider":
-    # 可以指定多个registry,使用逗号隔开;不指定默认向所有注册中心注册
-    registry: "hangzhouzk"
-    protocol : "jsonrpc"
-    interface : "com.ikurento.user.UserProvider"
-    cluster: "failover"
-    methods :
-    - name: "GetUser"
-      retries: 3
-  "UserProvider1":
-    registry: "hangzhouzk"
-    protocol: "jsonrpc"
-    version : "2.0"
-    interface: "com.ikurento.user.UserProvider"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 3
-  "UserProvider2":
-    registry: "hangzhouzk"
-    protocol: "jsonrpc"
-    version : "2.0"
-    group: "as"
-    interface: "com.ikurento.user.UserProvider"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 3
diff --git a/general/jsonrpc/go-server/assembly/bin/load.sh b/general/jsonrpc/go-server/assembly/bin/load.sh
deleted file mode 100644
index 90077c2..0000000
--- a/general/jsonrpc/go-server/assembly/bin/load.sh
+++ /dev/null
@@ -1,151 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-APP_NAME="APPLICATION_NAME"
-APP_ARGS=""
-
-
-PROJECT_HOME=""
-OS_NAME=`uname`
-if [[ ${OS_NAME} != "Windows" ]]; then
-    PROJECT_HOME=`pwd`
-    PROJECT_HOME=${PROJECT_HOME}"/"
-fi
-
-export CONF_PROVIDER_FILE_PATH=${PROJECT_HOME}"TARGET_CONF_FILE"
-export APP_LOG_CONF_FILE=${PROJECT_HOME}"TARGET_LOG_CONF_FILE"
-
-usage() {
-    echo "Usage: $0 start [conf suffix]"
-    echo "       $0 stop"
-    echo "       $0 term"
-    echo "       $0 restart"
-    echo "       $0 list"
-    echo "       $0 monitor"
-    echo "       $0 crontab"
-    exit
-}
-
-start() {
-    arg=$1
-    if [ "$arg" = "" ];then
-        echo "No registry type! Default server.yml!"
-    else
-        export CONF_PROVIDER_FILE_PATH=${CONF_PROVIDER_FILE_PATH//\.yml/\_$arg\.yml}
-    fi
-    if [ ! -f "${CONF_PROVIDER_FILE_PATH}" ];then
-        echo $CONF_PROVIDER_FILE_PATH" is not existing!"
-        return
-    fi
-    APP_LOG_PATH="${PROJECT_HOME}logs/"
-    mkdir -p ${APP_LOG_PATH}
-    APP_BIN=${PROJECT_HOME}sbin/${APP_NAME}
-    chmod u+x ${APP_BIN}
-    # CMD="nohup ${APP_BIN} ${APP_ARGS} >>${APP_NAME}.nohup.out 2>&1 &"
-    CMD="${APP_BIN}"
-    eval ${CMD}
-    PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
-    if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
-        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
-    fi
-    CUR=`date +%FT%T`
-    if [ "${PID}" != "" ]; then
-        for p in ${PID}
-        do
-            echo "start ${APP_NAME} ( pid =" ${p} ") at " ${CUR}
-        done
-    fi
-}
-
-stop() {
-    PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
-    if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
-        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
-    fi
-    if [ "${PID}" != "" ];
-    then
-        for ps in ${PID}
-        do
-            echo "kill -SIGINT ${APP_NAME} ( pid =" ${ps} ")"
-            kill -2 ${ps}
-        done
-    fi
-}
-
-
-term() {
-    PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
-    if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
-        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
-    fi
-    if [ "${PID}" != "" ];
-    then
-        for ps in ${PID}
-        do
-            echo "kill -9 ${APP_NAME} ( pid =" ${ps} ")"
-            kill -9 ${ps}
-        done
-    fi
-}
-
-list() {
-    PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{printf("%s,%s,%s,%s\n", $1, $2, $9, $10)}'`
-    if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
-        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{printf("%s,%s,%s,%s,%s\n", $1, $4, $6, $7, $8)}'`
-    fi
-
-    if [ "${PID}" != "" ]; then
-        echo "list ${APP_NAME}"
-
-        if [[ ${OS_NAME} == "Linux" || ${OS_NAME} == "Darwin" ]]; then
-            echo "index: user, pid, start, duration"
-    else
-        echo "index: PID, WINPID, UID, STIME, COMMAND"
-    fi
-        idx=0
-        for ps in ${PID}
-        do
-            echo "${idx}: ${ps}"
-            ((idx ++))
-        done
-    fi
-}
-
-opt=$1
-case C"$opt" in
-    Cstart)
-        start $2
-        ;;
-    Cstop)
-        stop
-        ;;
-    Cterm)
-        term
-        ;;
-    Crestart)
-        term
-        start $2
-        ;;
-    Clist)
-        list
-        ;;
-    C*)
-        usage
-        ;;
-esac
-
diff --git a/general/jsonrpc/go-server/assembly/common/app.properties b/general/jsonrpc/go-server/assembly/common/app.properties
deleted file mode 100644
index 1f0827e..0000000
--- a/general/jsonrpc/go-server/assembly/common/app.properties
+++ /dev/null
@@ -1,23 +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.
-
-
-TARGET_EXEC_NAME="user_info_server"
-# BUILD_PACKAGE="dubbogo-examples/user-info/server/app"
-BUILD_PACKAGE="app"
-
-TARGET_CONF_FILE="conf/server.yml"
-TARGET_LOG_CONF_FILE="conf/log.yml"
diff --git a/general/jsonrpc/go-server/assembly/common/build.sh b/general/jsonrpc/go-server/assembly/common/build.sh
deleted file mode 100644
index d90d026..0000000
--- a/general/jsonrpc/go-server/assembly/common/build.sh
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-rm -rf target/
-
-PROJECT_HOME=`pwd`
-TARGET_FOLDER=${PROJECT_HOME}/target/${GOOS}
-
-TARGET_SBIN_NAME=${TARGET_EXEC_NAME}
-version=`cat app/version.go | grep Version | grep -v "Apache" | awk -F '=' '{print $2}' | awk -F '"' '{print $2}'`
-if [[ ${GOOS} == "windows" ]]; then
-    TARGET_SBIN_NAME=${TARGET_SBIN_NAME}.exe
-fi
-TARGET_NAME=${TARGET_FOLDER}/${TARGET_SBIN_NAME}
-if [[ $PROFILE = "test" ]]; then
-    # GFLAGS=-gcflags "-N -l" -race -x -v # -x会把go build的详细过程输出
-    # GFLAGS=-gcflags "-N -l" -race -v
-    # GFLAGS="-gcflags \"-N -l\" -v"
-    cd ${BUILD_PACKAGE} && GO111MODULE=on go build -gcflags "-N -l" -x -v -i -o ${TARGET_NAME} && cd -
-else
-    # -s去掉符号表(然后panic时候的stack trace就没有任何文件名/行号信息了,这个等价于普通C/C++程序被strip的效果),
-    # -w去掉DWARF调试信息,得到的程序就不能用gdb调试了。-s和-w也可以分开使用,一般来说如果不打算用gdb调试,
-    # -w基本没啥损失。-s的损失就有点大了。
-    cd ${BUILD_PACKAGE} && GO111MODULE=on go build -ldflags "-w" -x -v -i -o ${TARGET_NAME} && cd -
-fi
-
-TAR_NAME=${TARGET_EXEC_NAME}-${version}-`date "+%Y%m%d-%H%M"`-${PROFILE}
-
-mkdir -p ${TARGET_FOLDER}/${TAR_NAME}
-
-SBIN_DIR=${TARGET_FOLDER}/${TAR_NAME}/sbin
-BIN_DIR=${TARGET_FOLDER}/${TAR_NAME}
-CONF_DIR=${TARGET_FOLDER}/${TAR_NAME}/conf
-
-mkdir -p ${SBIN_DIR}
-mkdir -p ${CONF_DIR}
-
-mv ${TARGET_NAME} ${SBIN_DIR}
-cp -r assembly/bin ${BIN_DIR}
-# modify APPLICATION_NAME
-# OS=`uname`
-# if [[ $OS=="Darwin" ]]; then
-if [ "$(uname)" == "Darwin" ]; then
-    sed -i "" "s~APPLICATION_NAME~${TARGET_EXEC_NAME}~g" ${BIN_DIR}/bin/*
-else
-    sed -i "s~APPLICATION_NAME~${TARGET_EXEC_NAME}~g" ${BIN_DIR}/bin/*
-fi
-# modify TARGET_CONF_FILE
-if [ "$(uname)" == "Darwin" ]; then
-    sed -i "" "s~TARGET_CONF_FILE~${TARGET_CONF_FILE}~g" ${BIN_DIR}/bin/*
-else
-    sed -i "s~TARGET_CONF_FILE~${TARGET_CONF_FILE}~g" ${BIN_DIR}/bin/*
-fi
-# modify TARGET_LOG_CONF_FILE
-if [ "$(uname)" == "Darwin" ]; then
-    sed -i "" "s~TARGET_LOG_CONF_FILE~${TARGET_LOG_CONF_FILE}~g" ${BIN_DIR}/bin/*
-else
-    sed -i "s~TARGET_LOG_CONF_FILE~${TARGET_LOG_CONF_FILE}~g" ${BIN_DIR}/bin/*
-fi
-
-cp -r profiles/${PROFILE}/* ${CONF_DIR}
-
-cd ${TARGET_FOLDER}
-
-tar czf ${TAR_NAME}.tar.gz ${TAR_NAME}/*
-
diff --git a/general/jsonrpc/go-server/assembly/linux/dev.sh b/general/jsonrpc/go-server/assembly/linux/dev.sh
deleted file mode 100644
index d830ac9..0000000
--- a/general/jsonrpc/go-server/assembly/linux/dev.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=linux
-export GOARCH=amd64
-
-PROFILE=dev
-
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-. ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-. ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-server/assembly/linux/release.sh b/general/jsonrpc/go-server/assembly/linux/release.sh
deleted file mode 100644
index 9930380..0000000
--- a/general/jsonrpc/go-server/assembly/linux/release.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=linux
-export GOARCH=amd64
-
-PROFILE=release
-
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-. ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-. ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-server/assembly/linux/test.sh b/general/jsonrpc/go-server/assembly/linux/test.sh
deleted file mode 100644
index 87144bb..0000000
--- a/general/jsonrpc/go-server/assembly/linux/test.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=linux
-export GOARCH=amd64
-
-PROFILE=test
-
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-. ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-. ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-server/assembly/mac/dev.sh b/general/jsonrpc/go-server/assembly/mac/dev.sh
deleted file mode 100644
index 3a7659b..0000000
--- a/general/jsonrpc/go-server/assembly/mac/dev.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=darwin
-export GOARCH=amd64
-
-PROFILE=dev
-
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-. ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-. ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-server/assembly/mac/release.sh b/general/jsonrpc/go-server/assembly/mac/release.sh
deleted file mode 100644
index 1c4bce4..0000000
--- a/general/jsonrpc/go-server/assembly/mac/release.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=darwin
-export GOARCH=amd64
-
-PROFILE=release
-
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-. ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-. ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-server/assembly/mac/test.sh b/general/jsonrpc/go-server/assembly/mac/test.sh
deleted file mode 100644
index 69206e3..0000000
--- a/general/jsonrpc/go-server/assembly/mac/test.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-set -e
-
-export GOOS=darwin
-export GOARCH=amd64
-
-PROFILE=test
-
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-. ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-. ${PROJECT_HOME}/assembly/common/build.sh
-fi
-
diff --git a/general/jsonrpc/go-server/assembly/windows/dev.sh b/general/jsonrpc/go-server/assembly/windows/dev.sh
deleted file mode 100644
index 011fb41..0000000
--- a/general/jsonrpc/go-server/assembly/windows/dev.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=windows
-export GOARCH=amd64
-
-PROFILE=dev
-
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-. ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-. ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-server/assembly/windows/release.sh b/general/jsonrpc/go-server/assembly/windows/release.sh
deleted file mode 100644
index 679a26a..0000000
--- a/general/jsonrpc/go-server/assembly/windows/release.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=windows
-export GOARCH=amd64
-
-PROFILE=release
-
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-. ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-. ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-server/assembly/windows/test.sh b/general/jsonrpc/go-server/assembly/windows/test.sh
deleted file mode 100644
index 4a36de0..0000000
--- a/general/jsonrpc/go-server/assembly/windows/test.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-
-
-set -e
-
-export GOOS=windows
-export GOARCH=amd64
-
-PROFILE=test
-
-PROJECT_HOME=`pwd`
-
-if [ -f "${PROJECT_HOME}/assembly/common/app.properties" ]; then
-. ${PROJECT_HOME}/assembly/common/app.properties
-fi
-
-
-if [ -f "${PROJECT_HOME}/assembly/common/build.sh" ]; then
-. ${PROJECT_HOME}/assembly/common/build.sh
-fi
diff --git a/general/jsonrpc/go-server/app/server.go b/general/jsonrpc/go-server/cmd/server.go
similarity index 100%
copy from general/jsonrpc/go-server/app/server.go
copy to general/jsonrpc/go-server/cmd/server.go
diff --git a/general/jsonrpc/go-server/app/user.go b/general/jsonrpc/go-server/cmd/user.go
similarity index 100%
rename from general/jsonrpc/go-server/app/user.go
rename to general/jsonrpc/go-server/cmd/user.go
diff --git a/general/jsonrpc/go-server/app/user_provider.go b/general/jsonrpc/go-server/cmd/user_provider.go
similarity index 100%
rename from general/jsonrpc/go-server/app/user_provider.go
rename to general/jsonrpc/go-server/cmd/user_provider.go
diff --git a/general/jsonrpc/go-server/app/user_provider1.go b/general/jsonrpc/go-server/cmd/user_provider1.go
similarity index 100%
rename from general/jsonrpc/go-server/app/user_provider1.go
rename to general/jsonrpc/go-server/cmd/user_provider1.go
diff --git a/general/jsonrpc/go-server/app/user_provider2.go b/general/jsonrpc/go-server/cmd/user_provider2.go
similarity index 100%
rename from general/jsonrpc/go-server/app/user_provider2.go
rename to general/jsonrpc/go-server/cmd/user_provider2.go
diff --git a/general/jsonrpc/go-client/app/version.go b/general/jsonrpc/go-server/cmd/version.go
similarity index 100%
copy from general/jsonrpc/go-client/app/version.go
copy to general/jsonrpc/go-server/cmd/version.go
diff --git a/general/jsonrpc/go-client/profiles/dev/client.yml b/general/jsonrpc/go-server/conf/client.yml
similarity index 51%
rename from general/jsonrpc/go-client/profiles/dev/client.yml
rename to general/jsonrpc/go-server/conf/client.yml
index ed757d7..42af1dc 100644
--- a/general/jsonrpc/go-client/profiles/dev/client.yml
+++ b/general/jsonrpc/go-server/conf/client.yml
@@ -22,12 +22,6 @@ registries :
     address: "127.0.0.1:2181"
     username: ""
     password: ""
-  "shanghaizk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2182"
-    username: ""
-    password: ""
 
 references:
   "UserProvider":
@@ -35,26 +29,4 @@ references:
     registry: "hangzhouzk"
     protocol : "jsonrpc"
     interface : "com.ikurento.user.UserProvider"
-    cluster: "failover"
-    methods :
-    - name: "GetUser"
-      retries: 3
-  "UserProvider1":
-    registry: "hangzhouzk"
-    protocol: "jsonrpc"
-    version : "2.0"
-    interface: "com.ikurento.user.UserProvider"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 3
-  "UserProvider2":
-    registry: "hangzhouzk"
-    protocol: "jsonrpc"
-    version : "2.0"
-    group: "as"
-    interface: "com.ikurento.user.UserProvider"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 3
+    cluster: "failover"
\ No newline at end of file
diff --git a/general/jsonrpc/go-server/profiles/test/log.yml b/general/jsonrpc/go-server/conf/log.yml
similarity index 100%
rename from general/jsonrpc/go-server/profiles/test/log.yml
rename to general/jsonrpc/go-server/conf/log.yml
diff --git a/general/jsonrpc/go-server/profiles/dev/server.yml b/general/jsonrpc/go-server/conf/server.yml
similarity index 88%
rename from general/jsonrpc/go-server/profiles/dev/server.yml
rename to general/jsonrpc/go-server/conf/server.yml
index cb7fee9..9109078 100644
--- a/general/jsonrpc/go-server/profiles/dev/server.yml
+++ b/general/jsonrpc/go-server/conf/server.yml
@@ -16,12 +16,6 @@ registries :
     address: "127.0.0.1:2181"
     username: ""
     password: ""
-  "shanghaizk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2182"
-    username: ""
-    password: ""
 
 
 services:
@@ -65,9 +59,6 @@ services:
       loadbalance: "random"
 
 protocols:
-  #-   name: "dubbo"
-  #    ip : "127.0.0.1"
-  #    port : 20000
   "jsonrpc":
     name: "jsonrpc"
     ip: "127.0.0.1"
diff --git a/general/jsonrpc/go-server/docker/docker-compose.yml b/general/jsonrpc/go-server/docker/docker-compose.yml
new file mode 100644
index 0000000..02834a0
--- /dev/null
+++ b/general/jsonrpc/go-server/docker/docker-compose.yml
@@ -0,0 +1,8 @@
+version: '3.5'
+
+services:
+  zk:
+    image: zookeeper
+    container_name: zk
+    ports:
+      - 2181:2181
\ No newline at end of file
diff --git a/general/jsonrpc/go-server/profiles/release/log.yml b/general/jsonrpc/go-server/profiles/release/log.yml
deleted file mode 100644
index d860624..0000000
--- a/general/jsonrpc/go-server/profiles/release/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "warn"
-development: true
-disableCaller: true
-disableStacktrace: true
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capitalColor"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/general/jsonrpc/go-server/profiles/release/server.yml b/general/jsonrpc/go-server/profiles/release/server.yml
deleted file mode 100644
index f7e435b..0000000
--- a/general/jsonrpc/go-server/profiles/release/server.yml
+++ /dev/null
@@ -1,75 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-    organization : "ikurento.com"
-    name : "BDTService"
-    module : "dubbogo user-info server"
-    version : "0.0.1"
-    owner : "ZX"
-    environment : "release"
-
-registries :
-  "hangzhouzk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-  "shanghaizk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2182"
-    username: ""
-    password: ""
-
-
-services:
-  "UserProvider":
-    # 可以指定多个registry,使用逗号隔开;不指定默认向所有注册中心注册
-    registry: "hangzhouzk"
-    protocol : "jsonrpc"
-   # 相当于dubbo.xml中的interface
-    interface : "com.ikurento.user.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 1
-        loadbalance: "random"
-  "UserProvider1":
-    registry: "hangzhouzk"
-    protocol: "jsonrpc"
-    interface: "com.ikurento.user.UserProvider"
-    loadbalance: "random"
-    version: "2.0"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 1
-      loadbalance: "random"
-  "UserProvider2":
-    registry: "hangzhouzk"
-    protocol: "jsonrpc"
-    interface: "com.ikurento.user.UserProvider"
-    loadbalance: "random"
-    version: "2.0"
-    group: "as"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 1
-      loadbalance: "random"
-
-protocols:
-  #-   name: "dubbo"
-  #    ip : "127.0.0.1"
-  #    port : 20000
-  "jsonrpc":
-      name: "jsonrpc"
-      ip: "127.0.0.1"
-      port: 20001
-
diff --git a/general/jsonrpc/go-server/profiles/test/server.yml b/general/jsonrpc/go-server/profiles/test/server.yml
deleted file mode 100644
index 63bcbd2..0000000
--- a/general/jsonrpc/go-server/profiles/test/server.yml
+++ /dev/null
@@ -1,75 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization : "ikurento.com"
-  name : "BDTService"
-  module : "dubbogo user-info server"
-  version : "0.0.1"
-  owner : "ZX"
-  environment : "test"
-
-registries :
-  "hangzhouzk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-  "shanghaizk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2182"
-    username: ""
-    password: ""
-
-
-services:
-  "UserProvider":
-    # 可以指定多个registry,使用逗号隔开;不指定默认向所有注册中心注册
-    registry: "hangzhouzk"
-    protocol : "jsonrpc"
-    # 相当于dubbo.xml中的interface
-    interface : "com.ikurento.user.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 1
-      loadbalance: "random"
-  "UserProvider1":
-    registry: "hangzhouzk"
-    protocol: "jsonrpc"
-    interface: "com.ikurento.user.UserProvider"
-    loadbalance: "random"
-    version: "2.0"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 1
-      loadbalance: "random"
-  "UserProvider2":
-    registry: "hangzhouzk"
-    protocol: "jsonrpc"
-    interface: "com.ikurento.user.UserProvider"
-    loadbalance: "random"
-    version: "2.0"
-    group: "as"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 1
-      loadbalance: "random"
-
-protocols:
-  #-   name: "dubbo"
-  #    ip : "127.0.0.1"
-  #    port : 20000
-  "jsonrpc":
-    name: "jsonrpc"
-    ip: "127.0.0.1"
-    port: 20001
-
diff --git a/tls/go-server/tests/integration/main_test.go b/general/jsonrpc/go-server/tests/integration/main_test.go
similarity index 63%
copy from tls/go-server/tests/integration/main_test.go
copy to general/jsonrpc/go-server/tests/integration/main_test.go
index 89d1c93..63fa625 100644
--- a/tls/go-server/tests/integration/main_test.go
+++ b/general/jsonrpc/go-server/tests/integration/main_test.go
@@ -21,23 +21,20 @@ package integration
 
 import (
 	"context"
+	"fmt"
 	"os"
-	"path/filepath"
 	"testing"
 	"time"
 )
 
 import (
-	getty "github.com/apache/dubbo-getty"
-
-	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
+	_ "github.com/apache/dubbo-go/protocol/jsonrpc"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
@@ -46,35 +43,38 @@ var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
 	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	clientKeyPath, _ := filepath.Abs("../certs/ca.key")
-	caPemPath, _ := filepath.Abs("../certs/ca.pem")
-	config.SetSslEnabled(true)
-	config.SetClientTlsConfigBuilder(&getty.ClientTlsConfigBuilder{
-		ClientPrivateKeyPath:          clientKeyPath,
-		ClientTrustCertCollectionPath: caPemPath,
-	})
 	config.Load()
 	time.Sleep(3 * time.Second)
 
 	os.Exit(m.Run())
 }
 
-type User struct {
-	ID   string
-	Name string
-	Age  int32
-	Time time.Time
+type JsonRPCUser struct {
+	ID   string `json:"id"`
+	Name string `json:"name"`
+	Age  int64  `json:"age"`
+	Time int64  `json:"time"`
+	Sex  string `json:"sex"`
+}
+
+func (u JsonRPCUser) String() string {
+	return fmt.Sprintf(
+		"User{ID:%s, Name:%s, Age:%d, Time:%s, Sex:%s}",
+		u.ID, u.Name, u.Age, time.Unix(u.Time, 0).Format("2006-01-02 15:04:05.99999"), u.Sex,
+	)
 }
 
+
 type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
+	GetUsers func(req []interface{}) ([]JsonRPCUser, error)
+	GetUser  func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
+	GetUser0 func(id string, name string) (JsonRPCUser, error)
+	GetUser1 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
+	GetUser2 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error `dubbo:"getUser"`
+	GetUser3 func() error
+	Echo     func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
 }
 
 func (u *UserProvider) Reference() string {
 	return "UserProvider"
 }
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/general/grpc/unary/go-client/app/hello.go b/general/jsonrpc/go-server/tests/integration/userprovider_test.go
similarity index 65%
copy from general/grpc/unary/go-client/app/hello.go
copy to general/jsonrpc/go-server/tests/integration/userprovider_test.go
index 95b78c5..80d92ac 100644
--- a/general/grpc/unary/go-client/app/hello.go
+++ b/general/jsonrpc/go-server/tests/integration/userprovider_test.go
@@ -1,3 +1,5 @@
+// +build integration
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,29 +17,23 @@
  * limitations under the License.
  */
 
-package main
-
+package integration
 
 import (
 	"context"
+	"testing"
 )
 
 import (
-	"google.golang.org/grpc"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
+	"github.com/stretchr/testify/assert"
 )
 
-type GrpcGreeterImpl struct {
-	SayHello func(ctx context.Context, in *protobuf.HelloRequest, out *protobuf.HelloReply) error
-}
-
-func (u *GrpcGreeterImpl) Reference() string {
-	return "GrpcGreeterImpl"
-}
-
-func (u *GrpcGreeterImpl) GetDubboStub(cc *grpc.ClientConn) protobuf.GreeterClient {
-	return protobuf.NewGreeterClient(cc)
+func TestGetUser(t *testing.T) {
+	user := &JsonRPCUser{}
+	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
+	assert.Nil(t, err)
+	assert.Equal(t, "001", user.ID)
+	assert.Equal(t, "ZhangSheng", user.Name)
+	assert.Equal(t, int64(18), user.Age)
+	assert.NotNil(t, user.Time)
 }
diff --git a/general/rest/go-client/cmd/client.go b/general/rest/go-client/cmd/client.go
index d2f123c..d1690ad 100644
--- a/general/rest/go-client/cmd/client.go
+++ b/general/rest/go-client/cmd/client.go
@@ -36,7 +36,6 @@ import (
 	_ "github.com/apache/dubbo-go/protocol/rest"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
-
 	"github.com/dubbogo/gost/log"
 )
 
diff --git a/general/rest/go-server/conf/client.yml b/general/rest/go-server/conf/client.yml
new file mode 100644
index 0000000..29cd4e6
--- /dev/null
+++ b/general/rest/go-server/conf/client.yml
@@ -0,0 +1,35 @@
+# dubbo client yaml configure file
+
+check: true
+# client
+request_timeout : "3s"
+# connect timeout
+connect_timeout : "3s"
+
+# application config
+application:
+  organization: "dubbo.io"
+  name: "UserInfoServer"
+  module: "dubbo-go user-info server"
+  version: "0.0.1"
+  environment: "dev"
+
+# registry config
+registries:
+  "demoZk":
+    protocol: "zookeeper"
+    timeout: "3s"
+    address: "127.0.0.1:2181"
+
+references:
+  "UserProvider":
+    registry: "demoZk"
+    protocol : "rest"
+    interface : "org.apache.dubbo.UserProvider"
+    cluster: "failover"
+    rest_path: "/UserProvider"
+    methods:
+      - name: "GetUser"
+        rest_path: "/GetUser"
+        rest_method: "GET"
+        rest_query_params: "0:id"
\ No newline at end of file
diff --git a/tls/go-server/tests/integration/main_test.go b/general/rest/go-server/tests/integration/main_test.go
similarity index 68%
copy from tls/go-server/tests/integration/main_test.go
copy to general/rest/go-server/tests/integration/main_test.go
index 89d1c93..2d58de6 100644
--- a/tls/go-server/tests/integration/main_test.go
+++ b/general/rest/go-server/tests/integration/main_test.go
@@ -22,22 +22,19 @@ package integration
 import (
 	"context"
 	"os"
-	"path/filepath"
 	"testing"
+	"fmt"
 	"time"
 )
 
 import (
-	getty "github.com/apache/dubbo-getty"
-
-	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
-	_ "github.com/apache/dubbo-go/protocol/dubbo"
+	_ "github.com/apache/dubbo-go/protocol/rest"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
@@ -46,14 +43,6 @@ var userProvider = new(UserProvider)
 
 func TestMain(m *testing.M) {
 	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	clientKeyPath, _ := filepath.Abs("../certs/ca.key")
-	caPemPath, _ := filepath.Abs("../certs/ca.pem")
-	config.SetSslEnabled(true)
-	config.SetClientTlsConfigBuilder(&getty.ClientTlsConfigBuilder{
-		ClientPrivateKeyPath:          clientKeyPath,
-		ClientTrustCertCollectionPath: caPemPath,
-	})
 	config.Load()
 	time.Sleep(3 * time.Second)
 
@@ -63,18 +52,28 @@ func TestMain(m *testing.M) {
 type User struct {
 	ID   string
 	Name string
-	Age  int32
-	Time time.Time
+	Age  int64
+	Time int64
+	Sex  string
+}
+
+func (u User) String() string {
+	return fmt.Sprintf(
+		"User{ID:%s, Name:%s, Age:%d, Time:%s, Sex:%s}",
+		u.ID, u.Name, u.Age, time.Unix(u.Time, 0).Format("2006-01-02 15:04:05.99999"), u.Sex,
+	)
 }
 
 type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
+	GetUsers func(req []interface{}) ([]User, error)
+	GetUser  func(ctx context.Context, req []interface{}, rsp *User) error
+	GetUser0 func(id string, name string) (User, error)
+	GetUser1 func(ctx context.Context, req []interface{}, rsp *User) error
+	GetUser2 func(ctx context.Context, req []interface{}, rsp *User) error `dubbo:"getUser"`
+	GetUser3 func() error
+	Echo     func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
 }
 
 func (u *UserProvider) Reference() string {
 	return "UserProvider"
 }
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/general/jsonrpc/go-client/app/version.go b/general/rest/go-server/tests/integration/userprovider_test.go
similarity index 66%
copy from general/jsonrpc/go-client/app/version.go
copy to general/rest/go-server/tests/integration/userprovider_test.go
index ae51f45..b6cbe41 100644
--- a/general/jsonrpc/go-client/app/version.go
+++ b/general/rest/go-server/tests/integration/userprovider_test.go
@@ -1,3 +1,5 @@
+// +build integration
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,8 +17,23 @@
  * limitations under the License.
  */
 
-package main
+package integration
+
+import (
+	"context"
+	"testing"
+)
 
-var (
-	Version = "2.7.5"
+import (
+	"github.com/stretchr/testify/assert"
 )
+
+func TestGetUser(t *testing.T) {
+	user := &User{}
+	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
+	assert.Nil(t, err)
+	assert.Equal(t, "001", user.ID)
+	assert.Equal(t, "ZhangSheng", user.Name)
+	assert.Equal(t, int64(18), user.Age)
+	assert.NotNil(t, user.Time)
+}
diff --git a/go.mod b/go.mod
index 66e33eb..0595a7a 100644
--- a/go.mod
+++ b/go.mod
@@ -5,32 +5,37 @@ require (
 	github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 // indirect
 	github.com/alibaba/sentinel-golang v1.0.2
 	github.com/apache/dubbo-getty v1.4.3
-	github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210705022741-5520fa1783c9
+	github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210718162019-04842e84aa85
 	github.com/apache/dubbo-go-hessian2 v1.9.2
 	github.com/bwmarrin/snowflake v0.3.0
+	github.com/coreos/bbolt v1.3.3 // indirect
+	github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf // indirect
 	github.com/docker/go-connections v0.4.0 // indirect
-	github.com/dubbogo/gost v1.11.2
+	github.com/dubbogo/gost v1.11.14
 	github.com/emicklei/go-restful/v3 v3.4.0
 	github.com/golang/protobuf v1.4.3
+	github.com/google/go-cmp v0.5.2 // indirect
+	github.com/google/uuid v1.2.0 // indirect
 	github.com/gophercloud/gophercloud v0.3.0 // indirect
+	github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
 	github.com/hashicorp/golang-lru v0.5.3 // indirect
 	github.com/imdario/mergo v0.3.9 // indirect
 	github.com/linode/linodego v0.10.0 // indirect
 	github.com/miekg/dns v1.1.27 // indirect
 	github.com/mitchellh/hashstructure v1.0.0 // indirect
 	github.com/opentracing/opentracing-go v1.2.0
-	github.com/opentrx/mysql v1.0.0-pre // indirect
 	github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5
 	github.com/openzipkin/zipkin-go v0.2.2
 	github.com/pkg/errors v0.9.1
 	github.com/prometheus/client_golang v1.9.0
 	github.com/stretchr/testify v1.7.0
-	github.com/tinylib/msgp v1.1.0 // indirect
 	github.com/transaction-wg/seata-golang v0.2.1-alpha
 	github.com/uber/jaeger-client-go v2.22.1+incompatible
 	github.com/uber/jaeger-lib v2.2.0+incompatible // indirect
-	google.golang.org/grpc v1.33.1
-	google.golang.org/grpc/examples v0.0.0-20210322221411-d26af8e39165 // indirect
+	golang.org/x/text v0.3.5 // indirect
+	google.golang.org/grpc v1.36.0
+	google.golang.org/protobuf v1.25.0 // indirect
+	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
 )
 
 replace (
diff --git a/go.sum b/go.sum
index 7aa9179..0fd3b42 100644
--- a/go.sum
+++ b/go.sum
@@ -1,4 +1,3 @@
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw=
 cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -57,13 +56,9 @@ github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tT
 github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
 github.com/NYTimes/gziphandler v1.0.1 h1:iLrQrdwjDd52kHDA5op2UBJFjmOb9g+7scBan4RN8F0=
 github.com/NYTimes/gziphandler v1.0.1/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
-github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
-github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
 github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
-github.com/RoaringBitmap/roaring v0.5.5 h1:naNqvO1mNnghk2UvcsqnzHDBn9DRbCIRy94GmDTRVTQ=
-github.com/RoaringBitmap/roaring v0.5.5/go.mod h1:puNo5VdzwbaIQxSiDIwfXl4Hnc+fbovcX4IW/dSTtUk=
 github.com/RoaringBitmap/roaring v0.6.1 h1:O36Tdaj1Fi/zyr25shTHwlQPGdq53+u4WkM08AOEjiE=
 github.com/RoaringBitmap/roaring v0.6.1/go.mod h1:WZ83fjBF/7uBHi6QoFyfGL4+xuV4Qn+xFkm4+vSzrhE=
 github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
@@ -88,22 +83,10 @@ github.com/alibaba/sentinel-golang v1.0.2/go.mod h1:QsB99f/z35D2AiMrAWwgWE85kDTk
 github.com/aliyun/alibaba-cloud-sdk-go v1.61.18 h1:zOVTBdCKFd9JbCKz9/nt+FovbjPFmb7mUnp8nH9fQBA=
 github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk=
 github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/apache/dubbo-getty v1.4.2/go.mod h1:ansXgKxxyhCOiQL29nO5ce1MDcEKmCyZuNR9oMs3hek=
 github.com/apache/dubbo-getty v1.4.3 h1:PCKpryDasKOxwT5MBC6MIMO+0NLOaHF6Xco9YXQw7HI=
 github.com/apache/dubbo-getty v1.4.3/go.mod h1:ansXgKxxyhCOiQL29nO5ce1MDcEKmCyZuNR9oMs3hek=
-github.com/apache/dubbo-go v1.5.6-rc1.0.20210225142527-f1f81ebd8292 h1:7Recoqb9kO8pqSYIjH9LxXVh1TftCf0KHsJaO7w7ykE=
-github.com/apache/dubbo-go v1.5.6-rc1.0.20210225142527-f1f81ebd8292/go.mod h1:oMwy4E3YDz0VoDuvIvSU+XtQNylBAxLWui1lvyBE9GM=
-github.com/apache/dubbo-go v1.5.6-rc2 h1:e9ziyPQx65n/dyGrA0/ce263jV2+nnSzzpdu9LbfNpc=
-github.com/apache/dubbo-go v1.5.6-rc2/go.mod h1:wLJvPWbnrf6/bhoohBT404QK4t2JoNcckMw+/fJ9P+c=
-github.com/apache/dubbo-go v1.5.6 h1:iTMrXo8jB6DxKOhM83NKDnGA8c9ZPnofCOos/GvKyF8=
-github.com/apache/dubbo-go v1.5.6/go.mod h1:wLJvPWbnrf6/bhoohBT404QK4t2JoNcckMw+/fJ9P+c=
-github.com/apache/dubbo-go v1.5.7-rc1 h1:PBK/Ox35L8QH85eBmHAqsg/EL2SnO+xwcCw67lQ4z4Q=
-github.com/apache/dubbo-go v1.5.7-rc1/go.mod h1:wLJvPWbnrf6/bhoohBT404QK4t2JoNcckMw+/fJ9P+c=
-github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210705022741-5520fa1783c9 h1:PZuFw8Ueg78qK7UOwenvybOP+IWGEY7VIOwN6wGQf6k=
-github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210705022741-5520fa1783c9/go.mod h1:6Hvmwl8GoXTfw7niSzn60yvUp6FAzcv5K+x++MoCoD4=
-github.com/apache/dubbo-go-hessian2 v1.8.2 h1:CQq2Mmlrk6Fqmudwl9Dqps8drTrBFnmXRlzgOjj0FqA=
-github.com/apache/dubbo-go-hessian2 v1.8.2/go.mod h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
-github.com/apache/dubbo-go-hessian2 v1.9.1 h1:ceSsU/9z/gv3hzUpl8GceEhQvF3i0BionfdHUGMmjHU=
+github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210718162019-04842e84aa85 h1:Hx/OX//3oUuR1JEjzL7mp2mutCZYSZFwfxZWWwcSxIw=
+github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210718162019-04842e84aa85/go.mod h1:8DZ/QA8Z+KEnUhHDAJwdiO7M5xBkRt4Aq9k9vl9uOA8=
 github.com/apache/dubbo-go-hessian2 v1.9.1/go.mod h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
 github.com/apache/dubbo-go-hessian2 v1.9.2 h1:XuI8KvENSfKiAhiCBS4RNihmQDoPNmGWKT3gTui0p9A=
 github.com/apache/dubbo-go-hessian2 v1.9.2/go.mod h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
@@ -140,6 +123,7 @@ github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgIS
 github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE=
 github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
 github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
+github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
 github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
 github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
 github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
@@ -149,10 +133,11 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D
 github.com/circonus-labs/circonusllhist v0.1.3 h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA=
 github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
 github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
-github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
 github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
 github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
+github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo=
+github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA=
+github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI=
 github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w=
 github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
 github.com/coredns/coredns v1.1.2 h1:bAFHrSsBeTeRG5W3Nf2su3lUGw7Npw2UKeCJm/3A638=
@@ -172,17 +157,18 @@ github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmf
 github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
 github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c=
-github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU=
 github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
 github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg=
 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
 github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
 github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
 github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
 github.com/creasty/defaults v1.5.1 h1:j8WexcS3d/t4ZmllX4GEkl4wIB/trOr035ajcLHCISM=
 github.com/creasty/defaults v1.5.1/go.mod h1:FPZ+Y0WNrbqOVw+c6av63eyHUAl6pMHZwqLPvXUZGfY=
 github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc=
@@ -214,16 +200,12 @@ github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh
 github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
 github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
 github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
-github.com/dubbogo/go-zookeeper v1.0.2 h1:xmEnPL8SlCe3/+J5ZR9e8qE35LmFVYe8VVpDakjNM4A=
-github.com/dubbogo/go-zookeeper v1.0.2/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c=
 github.com/dubbogo/go-zookeeper v1.0.3 h1:UkuY+rBsxdT7Bs63QAzp9z7XqQ53W1j8E5rwl83me8g=
 github.com/dubbogo/go-zookeeper v1.0.3/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c=
 github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8=
 github.com/dubbogo/gost v1.10.1/go.mod h1:+mQGS51XQEUWZP2JeGZTxJwipjRKtJO7Tr+FOg+72rI=
-github.com/dubbogo/gost v1.11.0 h1:9KtyWQz1gMlAfwzen5iyhMdoe08SPBBUVhco4rdgJ9I=
-github.com/dubbogo/gost v1.11.0/go.mod h1:w8Yw29eDWtRVo3tx9nPpHkNZnOi4SRx1fZf7eVlAAU4=
-github.com/dubbogo/gost v1.11.2 h1:NanyHmvzE1HrgI2T9H/jE/N1wkxFEj+IbM1A4RT9H7Q=
-github.com/dubbogo/gost v1.11.2/go.mod h1:3QQEj50QOhkWTERT785YZ5ZxIRGNdR11FCLP7FzHsMc=
+github.com/dubbogo/gost v1.11.14 h1:9lfcdILOmqTOVAW1fPHa5uf1NrD6jlIOBe4vf8576yQ=
+github.com/dubbogo/gost v1.11.14/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI=
 github.com/dubbogo/jsonparser v1.0.1/go.mod h1:tYAtpctvSP/tWw4MeelsowSPgXQRVHHWbqL6ynps8jU=
 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
 github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
@@ -234,8 +216,6 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP
 github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
 github.com/elazarl/go-bindata-assetfs v0.0.0-20160803192304-e1a2a7ec64b0 h1:ZoRgc53qJCfSLimXqJDrmBhnt5GChDsExMCK7t48o0Y=
 github.com/elazarl/go-bindata-assetfs v0.0.0-20160803192304-e1a2a7ec64b0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
-github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk=
-github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
 github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
 github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633 h1:H2pdYOb3KQ1/YsqVWoWNLQO+fusocsw354rqGTZtAgw=
 github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
@@ -253,20 +233,18 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv
 github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=
 github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
 github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
+github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
 github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
 github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
-github.com/frankban/quicktest v1.4.1 h1:Wv2VwvNn73pAdFIVUQRXYDFp31lXKbqblIXo/Q5GPSg=
-github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ=
 github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
 github.com/gin-gonic/gin v1.6.2/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
-github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 h1:Ujru1hufTHVb++eG6OuNDKMxZnGIvF6o/u8q/8h2+I4=
 github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
-github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8=
 github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
 github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
 github.com/go-co-op/gocron v0.1.1 h1:OfDmkqkCguFtFMsm6Eaayci3DADLa8pXvdmOlPU/JcU=
@@ -309,6 +287,7 @@ github.com/go-test/deep v1.0.2 h1:onZX1rnHT3Wv6cqNgYyFOOlgVKJrksuCMCRvJStbMYw=
 github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
 github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM=
 github.com/go-xorm/xorm v0.7.9/go.mod h1:XiVxrMMIhFkwSkh96BW7PACl7UhLtx2iJIHMdmjh5sQ=
+github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
 github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI=
 github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
@@ -316,7 +295,6 @@ github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
 github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
 github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
-github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
 github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
@@ -340,6 +318,7 @@ github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y
 github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
 github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
 github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
 github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
 github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
@@ -359,7 +338,6 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
 github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
 github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
@@ -377,7 +355,6 @@ github.com/google/tcpproxy v0.0.0-20180808230851-dfa16c61dad2 h1:AtvtonGEH/fZK0X
 github.com/google/tcpproxy v0.0.0-20180808230851-dfa16c61dad2/go.mod h1:DavVbd41y+b7ukKDmlnPR4nGYmkWXR6vHUkjQNiHPBs=
 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
 github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -404,15 +381,13 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad
 github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
 github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
 github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg=
-github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE=
 github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 h1:FlFbCRLd5Jr4iYXZufAvgWN6Ao0JrI5chLINnUXDDr0=
 github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
 github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway v1.9.5 h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI=
 github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
+github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw=
 github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
 github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
 github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=
@@ -442,7 +417,6 @@ github.com/hashicorp/go-discover v0.0.0-20200501174627-ad1e96bde088/go.mod h1:vZ
 github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
 github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
 github.com/hashicorp/go-hclog v0.9.1/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
-github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
 github.com/hashicorp/go-hclog v0.12.0 h1:d4QkX8FRTYaKaCZBoXYY8zJX2BXjWxurN/GA2tkrmZM=
 github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
 github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
@@ -459,13 +433,9 @@ github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+
 github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY=
 github.com/hashicorp/go-raftchunking v0.6.1 h1:moEnaG3gcwsWNyIBJoD5PCByE+Ewkqxh6N05CT+MbwA=
 github.com/hashicorp/go-raftchunking v0.6.1/go.mod h1:cGlg3JtDy7qy6c/3Bu660Mic1JF+7lWqIwCFSb08fX0=
-github.com/hashicorp/go-raftchunking v0.6.3-0.20191002164813-7e9e8525653a h1:FmnBDwGwlTgugDGbVxwV8UavqSMACbGrUpfc98yFLR4=
-github.com/hashicorp/go-raftchunking v0.6.3-0.20191002164813-7e9e8525653a/go.mod h1:xbXnmKqX9/+RhPkJ4zrEx4738HacP72aaUPlT2RZ4sU=
 github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
 github.com/hashicorp/go-retryablehttp v0.5.4 h1:1BZvpawXoJCWX6pNtow9+rpEj+3itIlutiqnntI6jOE=
 github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-retryablehttp v0.6.2 h1:bHM2aVXwBtBJWxHtkSrWuI4umABCUczs52eiUS9nSiw=
-github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY=
 github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
 github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
 github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=
@@ -503,7 +473,6 @@ github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn
 github.com/hashicorp/net-rpc-msgpackrpc v0.0.0-20151116020338-a14192a58a69 h1:lc3c72qGlIMDqQpQH82Y4vaglRMMFdJbziYWriR4UcE=
 github.com/hashicorp/net-rpc-msgpackrpc v0.0.0-20151116020338-a14192a58a69/go.mod h1:/z+jUGRBlwVpUZfjute9jWaF6/HuhjuFQuL1YXzVD1Q=
 github.com/hashicorp/raft v1.1.1/go.mod h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8=
-github.com/hashicorp/raft v1.1.2-0.20191002163536-9c6bd3e3eb17/go.mod h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8=
 github.com/hashicorp/raft v1.1.2 h1:oxEL5DDeurYxLd3UbcY/hccgSPhLLpiBZ1YxtWEq59c=
 github.com/hashicorp/raft v1.1.2/go.mod h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8=
 github.com/hashicorp/raft-boltdb v0.0.0-20171010151810-6e5ba93211ea h1:xykPFhrBAS2J0VBzVa5e80b5ZtYuNQtgXjN40qBZlD4=
@@ -514,10 +483,7 @@ github.com/hashicorp/serf v0.9.2 h1:yJoyfZXo4Pk2p/M/viW+YLibBFiIbKoP79gu7kDAFP0=
 github.com/hashicorp/serf v0.9.2/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
 github.com/hashicorp/vault/api v1.0.4 h1:j08Or/wryXT4AcHj1oCbMd7IijXcKzYUGw59LGu9onU=
 github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q=
-github.com/hashicorp/vault/api v1.0.5-0.20191108163347-bdd38fca2cff h1:cl94LQIrs/mNbh3ny1R8lM1gtYcUBa7HnGtOCi35SlQ=
-github.com/hashicorp/vault/api v1.0.5-0.20191108163347-bdd38fca2cff/go.mod h1:Uf8LaHyrYsgVgHzO2tMZKhqRGlL3UJ6XaSwW2EA1Iqo=
 github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M=
-github.com/hashicorp/vault/sdk v0.1.14-0.20191108161836-82f2b5571044/go.mod h1:PcekaFGiPJyHnFy+NZhP6ll650zEw51Ag7g/YEa+EOU=
 github.com/hashicorp/vault/sdk v0.1.14-0.20191112033314-390e96e22eb2 h1:mKYi4Fm2uSfe94Ji89CoAaP7SPEEkfdtaUlgRGGb2go=
 github.com/hashicorp/vault/sdk v0.1.14-0.20191112033314-390e96e22eb2/go.mod h1:PcekaFGiPJyHnFy+NZhP6ll650zEw51Ag7g/YEa+EOU=
 github.com/hashicorp/vic v1.5.1-0.20190403131502-bbfe86ec9443 h1:O/pT5C1Q3mVXMyuqg7yuAWUg/jMZR1/0QTzTRdNR6Uw=
@@ -544,7 +510,6 @@ github.com/jinzhu/copier v0.0.0-20190625015134-976e0346caa8 h1:mGIXW/lubQ4B+3bXT
 github.com/jinzhu/copier v0.0.0-20190625015134-976e0346caa8/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s=
 github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
 github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
 github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
 github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ=
 github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
@@ -575,11 +540,9 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
 github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
 github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
 github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
@@ -601,7 +564,6 @@ github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0U
 github.com/linode/linodego v0.7.1/go.mod h1:ga11n3ivecUrPCHN0rANxKmfWBJVkOXfLMZinAbj2sY=
 github.com/linode/linodego v0.10.0 h1:AMdb82HVgY8o3mjBXJcUv9B+fnJjfDMn2rNRGbX+jvM=
 github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA=
-github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
 github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
 github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
 github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY=
@@ -670,12 +632,8 @@ github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8m
 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
-github.com/nacos-group/nacos-sdk-go v1.0.6 h1:0OqjS37qIKKKZKRQSJ5pNFGRrfzP7+gD4L6dvOkPFZw=
-github.com/nacos-group/nacos-sdk-go v1.0.6/go.mod h1:hlAPn3UdzlxIlSILAyOXKxjFSvDJ9oLzTJ9hLAK1KzA=
-github.com/nacos-group/nacos-sdk-go v1.0.7-0.20210325111144-d75caca21a46 h1:K21xdBJRAUWKuZIUsTDqmmIwB4IywhAb+5BaCheL7Wc=
-github.com/nacos-group/nacos-sdk-go v1.0.7-0.20210325111144-d75caca21a46/go.mod h1:hlAPn3UdzlxIlSILAyOXKxjFSvDJ9oLzTJ9hLAK1KzA=
-github.com/nacos-group/nacos-sdk-go v1.0.7 h1:Am1tJFe7GUTNCREKsZ5ok0H2OspHDRmRcsxn7DiSwhA=
-github.com/nacos-group/nacos-sdk-go v1.0.7/go.mod h1:hlAPn3UdzlxIlSILAyOXKxjFSvDJ9oLzTJ9hLAK1KzA=
+github.com/nacos-group/nacos-sdk-go v1.0.8 h1:8pEm05Cdav9sQgJSv5kyvlgfz0SzFUUGI3pWX6SiSnM=
+github.com/nacos-group/nacos-sdk-go v1.0.8/go.mod h1:hlAPn3UdzlxIlSILAyOXKxjFSvDJ9oLzTJ9hLAK1KzA=
 github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
 github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
 github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
@@ -685,7 +643,6 @@ github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi
 github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
 github.com/nicolai86/scaleway-sdk v1.10.2-0.20180628010248-798f60e20bb2 h1:BQ1HW7hr4IVovMwWg0E0PYcyW8CzqDcVmaew9cujU4s=
 github.com/nicolai86/scaleway-sdk v1.10.2-0.20180628010248-798f60e20bb2/go.mod h1:TLb2Sg7HQcgGdloNxkrmtgDNR9uVYF3lfdFIN4Ro6Sk=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
 github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
 github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
@@ -709,8 +666,6 @@ github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt
 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
 github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
-github.com/opentrx/mysql v1.0.0-pre h1:Svl0pDOk88ZO7eyoeT3hGHj234WyP1nA0dxoxmshpqs=
-github.com/opentrx/mysql v1.0.0-pre/go.mod h1:8HOov/z9FcRy14FWAnyvUrabpARx2lXQEjlNutz0zD4=
 github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU=
 github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
 github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
@@ -731,13 +686,10 @@ github.com/pelletier/go-toml v1.4.0 h1:u3Z1r+oOXJIkxqw34zVhyPgjBsm6X2wn21NWs/HfS
 github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo=
 github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
-github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ=
 github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
 github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
 github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-github.com/pierrec/lz4 v2.2.6+incompatible h1:6aCX4/YZ9v8q69hTyiR7dNLnTA3fgtKHVVW5BCd5Znw=
-github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
 github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ=
 github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712 h1:R8gStypOBmpnHEx1qi//SaqxJVI4inOqljg/Aj5/390=
 github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712/go.mod h1:PYMCGwN0JHjoqGr3HrZoD+b8Tgx8bKnArhSq8YVzUMc=
@@ -770,9 +722,8 @@ github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod
 github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
 github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
 github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
+github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
 github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
-github.com/prometheus/client_golang v1.8.0 h1:zvJNkoCFAnYFNC24FV8nW4JdRJ3GIFcLbg65lL/JDcw=
-github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM=
 github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU=
 github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU=
 github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
@@ -787,9 +738,8 @@ github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8
 github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
+github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
-github.com/prometheus/common v0.14.0 h1:RHRyE8UocrbjU+6UvRzwi6HjiDfxrrBU91TtbKzkGp4=
-github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
 github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM=
 github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
@@ -838,8 +788,9 @@ github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjM
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
+github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
+github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
@@ -847,8 +798,9 @@ github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIK
 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 github.com/softlayer/softlayer-go v0.0.0-20180806151055-260589d94c7d h1:bVQRCxQvfjNUeRqaY/uT0tFuvuFY0ulgnczuR684Xic=
 github.com/softlayer/softlayer-go v0.0.0-20180806151055-260589d94c7d/go.mod h1:Cw4GTlQccdRGSEf6KiMju767x0NEHE0YIVPJSaXjlsw=
-github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=
 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
+github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5 h1:GJTW+uNMIV1RKwox+T4aN0/sQlYRg78uHZf2H0aBcDw=
+github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0=
 github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
 github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
 github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
@@ -859,6 +811,7 @@ github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
 github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
 github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
 github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
+github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI=
 github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
 github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
 github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
@@ -868,6 +821,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
 github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
+github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
 github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk=
 github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
 github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
@@ -876,8 +830,6 @@ github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5J
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A=
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
-github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
 github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
@@ -895,20 +847,13 @@ github.com/tencentcloud/tencentcloud-sdk-go v3.0.83+incompatible/go.mod h1:0PfYo
 github.com/tent/http-link-go v0.0.0-20130702225549-ac974c61c2f9/go.mod h1:RHkNRtSLfOK7qBTHaeSX1D6BNpI3qw7NTxsmNr4RvN8=
 github.com/tevid/gohamcrest v1.1.1 h1:ou+xSqlIw1xfGTg1uq1nif/htZ2S3EzRqLm2BP+tYU0=
 github.com/tevid/gohamcrest v1.1.1/go.mod h1:3UvtWlqm8j5JbwYZh80D/PVBt0mJ1eJiYgZMibh0H/k=
-github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU=
-github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc h1:yUaosFVTJwnltaHbSNC3i82I92quFs+OFPRl8kNMVwo=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
+github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3 h1:kF/7m/ZU+0D4Jj5eZ41Zm3IH/J8OElK1Qtd7tVKAwLk=
 github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlpd3qS71vYtakd2hmdpqhJ9nwv6mD6A30bQ1BPBFE=
-github.com/transaction-wg/seata-golang v0.1.8 h1:C3PKJk5sHZClZXGzc+f//urInShppKM4aG8irMSo2Lc=
-github.com/transaction-wg/seata-golang v0.1.8/go.mod h1:12WVzArJcGyhOoSpBhCrurISYR+khSlFvtOIQVvHFr8=
-github.com/transaction-wg/seata-golang v0.2.0 h1:Thoe2omQUiwE/uSKNj4Hr4JMoSaeFxU0Q/it5hvHd88=
-github.com/transaction-wg/seata-golang v0.2.0/go.mod h1:L9vMoZxvLX4BuXQ13vFPCwFfXRLP0Bhr97z+6jm49Dw=
 github.com/transaction-wg/seata-golang v0.2.1-alpha h1:YT0jWEc0XxN53E9xb/N8eKQ0yi9LVwXc0YBeaIe236g=
 github.com/transaction-wg/seata-golang v0.2.1-alpha/go.mod h1:L9vMoZxvLX4BuXQ13vFPCwFfXRLP0Bhr97z+6jm49Dw=
 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8=
@@ -939,9 +884,15 @@ github.com/zouyx/agollo/v3 v3.4.5 h1:7YCxzY9ZYaH9TuVUBvmI6Tk0mwMggikah+cfbYogcHQ
 github.com/zouyx/agollo/v3 v3.4.5/go.mod h1:LJr3kDmm23QSW+F1Ol4TMHDa7HvJvscMdVxJ2IpUTVc=
 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
 go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
-go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg=
-go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
+go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0=
+go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
 go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
+go.etcd.io/etcd/api/v3 v3.5.0-alpha.0/go.mod h1:mPcW6aZJukV6Aa81LSKpBjQXTWlXB5r74ymPoSWa3Sw=
+go.etcd.io/etcd/client/v2 v2.305.0-alpha.0/go.mod h1:kdV+xzCJ3luEBSIeQyB/OEKkWKd8Zkux4sbDeANrosU=
+go.etcd.io/etcd/client/v3 v3.5.0-alpha.0/go.mod h1:wKt7jgDgf/OfKiYmCq5WFGxOFAkVMLxiiXgLDFhECr8=
+go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY=
+go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w=
+go.etcd.io/etcd/server/v3 v3.5.0-alpha.0/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ=
 go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
 go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
 go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
@@ -982,8 +933,9 @@ golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 h1:hb9wdF1z5waM+dSIICn1l0DkLVDT3hqhhQsDNUmHPRE=
+golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -993,7 +945,6 @@ golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u0
 golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
 golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
 golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
 golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
@@ -1035,18 +986,18 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
 golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA=
 golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/LtIxf46G4fxeEz5KJr9U=
+golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw=
 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1056,13 +1007,11 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA=
 golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1098,6 +1047,7 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1106,7 +1056,7 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201223074533-0d417f636930 h1:vRgIt+nup/B/BwIS0g2oC0haq0iqbV3ZA+u6+0TlNCo=
 golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1114,25 +1064,21 @@ golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fq
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
-golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
-golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ=
 golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE=
 golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
@@ -1162,9 +1108,8 @@ golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapK
 golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
 golang.org/x/tools v0.0.0-20200325203130-f53864d0dba1/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200928182047-19e03678916f h1:VwGa2Wf+rHGIxvsssCkUNIyFv8jQY0VCBCNWtikoWq0=
 golang.org/x/tools v0.0.0-20200928182047-19e03678916f/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
-golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a h1:CB3a9Nez8M13wwlr/E2YtwoU+qYHKfC+JrDa45RXXoQ=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1198,48 +1143,20 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98
 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
 google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
 google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1 h1:aQktFqmDE2yjveXJlVIfslDFmFnUXSqG0i6KRcJAeMc=
 google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884 h1:fiNLklpBwWK1mth30Hlwk+fcdBmIALlgF5iy77O37Ig=
 google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
 google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98 h1:LCO0fg4kb6WwkXQXRQQgUYsFeFb5taTX5WAx5O/Vt28=
 google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
-google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
-google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
 google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg=
 google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc=
-google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
-google.golang.org/grpc v1.36.0 h1:o1bcQ6imQMIOpdrO3SWf2z5RV72WbDwdXuK0MDlc8As=
-google.golang.org/grpc v1.36.1 h1:cmUfbeGKnz9+2DD/UYsMQXeqbHZqZDs4eQwW0sFOpBY=
-google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c=
-google.golang.org/grpc/examples v0.0.0-20210301210255-fc8f38cccf75 h1:IFbcGka/Xo8VIhRtCz9UBaDblKK7/iwLiXwm9D62Jzk=
-google.golang.org/grpc/examples v0.0.0-20210301210255-fc8f38cccf75/go.mod h1:Ly7ZA/ARzg8fnPU9TyZIxoz33sEUuWX7txiqs8lPTgE=
-google.golang.org/grpc/examples v0.0.0-20210322221411-d26af8e39165 h1:MSAfAlpjtliqDmmqgrhs9WVpSbQdL+zbGc7y7m6zDVQ=
-google.golang.org/grpc/examples v0.0.0-20210322221411-d26af8e39165/go.mod h1:Ly7ZA/ARzg8fnPU9TyZIxoz33sEUuWX7txiqs8lPTgE=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
 google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
 google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
 google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
 google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
 google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
@@ -1251,7 +1168,6 @@ gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUy
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
@@ -1289,7 +1205,6 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -1310,13 +1225,11 @@ k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
 k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
 k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
 k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
-k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
 k8s.io/utils v0.0.0-20190801114015-581e00157fb1 h1:+ySTxfHnfzZb9ys375PXNlLhkJPLKgHajBU0N62BDvE=
 k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
 launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM=
 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
 sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
-sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
 sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
 sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
 sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
diff --git a/multi-zone/go-server-hz/docker/docker-compose.yml b/multi-zone/go-server-hz/docker/docker-compose.yml
new file mode 100644
index 0000000..8f9f4c1
--- /dev/null
+++ b/multi-zone/go-server-hz/docker/docker-compose.yml
@@ -0,0 +1,13 @@
+version: '3'
+
+services:
+  hangzouZk:
+    image: zookeeper
+    ports:
+      - 2183:2181
+    restart: on-failure
+  shanghaiZk:
+    image: zookeeper
+    ports:
+      - 2182:2181
+    restart: on-failure
diff --git a/multi-zone/go-server-hz/docker/docker-health-check.sh b/multi-zone/go-server-hz/docker/docker-health-check.sh
new file mode 100644
index 0000000..d63d43c
--- /dev/null
+++ b/multi-zone/go-server-hz/docker/docker-health-check.sh
@@ -0,0 +1,18 @@
+curl 127.0.0.1:2182
+res=$?
+passCode=52
+while [ "$res" != "$passCode" ];do
+  sleep 5
+  curl 127.0.0.1:2182
+  res=$?
+done
+
+curl 127.0.0.1:2183
+res=$?
+while [ "$res" != "$passCode" ];do
+  sleep 5
+  curl 127.0.0.1:2183
+  res=$?
+done
+
+sleep 5
\ No newline at end of file
diff --git a/multi-zone/go-server-sh/docker/docker-compose.yml b/multi-zone/go-server-sh/docker/docker-compose.yml
new file mode 100644
index 0000000..8f9f4c1
--- /dev/null
+++ b/multi-zone/go-server-sh/docker/docker-compose.yml
@@ -0,0 +1,13 @@
+version: '3'
+
+services:
+  hangzouZk:
+    image: zookeeper
+    ports:
+      - 2183:2181
+    restart: on-failure
+  shanghaiZk:
+    image: zookeeper
+    ports:
+      - 2182:2181
+    restart: on-failure
diff --git a/multi-zone/go-server-sh/docker/docker-health-check.sh b/multi-zone/go-server-sh/docker/docker-health-check.sh
new file mode 100644
index 0000000..d63d43c
--- /dev/null
+++ b/multi-zone/go-server-sh/docker/docker-health-check.sh
@@ -0,0 +1,18 @@
+curl 127.0.0.1:2182
+res=$?
+passCode=52
+while [ "$res" != "$passCode" ];do
+  sleep 5
+  curl 127.0.0.1:2182
+  res=$?
+done
+
+curl 127.0.0.1:2183
+res=$?
+while [ "$res" != "$passCode" ];do
+  sleep 5
+  curl 127.0.0.1:2183
+  res=$?
+done
+
+sleep 5
\ No newline at end of file
diff --git a/tls/go-server/tests/integration/main_test.go b/registry/zookeeper/go-client/cmd/client.go
similarity index 61%
copy from tls/go-server/tests/integration/main_test.go
copy to registry/zookeeper/go-client/cmd/client.go
index 89d1c93..37c26bd 100644
--- a/tls/go-server/tests/integration/main_test.go
+++ b/registry/zookeeper/go-client/cmd/client.go
@@ -1,5 +1,3 @@
-// +build integration
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -17,64 +15,51 @@
  * limitations under the License.
  */
 
-package integration
+package main
 
 import (
 	"context"
 	"os"
-	"path/filepath"
-	"testing"
 	"time"
 )
 
 import (
-	getty "github.com/apache/dubbo-getty"
-
 	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
-)
-
-var userProvider = new(UserProvider)
 
-func TestMain(m *testing.M) {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	clientKeyPath, _ := filepath.Abs("../certs/ca.key")
-	caPemPath, _ := filepath.Abs("../certs/ca.pem")
-	config.SetSslEnabled(true)
-	config.SetClientTlsConfigBuilder(&getty.ClientTlsConfigBuilder{
-		ClientPrivateKeyPath:          clientKeyPath,
-		ClientTrustCertCollectionPath: caPemPath,
-	})
-	config.Load()
-	time.Sleep(3 * time.Second)
+	"github.com/dubbogo/gost/log"
+)
 
-	os.Exit(m.Run())
-}
+import (
+	"github.com/apache/dubbo-go-samples/registry/nacos/go-client/pkg"
+)
 
-type User struct {
-	ID   string
-	Name string
-	Age  int32
-	Time time.Time
-}
+var userProvider = new(pkg.UserProvider)
 
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
+func init() {
+	config.SetConsumerService(userProvider)
+	hessian.RegisterPOJO(&pkg.User{})
 }
 
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
+// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
+func main() {
+	config.Load()
+	time.Sleep(3 * time.Second)
 
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
+	gxlog.CInfo("\n\n\nstart to test dubbo")
+	user := &pkg.User{}
+	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
+	if err != nil {
+		gxlog.CError("error: %v\n", err)
+		os.Exit(1)
+		return
+	}
+	gxlog.CInfo("response result: %v\n", user)
 }
diff --git a/registry/zookeeper/go-client/conf/client.yml b/registry/zookeeper/go-client/conf/client.yml
new file mode 100644
index 0000000..dab9c48
--- /dev/null
+++ b/registry/zookeeper/go-client/conf/client.yml
@@ -0,0 +1,57 @@
+# dubbo client yaml configure file
+
+check: true
+# client
+request_timeout: "3s"
+# connect timeout
+connect_timeout: "3s"
+
+# application config
+application:
+  organization: "dubbo.io"
+  name: "UserInfoClient"
+  module: "dubbo-go user-info client"
+  version: "0.0.1"
+  environment: "dev"
+
+# registry config
+registries:
+  "demoZK":
+    protocol: "zookeeper"
+    timeout: "3s"
+    address: "127.0.0.1:2181"
+
+# reference config
+references:
+  "UserProvider":
+    registry: "demoZK"
+    protocol: "dubbo"
+    interface: "org.apache.dubbo.UserProvider"
+    cluster: "failover"
+    methods:
+      - name: "GetUser"
+        retries: 3
+
+# protocol config
+protocol_conf:
+  dubbo:
+    reconnect_interval: 0
+    connection_number: 1
+    heartbeat_period: "5s"
+    session_timeout: "180s"
+    pool_size: 64
+    pool_ttl: 600
+    getty_session_param:
+      compress_encoding: false
+      tcp_no_delay: true
+      tcp_keep_alive: true
+      keep_alive_period: "120s"
+      tcp_r_buf_size: 262144
+      tcp_w_buf_size: 65536
+      pkg_rq_size: 1024
+      pkg_wq_size: 512
+      tcp_read_timeout: "1s"
+      tcp_write_timeout: "5s"
+      wait_timeout: "1s"
+      max_msg_len: 1024000
+      session_name: "client"
diff --git a/general/jsonrpc/go-client/profiles/dev/log.yml b/registry/zookeeper/go-client/conf/log.yml
similarity index 93%
rename from general/jsonrpc/go-client/profiles/dev/log.yml
rename to registry/zookeeper/go-client/conf/log.yml
index 3ed242d..2b6e93a 100644
--- a/general/jsonrpc/go-client/profiles/dev/log.yml
+++ b/registry/zookeeper/go-client/conf/log.yml
@@ -1,4 +1,3 @@
-
 level: "debug"
 development: true
 disableCaller: false
@@ -15,7 +14,7 @@ encoderConfig:
   callerKey: "caller"
   stacktraceKey: "stacktrace"
   lineEnding: ""
-  levelEncoder: "capitalColor"
+  levelEncoder: "capital"
   timeEncoder: "iso8601"
   durationEncoder: "seconds"
   callerEncoder: "short"
diff --git a/general/jsonrpc/go-server/app/version.go b/registry/zookeeper/go-client/pkg/user.go
similarity index 69%
rename from general/jsonrpc/go-server/app/version.go
rename to registry/zookeeper/go-client/pkg/user.go
index ae51f45..7733ea4 100644
--- a/general/jsonrpc/go-server/app/version.go
+++ b/registry/zookeeper/go-client/pkg/user.go
@@ -15,8 +15,28 @@
  * limitations under the License.
  */
 
-package main
+package pkg
 
-var (
-	Version = "2.7.5"
+import (
+	"context"
+	"time"
 )
+
+type User struct {
+	ID   string
+	Name string
+	Age  int32
+	Time time.Time
+}
+
+type UserProvider struct {
+	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
+}
+
+func (u *UserProvider) Reference() string {
+	return "UserProvider"
+}
+
+func (User) JavaClassName() string {
+	return "org.apache.dubbo.User"
+}
diff --git a/general/jsonrpc/go-server/app/server.go b/registry/zookeeper/go-server/cmd/server.go
similarity index 89%
rename from general/jsonrpc/go-server/app/server.go
rename to registry/zookeeper/go-server/cmd/server.go
index 1f0dfe9..02c7cc1 100644
--- a/general/jsonrpc/go-server/app/server.go
+++ b/registry/zookeeper/go-server/cmd/server.go
@@ -32,20 +32,21 @@ import (
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/protocol/jsonrpc"
+	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
 )
 
+import (
+	_ "github.com/apache/dubbo-go-samples/registry/nacos/go-server/pkg"
+)
+
 var (
 	survivalTimeout = int(3e9)
 )
 
-// they are necessary:
-// 		export CONF_PROVIDER_FILE_PATH="xxx"
-// 		export APP_LOG_CONF_FILE="xxx"
+// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
 func main() {
-
 	config.Load()
 
 	initSignal()
@@ -60,7 +61,7 @@ func initSignal() {
 		logger.Infof("get signal %s", sig.String())
 		switch sig {
 		case syscall.SIGHUP:
-		// reload()
+			// reload()
 		default:
 			time.AfterFunc(time.Duration(survivalTimeout), func() {
 				logger.Warnf("app exit now by force...")
diff --git a/registry/zookeeper/go-server/conf/client.yml b/registry/zookeeper/go-server/conf/client.yml
new file mode 100644
index 0000000..905dd48
--- /dev/null
+++ b/registry/zookeeper/go-server/conf/client.yml
@@ -0,0 +1,57 @@
+# dubbo client yaml configure file
+
+check: true
+# client
+request_timeout: "3s"
+# connect timeout
+connect_timeout: "3s"
+
+# application config
+application:
+  organization: "dubbo.io"
+  name: "UserInfoTest"
+  module: "dubbo-go user-info client"
+  version: "0.0.1"
+  environment: "dev"
+
+# registry config
+registries:
+  "demoZK":
+    protocol: "zookeeper"
+    timeout	: "3s"
+    address: "127.0.0.1:2181"
+
+# reference config
+references:
+  "UserProvider":
+    registry: "demoZK"
+    protocol: "dubbo"
+    interface: "org.apache.dubbo.UserProvider"
+    cluster: "failover"
+    methods:
+      - name: "GetUser"
+        retries: 3
+
+# protocol config
+protocol_conf:
+  dubbo:
+    reconnect_interval: 0
+    connection_number: 1
+    heartbeat_period: "5s"
+    session_timeout: "180s"
+    pool_size: 64
+    pool_ttl: 600
+    getty_session_param:
+      compress_encoding: false
+      tcp_no_delay: true
+      tcp_keep_alive: true
+      keep_alive_period: "120s"
+      tcp_r_buf_size: 262144
+      tcp_w_buf_size: 65536
+      pkg_rq_size: 1024
+      pkg_wq_size: 512
+      tcp_read_timeout: "1s"
+      tcp_write_timeout: "5s"
+      wait_timeout: "1s"
+      max_msg_len: 1024000
+      session_name: "client"
diff --git a/general/jsonrpc/go-client/profiles/test/log.yml b/registry/zookeeper/go-server/conf/log.yml
similarity index 81%
rename from general/jsonrpc/go-client/profiles/test/log.yml
rename to registry/zookeeper/go-server/conf/log.yml
index f93d3c7..2b6e93a 100644
--- a/general/jsonrpc/go-client/profiles/test/log.yml
+++ b/registry/zookeeper/go-server/conf/log.yml
@@ -1,8 +1,7 @@
-
-level: "info"
-development: false
+level: "debug"
+development: true
 disableCaller: false
-disableStacktrace: true
+disableStacktrace: false
 sampling:
 encoding: "console"
 
@@ -15,7 +14,7 @@ encoderConfig:
   callerKey: "caller"
   stacktraceKey: "stacktrace"
   lineEnding: ""
-  levelEncoder: "capitalColor"
+  levelEncoder: "capital"
   timeEncoder: "iso8601"
   durationEncoder: "seconds"
   callerEncoder: "short"
diff --git a/registry/zookeeper/go-server/conf/server.yml b/registry/zookeeper/go-server/conf/server.yml
new file mode 100644
index 0000000..f234dd4
--- /dev/null
+++ b/registry/zookeeper/go-server/conf/server.yml
@@ -0,0 +1,55 @@
+# dubbo server yaml configure file
+
+# application config
+application:
+  organization: "dubbo.io"
+  name: "UserInfoServer"
+  module: "dubbo-go user-info server"
+  version: "0.0.1"
+  environment: "dev"
+
+# registry config
+registries:
+  "demoZK":
+    protocol: "zookeeper"
+    timeout	: "3s"
+    address: "127.0.0.1:2181"
+
+# service config
+services:
+  "UserProvider":
+    registry: "demoZK"
+    protocol: "dubbo"
+    interface: "org.apache.dubbo.UserProvider"
+    loadbalance: "random"
+    warmup: "100"
+    cluster: "failover"
+    methods:
+      - name: "GetUser"
+        retries: 1
+        loadbalance: "random"
+
+# protocol config
+protocols:
+  "dubbo":
+    name: "dubbo"
+    port: 20000
+
+protocol_conf:
+  dubbo:
+    session_number: 700
+    session_timeout: "180s"
+    getty_session_param:
+      compress_encoding: false
+      tcp_no_delay: true
+      tcp_keep_alive: true
+      keep_alive_period: "120s"
+      tcp_r_buf_size: 262144
+      tcp_w_buf_size: 65536
+      pkg_rq_size: 1024
+      pkg_wq_size: 512
+      tcp_read_timeout: "1s"
+      tcp_write_timeout: "5s"
+      wait_timeout: "1s"
+      max_msg_len: 1024000
+      session_name: "server"
diff --git a/registry/zookeeper/go-server/docker/docker-compose.yml b/registry/zookeeper/go-server/docker/docker-compose.yml
new file mode 100644
index 0000000..386a42e
--- /dev/null
+++ b/registry/zookeeper/go-server/docker/docker-compose.yml
@@ -0,0 +1,8 @@
+version: '3'
+
+services:
+  zookeeper:
+    image: zookeeper
+    ports:
+      - 2181:2181
+    restart: on-failure
\ No newline at end of file
diff --git a/general/grpc/unary/go-client/app/hello.go b/registry/zookeeper/go-server/pkg/user.go
similarity index 54%
copy from general/grpc/unary/go-client/app/hello.go
copy to registry/zookeeper/go-server/pkg/user.go
index 95b78c5..b778495 100644
--- a/general/grpc/unary/go-client/app/hello.go
+++ b/registry/zookeeper/go-server/pkg/user.go
@@ -15,29 +15,47 @@
  * limitations under the License.
  */
 
-package main
-
+package pkg
 
 import (
 	"context"
+	"time"
 )
 
 import (
-	"google.golang.org/grpc"
-)
+	hessian "github.com/apache/dubbo-go-hessian2"
+	"github.com/apache/dubbo-go/config"
 
-import (
-	"github.com/apache/dubbo-go-samples/general/grpc/protobuf"
+	"github.com/dubbogo/gost/log"
 )
 
-type GrpcGreeterImpl struct {
-	SayHello func(ctx context.Context, in *protobuf.HelloRequest, out *protobuf.HelloReply) error
+func init() {
+	config.SetProviderService(new(UserProvider))
+	// ------for hessian2------
+	hessian.RegisterPOJO(&User{})
+}
+
+type User struct {
+	ID   string
+	Name string
+	Age  int32
+	Time time.Time
+}
+
+type UserProvider struct {
+}
+
+func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
+	gxlog.CInfo("req:%#v", req)
+	rsp := User{"A001", "Alex Stocks", 18, time.Now()}
+	gxlog.CInfo("rsp:%#v", rsp)
+	return &rsp, nil
 }
 
-func (u *GrpcGreeterImpl) Reference() string {
-	return "GrpcGreeterImpl"
+func (u *UserProvider) Reference() string {
+	return "UserProvider"
 }
 
-func (u *GrpcGreeterImpl) GetDubboStub(cc *grpc.ClientConn) protobuf.GreeterClient {
-	return protobuf.NewGreeterClient(cc)
+func (u User) JavaClassName() string {
+	return "org.apache.dubbo.User"
 }
diff --git a/tls/go-server/tests/integration/main_test.go b/registry/zookeeper/go-server/tests/integration/main_test.go
similarity index 82%
copy from tls/go-server/tests/integration/main_test.go
copy to registry/zookeeper/go-server/tests/integration/main_test.go
index 89d1c93..0dfb2f4 100644
--- a/tls/go-server/tests/integration/main_test.go
+++ b/registry/zookeeper/go-server/tests/integration/main_test.go
@@ -22,21 +22,17 @@ package integration
 import (
 	"context"
 	"os"
-	"path/filepath"
 	"testing"
 	"time"
 )
 
 import (
-	getty "github.com/apache/dubbo-getty"
-
 	hessian "github.com/apache/dubbo-go-hessian2"
 	_ "github.com/apache/dubbo-go/cluster/cluster_impl"
 	_ "github.com/apache/dubbo-go/cluster/loadbalance"
 	_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
 	"github.com/apache/dubbo-go/config"
 	_ "github.com/apache/dubbo-go/filter/filter_impl"
-	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/zookeeper"
@@ -47,13 +43,6 @@ var userProvider = new(UserProvider)
 func TestMain(m *testing.M) {
 	config.SetConsumerService(userProvider)
 	hessian.RegisterPOJO(&User{})
-	clientKeyPath, _ := filepath.Abs("../certs/ca.key")
-	caPemPath, _ := filepath.Abs("../certs/ca.pem")
-	config.SetSslEnabled(true)
-	config.SetClientTlsConfigBuilder(&getty.ClientTlsConfigBuilder{
-		ClientPrivateKeyPath:          clientKeyPath,
-		ClientTrustCertCollectionPath: caPemPath,
-	})
 	config.Load()
 	time.Sleep(3 * time.Second)
 
diff --git a/general/jsonrpc/go-client/app/version.go b/registry/zookeeper/go-server/tests/integration/userprovider_test.go
similarity index 66%
rename from general/jsonrpc/go-client/app/version.go
rename to registry/zookeeper/go-server/tests/integration/userprovider_test.go
index ae51f45..7183e64 100644
--- a/general/jsonrpc/go-client/app/version.go
+++ b/registry/zookeeper/go-server/tests/integration/userprovider_test.go
@@ -1,3 +1,5 @@
+// +build integration
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,8 +17,23 @@
  * limitations under the License.
  */
 
-package main
+package integration
+
+import (
+	"context"
+	"testing"
+)
 
-var (
-	Version = "2.7.5"
+import (
+	"github.com/stretchr/testify/assert"
 )
+
+func TestGetUser(t *testing.T) {
+	user := &User{}
+	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
+	assert.Nil(t, err)
+	assert.Equal(t, "A001", user.ID)
+	assert.Equal(t, "Alex Stocks", user.Name)
+	assert.Equal(t, int32(18), user.Age)
+	assert.NotNil(t, user.Time)
+}
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index edeedc7..320923b 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -17,6 +17,14 @@
 
 # Attention! when runing on Apple M1, pls start nacos&zk server on your computer first, and comment samples with # M1 ignore.
 
+# config-api
+array=("config-api/go-server")
+
+# config-center
+array+=("configcenter/apollo/go-server")
+array+=("configcenter/zookeeper/go-server")
+array+=("configcenter/nacos/go-server")
+
 # context
 array+=("context/go-server")
 
@@ -35,8 +43,8 @@ array+=("game/go-server-gate")
 # general
 array+=("general/dubbo/go-server")
 array+=("general/grpc/go-server")
-#array+=("general/jsonrpc/go-server") # Unsupported
-#array+=("general/rest/go-server") # Unsupported
+array+=("general/jsonrpc/go-server")
+array+=("general/rest/go-server")
 
 # generic
 array+=("generic/go-server")
@@ -51,8 +59,12 @@ array+=("helloworld/go-server")
 # metric
 array+=("metric/go-server")
 
+# multi-registry
+array+=("multi-registry/go-server")
+
 # multi-zone
-#array+=("multi-zone") # Unsupported
+array+=("multi-zone/go-server-hz")
+array+=("multi-zone/go-server-sh")
 
 # registry
 array+=("registry/etcd/go-server") # M1 ignore
@@ -64,11 +76,10 @@ array+=("registry/servicediscovery/nacos/go-server")
 array+=("registry/servicediscovery/zookeeper/go-server")
 
 # router
-#array+=("router/condition/go-server") # Bug
-#array+=("router/tag/go-server") # Bug
+#array+=("router/condition/go-server") # unsupported
+#array+=("router/tag/go-server") # unsupported
 
-# tls
-#array+=("tls/go-server") # Bug
+array+=("tls/go-server")
 
 # version
 array+=("version/go-server-v1")
@@ -81,4 +92,4 @@ do
 	if [ $result -gt 0 ]; then
         exit $result
 	fi
-done
+done
\ No newline at end of file
diff --git a/tls/go-client/cmd/client.go b/tls/go-client/cmd/client.go
index 9ed5f7c..907f784 100755
--- a/tls/go-client/cmd/client.go
+++ b/tls/go-client/cmd/client.go
@@ -50,20 +50,26 @@ import (
 
 var (
 	survivalTimeout int = 10e9
-	userProvider = new(pkg.UserProvider)
+	userProvider        = new(pkg.UserProvider)
 )
 
-func init(){
+func init() {
 	config.SetConsumerService(userProvider)
 	hessian.RegisterPOJO(&pkg.User{})
-	clientKeyPath, _ := filepath.Abs("../certs/ca.key")
-	caPemPath, _ := filepath.Abs("../certs/ca.pem")
+	clientKeyPath, _ := filepath.Abs("tls/certs/ca.key")
+	caPemPath, _ := filepath.Abs("tls/certs/ca.pem")
+	if tlsCertRoot := os.Getenv("TLS_CERTS_ROOT"); tlsCertRoot != "" {
+		clientKeyPath = filepath.Join(tlsCertRoot, "ca.key")
+		caPemPath = filepath.Join(tlsCertRoot, "ca.pem")
+	}
+
 	config.SetSslEnabled(true)
 	config.SetClientTlsConfigBuilder(&getty.ClientTlsConfigBuilder{
 		ClientPrivateKeyPath:          clientKeyPath,
 		ClientTrustCertCollectionPath: caPemPath,
 	})
 }
+
 // they are necessary:
 // 		export CONF_CONSUMER_FILE_PATH="xxx"
 // 		export APP_LOG_CONF_FILE="xxx"
@@ -73,7 +79,7 @@ func main() {
 
 	gxlog.CInfo("\n\n\nstart to test dubbo")
 	user := &pkg.User{}
-	for i := 0;i < 10 ;i ++{
+	for i := 0; i < 10; i++ {
 		err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
 		if err != nil {
 			panic(err)
diff --git a/tls/go-server/cmd/server.go b/tls/go-server/cmd/server.go
index 7325b19..411f5bf 100755
--- a/tls/go-server/cmd/server.go
+++ b/tls/go-server/cmd/server.go
@@ -46,13 +46,20 @@ import (
 )
 
 var (
-	survivalTimeout = 	int(3e9)
+	survivalTimeout = int(3e9)
 )
 
-func init(){
-	serverPemPath, _ := filepath.Abs("../certs/server.pem")
-	serverKeyPath, _ := filepath.Abs("../certs/server.key")
-	caPemPath, _ := filepath.Abs("../certs/ca.pem")
+func init() {
+	serverPemPath, _ := filepath.Abs("tls/certs/server.pem")
+	serverKeyPath, _ := filepath.Abs("tls/certs/server.key")
+	caPemPath, _ := filepath.Abs("tls/certs/ca.pem")
+
+	if tlsCertRoot := os.Getenv("TLS_CERTS_ROOT"); tlsCertRoot != "" {
+		serverPemPath = filepath.Join(tlsCertRoot, "server.pem")
+		serverKeyPath = filepath.Join(tlsCertRoot, "server.key")
+		caPemPath = filepath.Join(tlsCertRoot, "ca.pem")
+	}
+
 	config.SetSslEnabled(true)
 	config.SetServerTlsConfigBuilder(&getty.ServerTlsConfigBuilder{
 		ServerKeyCertChainPath:        serverPemPath,
@@ -65,7 +72,7 @@ func init(){
 	they are necessary:
 		export CONF_PROVIDER_FILE_PATH="xx"
 		export APP_LOG_CONF_FILE="xx"
- */
+*/
 func main() {
 	config.SetProviderService(new(pkg.UserProvider))
 	// serializing at run time
diff --git a/tls/go-server/tests/integration/main_test.go b/tls/go-server/tests/integration/main_test.go
index 89d1c93..68d6dbb 100644
--- a/tls/go-server/tests/integration/main_test.go
+++ b/tls/go-server/tests/integration/main_test.go
@@ -47,8 +47,14 @@ var userProvider = new(UserProvider)
 func TestMain(m *testing.M) {
 	config.SetConsumerService(userProvider)
 	hessian.RegisterPOJO(&User{})
-	clientKeyPath, _ := filepath.Abs("../certs/ca.key")
-	caPemPath, _ := filepath.Abs("../certs/ca.pem")
+	clientKeyPath, _ := filepath.Abs("../../../certs/ca.key")
+	caPemPath, _ := filepath.Abs("../../../certs/ca.pem")
+
+	if tlsCertRoot := os.Getenv("TLS_CERTS_ROOT"); tlsCertRoot != "" {
+		clientKeyPath = filepath.Join(tlsCertRoot, "ca.key")
+		caPemPath = filepath.Join(tlsCertRoot, "ca.pem")
+	}
+
 	config.SetSslEnabled(true)
 	config.SetClientTlsConfigBuilder(&getty.ClientTlsConfigBuilder{
 		ClientPrivateKeyPath:          clientKeyPath,

[dubbo-go-samples] 09/18: fix: 1.5 ci test (#165)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 910b0bc5805b2b2dbc2c0bc59b0d3d96a11c7d49
Author: Laurence <45...@users.noreply.github.com>
AuthorDate: Sat Jul 10 18:22:57 2021 +0800

    fix: 1.5 ci test (#165)
    
    * fix: 1.5 ci test
    
    * fix: fix etcd network
    
    * fix: fix etcd network
    
    * Fix: comment consul integ test
    
    * fix: fix etcd and nacos config
    
    * fix: fix nacos
---
 .../tests/integration/userprovider_test.go         |   5 ---
 build/Makefile                                     |  14 +++++-
 .../nacos/go-server/docker/docker-compose.yml      |   8 ++--
 .../nacos/go-server/docker/docker-health-check.sh  |   3 ++
 general/dubbo3/.DS_Store                           | Bin 0 -> 6148 bytes
 general/dubbo3/pb/.DS_Store                        | Bin 0 -> 6148 bytes
 go.mod                                             |   3 +-
 go.sum                                             |   4 ++
 integrate_test.sh                                  |  29 +++++++------
 multi-registry/go-server/docker/docker-compose.yml |   8 +++-
 .../go-server/docker/docker-health-check.sh        |   3 ++
 registry/etcd/go-server/docker/docker-compose.yml  |  12 ++----
 registry/nacos/go-server/docker/docker-compose.yml |   7 ++-
 .../nacos/go-server/docker/docker-health-check.sh  |   3 ++
 .../etcd/go-server/docker/docker-compose.yml       |   6 +--
 .../file/go-server/tests/integration/main_test.go  |   1 +
 .../nacos/go-server/docker/docker-compose.yml      |   7 ++-
 .../nacos/go-server/docker/docker-health-check.sh  |   3 ++
 start_integrate_test.sh                            |  47 +++++++--------------
 19 files changed, 90 insertions(+), 73 deletions(-)

diff --git a/async/go-server/tests/integration/userprovider_test.go b/async/go-server/tests/integration/userprovider_test.go
index 947d2cb..fa08987 100644
--- a/async/go-server/tests/integration/userprovider_test.go
+++ b/async/go-server/tests/integration/userprovider_test.go
@@ -38,12 +38,7 @@ func TestGetUser(t *testing.T) {
 	user := &User{}
 	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
 	assert.Nil(t, err)
-	assert.Equal(t, "", user.ID)
-	assert.Equal(t, "", user.Name)
-	assert.Equal(t, int32(0), user.Age)
-
 	user = <-userProvider.ch
-
 	assert.NotNil(t, user)
 	assert.Equal(t, "A001", user.ID)
 	assert.Equal(t, "Alex Stocks", user.Name)
diff --git a/build/Makefile b/build/Makefile
index efec57c..364ba5c 100644
--- a/build/Makefile
+++ b/build/Makefile
@@ -87,6 +87,12 @@ config:
 	@-test -f $(PROJECT_DIR)/conf/client.yml && cat $(PROJECT_DIR)/conf/client.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/client.yml && echo "  > $(OUT_DIR)/conf/client.yml"
 	@-test -f $(PROJECT_DIR)/conf/router_config.yml && cat $(PROJECT_DIR)/conf/router_config.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/router_config.yml && echo "  > $(OUT_DIR)/conf/router_config.yml"
 
+## docker-health-check: check services health on docker
+.PHONY: docker-health-check
+docker-health-check:
+	$(info   >  run docker health check with $(PROJECT_DIR)/docker/docker-health-check.sh)
+	@-test -f $(PROJECT_DIR)/docker/docker-health-check.sh && bash -f $(PROJECT_DIR)/docker/docker-health-check.sh
+
 ## docker-up: Shutdown dependency services on docker
 .PHONY: docker-up
 docker-up:
@@ -114,6 +120,12 @@ start: build
 	@-$(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME) > $(LOG_FILE) 2>&1 & echo $$! > $(PID)
 	@cat $(PID) | sed "/^/s/^/  \>  PID: /"
 
+## start: print application log (for server)
+.PHONY: print-server-log
+print-server-log:
+	$(info   >  print server log with $(LOG_FILE))
+	@-cat $(LOG_FILE)
+
 ## run: Run the application (for client)
 .PHONY: run
 run: export CONF_CONSUMER_FILE_PATH ?= $(OUT_DIR)/conf/client.yml
@@ -136,4 +148,4 @@ integration: export CONF_ROUTER_FILE_PATH ?= $(OUT_DIR)/conf/router_config.yml
 integration:
 	$(info   >  Running integration test for application $(PROJECT_NAME))
 	@go clean -testcache
-	@go test -tags integration -v $(PROJECT_DIR)/tests/...
\ No newline at end of file
+	@go test -tags integration -v $(PROJECT_DIR)/tests/...
diff --git a/configcenter/nacos/go-server/docker/docker-compose.yml b/configcenter/nacos/go-server/docker/docker-compose.yml
index 83e1311..d9d8b8c 100644
--- a/configcenter/nacos/go-server/docker/docker-compose.yml
+++ b/configcenter/nacos/go-server/docker/docker-compose.yml
@@ -6,12 +6,14 @@ services:
     ports:
       - 2181:2181
     restart: on-failure
-
   nacos:
-    image: nacos/nacos-server:latest
+    image: nacos/nacos-server:1.4.1
     container_name: nacos-standalone
     environment:
       - PREFER_HOST_MODE=hostname
       - MODE=standalone
     ports:
-      - "8848:8848"
\ No newline at end of file
+      - "8848:8848"
+    healthcheck:
+      test: "curl --fail http://127.0.0.1:8848/nacos/v1/console/health/liveness || exit 1"
+      interval: 5s
diff --git a/configcenter/nacos/go-server/docker/docker-health-check.sh b/configcenter/nacos/go-server/docker/docker-health-check.sh
new file mode 100644
index 0000000..e6b78dc
--- /dev/null
+++ b/configcenter/nacos/go-server/docker/docker-health-check.sh
@@ -0,0 +1,3 @@
+sleep 10
+curl http://127.0.0.1:8848/nacos/v1/console/health/liveness
+sleep 30
diff --git a/general/dubbo3/.DS_Store b/general/dubbo3/.DS_Store
new file mode 100644
index 0000000..b85adcb
Binary files /dev/null and b/general/dubbo3/.DS_Store differ
diff --git a/general/dubbo3/pb/.DS_Store b/general/dubbo3/pb/.DS_Store
new file mode 100644
index 0000000..e7e3e36
Binary files /dev/null and b/general/dubbo3/pb/.DS_Store differ
diff --git a/go.mod b/go.mod
index e8ae5c3..66e33eb 100644
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ require (
 	github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 // indirect
 	github.com/alibaba/sentinel-golang v1.0.2
 	github.com/apache/dubbo-getty v1.4.3
-	github.com/apache/dubbo-go v1.5.7-rc1
+	github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210705022741-5520fa1783c9
 	github.com/apache/dubbo-go-hessian2 v1.9.2
 	github.com/bwmarrin/snowflake v0.3.0
 	github.com/docker/go-connections v0.4.0 // indirect
@@ -25,6 +25,7 @@ require (
 	github.com/pkg/errors v0.9.1
 	github.com/prometheus/client_golang v1.9.0
 	github.com/stretchr/testify v1.7.0
+	github.com/tinylib/msgp v1.1.0 // indirect
 	github.com/transaction-wg/seata-golang v0.2.1-alpha
 	github.com/uber/jaeger-client-go v2.22.1+incompatible
 	github.com/uber/jaeger-lib v2.2.0+incompatible // indirect
diff --git a/go.sum b/go.sum
index 357b231..7aa9179 100644
--- a/go.sum
+++ b/go.sum
@@ -64,6 +64,8 @@ github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt
 github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
 github.com/RoaringBitmap/roaring v0.5.5 h1:naNqvO1mNnghk2UvcsqnzHDBn9DRbCIRy94GmDTRVTQ=
 github.com/RoaringBitmap/roaring v0.5.5/go.mod h1:puNo5VdzwbaIQxSiDIwfXl4Hnc+fbovcX4IW/dSTtUk=
+github.com/RoaringBitmap/roaring v0.6.1 h1:O36Tdaj1Fi/zyr25shTHwlQPGdq53+u4WkM08AOEjiE=
+github.com/RoaringBitmap/roaring v0.6.1/go.mod h1:WZ83fjBF/7uBHi6QoFyfGL4+xuV4Qn+xFkm4+vSzrhE=
 github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
 github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
 github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
@@ -97,6 +99,8 @@ github.com/apache/dubbo-go v1.5.6 h1:iTMrXo8jB6DxKOhM83NKDnGA8c9ZPnofCOos/GvKyF8
 github.com/apache/dubbo-go v1.5.6/go.mod h1:wLJvPWbnrf6/bhoohBT404QK4t2JoNcckMw+/fJ9P+c=
 github.com/apache/dubbo-go v1.5.7-rc1 h1:PBK/Ox35L8QH85eBmHAqsg/EL2SnO+xwcCw67lQ4z4Q=
 github.com/apache/dubbo-go v1.5.7-rc1/go.mod h1:wLJvPWbnrf6/bhoohBT404QK4t2JoNcckMw+/fJ9P+c=
+github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210705022741-5520fa1783c9 h1:PZuFw8Ueg78qK7UOwenvybOP+IWGEY7VIOwN6wGQf6k=
+github.com/apache/dubbo-go v1.5.7-rc1-tmp.0.20210705022741-5520fa1783c9/go.mod h1:6Hvmwl8GoXTfw7niSzn60yvUp6FAzcv5K+x++MoCoD4=
 github.com/apache/dubbo-go-hessian2 v1.8.2 h1:CQq2Mmlrk6Fqmudwl9Dqps8drTrBFnmXRlzgOjj0FqA=
 github.com/apache/dubbo-go-hessian2 v1.8.2/go.mod h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
 github.com/apache/dubbo-go-hessian2 v1.9.1 h1:ceSsU/9z/gv3hzUpl8GceEhQvF3i0BionfdHUGMmjHU=
diff --git a/integrate_test.sh b/integrate_test.sh
index bd6d076..8ae516c 100755
--- a/integrate_test.sh
+++ b/integrate_test.sh
@@ -15,28 +15,31 @@
 #  limitations under the License.
 
 if [ -z "$1" ]; then
-    echo "Provide test directory please, like : ./integrate_test.sh $(pwd)/helloworld/go-server ."
-    exit
+  echo "Provide test directory please, like : ./integrate_test.sh $(pwd)/helloworld/go-server ."
+  exit
 fi
 
 P_DIR=$(pwd)/$1
 
-if [ -f "$P_DIR"/build/test.sh ]; then
-    "$P_DIR"/build/test.sh "$P_DIR"
-    result=$?
-    exit $((result))
-fi
+make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile docker-up
 
-make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename $P_DIR)" BASE_DIR="$P_DIR"/dist -f build/Makefile docker-up
+# check docker health
+make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile docker-health-check
 
 # start server
-make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename $P_DIR)" BASE_DIR="$P_DIR"/dist -f build/Makefile start
+make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile start
 # start integration
-make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename $P_DIR)" BASE_DIR="$P_DIR"/dist -f build/Makefile integration
+make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile integration
 result=$?
+
+# if fail print server log
+if [ $result != 0 ];then
+  make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile print-server-log
+fi
+
 # stop server
-make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename $P_DIR)" BASE_DIR="$P_DIR"/dist -f build/Makefile clean
+make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile clean
 
-make PROJECT_DIR="$P_DIR" PROJECT_NAME="$(basename $P_DIR)" BASE_DIR="$P_DIR"/dist -f build/Makefile docker-down
+make PROJECT_DIR=$P_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile docker-down
 
-exit $((result))
+exit $((result))
\ No newline at end of file
diff --git a/multi-registry/go-server/docker/docker-compose.yml b/multi-registry/go-server/docker/docker-compose.yml
index 0bbbe19..9247bf0 100644
--- a/multi-registry/go-server/docker/docker-compose.yml
+++ b/multi-registry/go-server/docker/docker-compose.yml
@@ -8,9 +8,9 @@ services:
       - dubbo
     ports:
       - 2181:2181
-  naocs:
+  nacos:
     image: nacos/nacos-server:1.4.1
-    container_name: nacos
+    container_name: nacos-standalone
     networks:
       - dubbo
     environment:
@@ -18,6 +18,10 @@ services:
       - MODE=standalone
     ports:
       - "8848:8848"
+    healthcheck:
+      test: "curl --fail http://127.0.0.1:8848/nacos/v1/console/health/liveness || exit 1"
+      interval: 5s
+
 # 网络
 networks:
   dubbo:
diff --git a/multi-registry/go-server/docker/docker-health-check.sh b/multi-registry/go-server/docker/docker-health-check.sh
new file mode 100644
index 0000000..e6b78dc
--- /dev/null
+++ b/multi-registry/go-server/docker/docker-health-check.sh
@@ -0,0 +1,3 @@
+sleep 10
+curl http://127.0.0.1:8848/nacos/v1/console/health/liveness
+sleep 30
diff --git a/registry/etcd/go-server/docker/docker-compose.yml b/registry/etcd/go-server/docker/docker-compose.yml
index 76a483e..50f97ae 100644
--- a/registry/etcd/go-server/docker/docker-compose.yml
+++ b/registry/etcd/go-server/docker/docker-compose.yml
@@ -4,24 +4,18 @@ services:
   etcd:
     image: "quay.io/coreos/etcd:latest"
     container_name: etcd
-    networks:
-      - dubbo
     environment:
       - ETCDCTL_API=3
     command: [
         "etcd",
         "--name=etcd0",
-        "--advertise-client-urls=http://${DOCKER_HOST_IP}:2379",
+        "--advertise-client-urls=http://127.0.0.1:2379",
         "--listen-client-urls=http://0.0.0.0:2379",
-        "--initial-advertise-peer-urls=http://${DOCKER_HOST_IP}:2380",
+        "--initial-advertise-peer-urls=http://127.0.0.1:2380",
         "--listen-peer-urls=http://0.0.0.0:2380",
-        "--initial-cluster=etcd0=http://${DOCKER_HOST_IP}:2380",
+        "--initial-cluster=etcd0=http://127.0.0.1:2380",
     ]
     ports:
       - "2379:2379"
       - "2380:2380"
     restart: always
-networks:
-  dubbo:
-    name: dubbo-go-samples
-    driver: bridge
diff --git a/registry/nacos/go-server/docker/docker-compose.yml b/registry/nacos/go-server/docker/docker-compose.yml
index 4b1d3d3..168ad5f 100644
--- a/registry/nacos/go-server/docker/docker-compose.yml
+++ b/registry/nacos/go-server/docker/docker-compose.yml
@@ -2,10 +2,13 @@ version: "3"
 
 services:
   nacos:
-    image: nacos/nacos-server:latest
+    image: nacos/nacos-server:1.4.1
     container_name: nacos-standalone
     environment:
       - PREFER_HOST_MODE=hostname
       - MODE=standalone
     ports:
-      - "8848:8848"
\ No newline at end of file
+      - "8848:8848"
+    healthcheck:
+      test: "curl --fail http://127.0.0.1:8848/nacos/v1/console/health/liveness || exit 1"
+      interval: 5s
diff --git a/registry/nacos/go-server/docker/docker-health-check.sh b/registry/nacos/go-server/docker/docker-health-check.sh
new file mode 100644
index 0000000..e6b78dc
--- /dev/null
+++ b/registry/nacos/go-server/docker/docker-health-check.sh
@@ -0,0 +1,3 @@
+sleep 10
+curl http://127.0.0.1:8848/nacos/v1/console/health/liveness
+sleep 30
diff --git a/registry/servicediscovery/etcd/go-server/docker/docker-compose.yml b/registry/servicediscovery/etcd/go-server/docker/docker-compose.yml
index 18c9d27..50f97ae 100644
--- a/registry/servicediscovery/etcd/go-server/docker/docker-compose.yml
+++ b/registry/servicediscovery/etcd/go-server/docker/docker-compose.yml
@@ -9,11 +9,11 @@ services:
     command: [
         "etcd",
         "--name=etcd0",
-        "--advertise-client-urls=http://${DOCKER_HOST_IP}:2379",
+        "--advertise-client-urls=http://127.0.0.1:2379",
         "--listen-client-urls=http://0.0.0.0:2379",
-        "--initial-advertise-peer-urls=http://${DOCKER_HOST_IP}:2380",
+        "--initial-advertise-peer-urls=http://127.0.0.1:2380",
         "--listen-peer-urls=http://0.0.0.0:2380",
-        "--initial-cluster=etcd0=http://${DOCKER_HOST_IP}:2380",
+        "--initial-cluster=etcd0=http://127.0.0.1:2380",
     ]
     ports:
       - "2379:2379"
diff --git a/registry/servicediscovery/file/go-server/tests/integration/main_test.go b/registry/servicediscovery/file/go-server/tests/integration/main_test.go
index feb6fe2..86de468 100644
--- a/registry/servicediscovery/file/go-server/tests/integration/main_test.go
+++ b/registry/servicediscovery/file/go-server/tests/integration/main_test.go
@@ -32,6 +32,7 @@ import (
 	_ "github.com/apache/dubbo-go/metadata/service/inmemory"
 	_ "github.com/apache/dubbo-go/protocol/dubbo"
 	_ "github.com/apache/dubbo-go/registry/consul"
+	_ "github.com/apache/dubbo-go/registry/file"
 	_ "github.com/apache/dubbo-go/registry/protocol"
 	_ "github.com/apache/dubbo-go/registry/servicediscovery"
 )
diff --git a/registry/servicediscovery/nacos/go-server/docker/docker-compose.yml b/registry/servicediscovery/nacos/go-server/docker/docker-compose.yml
index 4b1d3d3..168ad5f 100644
--- a/registry/servicediscovery/nacos/go-server/docker/docker-compose.yml
+++ b/registry/servicediscovery/nacos/go-server/docker/docker-compose.yml
@@ -2,10 +2,13 @@ version: "3"
 
 services:
   nacos:
-    image: nacos/nacos-server:latest
+    image: nacos/nacos-server:1.4.1
     container_name: nacos-standalone
     environment:
       - PREFER_HOST_MODE=hostname
       - MODE=standalone
     ports:
-      - "8848:8848"
\ No newline at end of file
+      - "8848:8848"
+    healthcheck:
+      test: "curl --fail http://127.0.0.1:8848/nacos/v1/console/health/liveness || exit 1"
+      interval: 5s
diff --git a/registry/servicediscovery/nacos/go-server/docker/docker-health-check.sh b/registry/servicediscovery/nacos/go-server/docker/docker-health-check.sh
new file mode 100644
index 0000000..e6b78dc
--- /dev/null
+++ b/registry/servicediscovery/nacos/go-server/docker/docker-health-check.sh
@@ -0,0 +1,3 @@
+sleep 10
+curl http://127.0.0.1:8848/nacos/v1/console/health/liveness
+sleep 30
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index 0ebe563..add9bdc 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -14,25 +14,8 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-# multi-registry
-array+=("multi-registry/go-server")
 
-# async
-array=("async/go-server")
-
-# attachment
-array+=("attachment/go-server")
-
-# chain
-array+=("chain")
-
-# config-api
-array+=("config-api/go-server")
-
-# config center
-array+=("configcenter/apollo/go-server")
-array+=("configcenter/nacos/go-server")
-array+=("configcenter/zookeeper/go-server")
+# Attention! when runing on Apple M1, pls start nacos&zk server on your computer first, and comment samples with # M1 ignore.
 
 # context
 array+=("context/go-server")
@@ -46,14 +29,14 @@ array+=("filter/tpslimit/go-server")
 array+=("filter/sentinel/go-server")
 
 # game
-#array+=("game/go-server-game")
-#array+=("game/go-server-gate")
+#array+=("game/go-server-game") # Bug
+#array+=("game/go-server-gate") # Bug
 
 # general
 array+=("general/dubbo/go-server")
 array+=("general/grpc/go-server")
-#array+=("general/jsonrpc/go-server")
-#array+=("general/rest/go-server")
+#array+=("general/jsonrpc/go-server") # Unsupported
+#array+=("general/rest/go-server") # Unsupported
 
 # generic
 array+=("generic/go-server")
@@ -69,23 +52,23 @@ array+=("helloworld/go-server")
 array+=("metric/go-server")
 
 # multi-zone
-array+=("multi-zone")
+#array+=("multi-zone") # Unsupported
 
 # registry
-#array+=("registry/etcd/go-server")
-#array+=("registry/nacos/go-server")
-#array+=("registry/servicediscovery/consul/go-server")
-#array+=("registry/servicediscovery/etcd/go-server")
-#array+=("registry/servicediscovery/file/go-server")
-#array+=("registry/servicediscovery/nacos/go-server")
+array=("registry/etcd/go-server") # M1 ignore
+array+=("registry/nacos/go-server")
+#array+=("registry/servicediscovery/consul/go-server") # M1 ignore & Bug
+array+=("registry/servicediscovery/etcd/go-server") # M1 ignore
+array+=("registry/servicediscovery/file/go-server")
+array+=("registry/servicediscovery/nacos/go-server")
 array+=("registry/servicediscovery/zookeeper/go-server")
 
 # router
-#array+=("router/condition/go-server")
-#array+=("router/tag/go-server")
+#array+=("router/condition/go-server") # Bug
+#array+=("router/tag/go-server") # Bug
 
 # tls
-#array+=("tls/go-server")
+#array+=("tls/go-server") # Bug
 
 # version
 array+=("version/go-server-v1")

[dubbo-go-samples] 16/18: Ftr: test shopping for 1.5 (#186)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1fa6301488ce107e453bec744929e73e879bc995
Author: phil <ph...@foxmail.com>
AuthorDate: Sat Jul 31 00:29:49 2021 +0800

    Ftr: test shopping for 1.5 (#186)
    
    * update: clean package, and easy to start
    
    * update: test pass
    
    * update: mv to pkg
    
    * update: Fix coding specifications and remove invalid codes
    
    Co-authored-by: yuefengbo <yu...@meituan.com>
---
 .DS_Store                                          |  Bin 6148 -> 0 bytes
 game/.DS_Store                                     |  Bin 6148 -> 0 bytes
 .../go-server/tests/integration/main_test.go       |    1 -
 .../rest/go-server/tests/integration/main_test.go  |    2 +-
 go.mod                                             |    6 +-
 go.sum                                             |    8 +-
 shopping-order/Dockerfile                          |   22 -
 shopping-order/docker-compose.yml                  |  113 --
 shopping-order/docker/docker-compose.yml           |   59 +
 shopping-order/{ => docker}/grafana/dashboards.yml |    0
 .../grafana/dashboards/nacos_rev2.json             |    0
 shopping-order/{ => docker}/grafana/prometheus.yml |    0
 shopping-order/{ => docker}/mysql/mysqld.cnf       |    0
 shopping-order/{ => docker}/mysql/seata.sql        |    0
 shopping-order/{ => docker}/mysql/seata_order.sql  |   22 +-
 .../{ => docker}/mysql/seata_product.sql           |   23 +-
 .../{ => docker}/nacos/custom.properties           |    0
 .../prometheus/prometheus-standalone.yaml          |    0
 shopping-order/{ => docker}/seata/file.conf        |    0
 shopping-order/{ => docker}/seata/registry.conf    |    0
 shopping-order/go-client/conf/client.yml           |    4 +-
 shopping-order/go-client/conf/seata.yml            |    2 +-
 shopping-order/go-server-order/cmd/server.go       |    5 +-
 shopping-order/go-server-order/conf/seata.yml      |    4 +-
 shopping-order/go-server-order/conf/server.yml     |    2 +-
 .../go-server-order/docker/docker-compose.yml      |    9 -
 .../go-server-order/{cmd => pkg}/order_svc.go      |    6 +-
 shopping-order/go-server-product/cmd/server.go     |    5 +-
 shopping-order/go-server-product/conf/seata.yml    |    4 +-
 shopping-order/go-server-product/conf/server.yml   |    2 +-
 .../go-server-product/docker/docker-compose.yml    |    9 -
 .../go-server-product/{cmd => pkg}/product_svc.go  |    6 +-
 shopping-order/go.mod                              |   22 -
 shopping-order/go.sum                              | 1226 --------------------
 34 files changed, 98 insertions(+), 1464 deletions(-)

diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 7f109e8..0000000
Binary files a/.DS_Store and /dev/null differ
diff --git a/game/.DS_Store b/game/.DS_Store
deleted file mode 100644
index e704284..0000000
Binary files a/game/.DS_Store and /dev/null differ
diff --git a/general/jsonrpc/go-server/tests/integration/main_test.go b/general/jsonrpc/go-server/tests/integration/main_test.go
index 63fa625..19721a2 100644
--- a/general/jsonrpc/go-server/tests/integration/main_test.go
+++ b/general/jsonrpc/go-server/tests/integration/main_test.go
@@ -64,7 +64,6 @@ func (u JsonRPCUser) String() string {
 	)
 }
 
-
 type UserProvider struct {
 	GetUsers func(req []interface{}) ([]JsonRPCUser, error)
 	GetUser  func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
diff --git a/general/rest/go-server/tests/integration/main_test.go b/general/rest/go-server/tests/integration/main_test.go
index 2d58de6..211ffce 100644
--- a/general/rest/go-server/tests/integration/main_test.go
+++ b/general/rest/go-server/tests/integration/main_test.go
@@ -21,9 +21,9 @@ package integration
 
 import (
 	"context"
+	"fmt"
 	"os"
 	"testing"
-	"fmt"
 	"time"
 )
 
diff --git a/go.mod b/go.mod
index 0595a7a..24c4327 100644
--- a/go.mod
+++ b/go.mod
@@ -14,7 +14,6 @@ require (
 	github.com/dubbogo/gost v1.11.14
 	github.com/emicklei/go-restful/v3 v3.4.0
 	github.com/golang/protobuf v1.4.3
-	github.com/google/go-cmp v0.5.2 // indirect
 	github.com/google/uuid v1.2.0 // indirect
 	github.com/gophercloud/gophercloud v0.3.0 // indirect
 	github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
@@ -24,18 +23,17 @@ require (
 	github.com/miekg/dns v1.1.27 // indirect
 	github.com/mitchellh/hashstructure v1.0.0 // indirect
 	github.com/opentracing/opentracing-go v1.2.0
+	github.com/opentrx/mysql v1.0.1
 	github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5
 	github.com/openzipkin/zipkin-go v0.2.2
 	github.com/pkg/errors v0.9.1
 	github.com/prometheus/client_golang v1.9.0
 	github.com/stretchr/testify v1.7.0
-	github.com/transaction-wg/seata-golang v0.2.1-alpha
+	github.com/transaction-wg/seata-golang v1.0.0-rc2
 	github.com/uber/jaeger-client-go v2.22.1+incompatible
 	github.com/uber/jaeger-lib v2.2.0+incompatible // indirect
-	golang.org/x/text v0.3.5 // indirect
 	google.golang.org/grpc v1.36.0
 	google.golang.org/protobuf v1.25.0 // indirect
-	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
 )
 
 replace (
diff --git a/go.sum b/go.sum
index 0fd3b42..9c8bd92 100644
--- a/go.sum
+++ b/go.sum
@@ -347,6 +347,7 @@ github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO
 github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
 github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
 github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
 github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
 github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
@@ -666,6 +667,8 @@ github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt
 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
 github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
+github.com/opentrx/mysql v1.0.1 h1:sUhhtRg98pVdrmrYEBLIH/6wDTxAKXG+//5u8WWh410=
+github.com/opentrx/mysql v1.0.1/go.mod h1:5TJKnpNIV+yrdxEM+LJXvWgf6bJAdT99lUY7KAwzCc8=
 github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU=
 github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
 github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
@@ -854,8 +857,8 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4
 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3 h1:kF/7m/ZU+0D4Jj5eZ41Zm3IH/J8OElK1Qtd7tVKAwLk=
 github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlpd3qS71vYtakd2hmdpqhJ9nwv6mD6A30bQ1BPBFE=
-github.com/transaction-wg/seata-golang v0.2.1-alpha h1:YT0jWEc0XxN53E9xb/N8eKQ0yi9LVwXc0YBeaIe236g=
-github.com/transaction-wg/seata-golang v0.2.1-alpha/go.mod h1:L9vMoZxvLX4BuXQ13vFPCwFfXRLP0Bhr97z+6jm49Dw=
+github.com/transaction-wg/seata-golang v1.0.0-rc2 h1:UqHOmerrib8+87B6E8Tiq1ufwy6RTKIWOZBB4+N1lEs=
+github.com/transaction-wg/seata-golang v1.0.0-rc2/go.mod h1:L9vMoZxvLX4BuXQ13vFPCwFfXRLP0Bhr97z+6jm49Dw=
 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8=
 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
 github.com/uber/jaeger-client-go v2.22.1+incompatible h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM=
@@ -1110,6 +1113,7 @@ golang.org/x/tools v0.0.0-20200325203130-f53864d0dba1/go.mod h1:Sl4aGygMT6LrqrWc
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200928182047-19e03678916f/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
 golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
+golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a h1:CB3a9Nez8M13wwlr/E2YtwoU+qYHKfC+JrDa45RXXoQ=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/shopping-order/Dockerfile b/shopping-order/Dockerfile
deleted file mode 100644
index e73ef75..0000000
--- a/shopping-order/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-FROM golang:latest
-
-ARG APP=go-server-order
-ENV APP ${APP}
-ENV GOPROXY https://goproxy.io,direct
-## provider config
-ENV CONF_PROVIDER_FILE_PATH /build/$APP/conf/server.yml
-# cunsumer config
-ENV CONF_CONSUMER_FILE_PATH /build/$APP/conf/client.yml
-## log config
-ENV APP_LOG_CONF_FILE /build/$APP/conf/log.yml
-## seata config
-ENV SEATA_CONF_FILE /build/$APP/conf/seata.yml
-
-COPY . /build
-
-RUN echo ${APP} \
-    && go env -w GOSUMDB=off GO111MODULE=auto
-RUN cd /build/$APP/cmd \
-    && go build
-
-ENTRYPOINT /build/$APP/cmd/cmd
\ No newline at end of file
diff --git a/shopping-order/docker-compose.yml b/shopping-order/docker-compose.yml
deleted file mode 100644
index f57573f..0000000
--- a/shopping-order/docker-compose.yml
+++ /dev/null
@@ -1,113 +0,0 @@
-version: "3"
-services:
-  go-client:
-    container_name: go-client
-    build:
-      context: ../shopping-order
-      dockerfile: ./Dockerfile
-      args:
-        - APP=go-client
-    environment:
-      - APP=go-client
-      - CONF_CONSUMER_FILE_PATH=/build/go-client/conf/client.yml
-      - APP_LOG_CONF_FILE=/build/go-client/conf/log.yml
-      - SEATA_CONF_FILE=/build/go-client/conf/seata.yml
-    depends_on:
-      - nacos
-      - go-server-product
-      - go-server-order
-
-  go-server-order:
-    container_name: go-server-order
-    build:
-      context: ../shopping-order
-      dockerfile: ./Dockerfile
-      args:
-        - APP=go-server-order
-    environment:
-      - APP=go-server-order
-      - CONF_PROVIDER_FILE_PATH=/build/go-server-order/conf/server.yml
-      - APP_LOG_CONF_FILE=/build/go-server-order/conf/log.yml
-      - SEATA_CONF_FILE=/build/go-server-order/conf/seata.yml
-    depends_on:
-      - nacos
-      - mysql
-      - seata
-    ports:
-      - "20000:20000"
-
-  go-server-product:
-    container_name: go-server-product
-    build:
-      context: ../shopping-order
-      dockerfile: ./Dockerfile
-      args:
-        - APP=go-server-product
-    environment:
-      - APP=go-server-product
-      - CONF_PROVIDER_FILE_PATH=/build/go-server-product/conf/server.yml
-      - APP_LOG_CONF_FILE=/build/go-server-product/conf/log.yml
-      - SEATA_CONF_FILE=/build/go-server-product/conf/seata.yml
-    depends_on:
-      - nacos
-      - mysql
-      - seata
-    ports:
-      - "20001:20001"
-
-  seata:
-    container_name: seata
-    image: seataio/seata-server
-    ports:
-      - "8091:8091"
-    volumes:
-      - ./seata/registry.conf:/seata-server/resources/registry.conf
-      - ./seata/file.conf:/seata-server/resources/file.conf
-    environment:
-      - SEATA_PORT=8091
-      - STORE_MODE=db
-    depends_on:
-      - nacos
-      - mysql
-
-  mysql:
-    image: mysql:5.7
-    container_name: mysql
-    environment:
-      - MYSQL_ROOT_PASSWORD=123456
-    volumes:
-      - ./mysql:/docker-entrypoint-initdb.d
-      - ./mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
-    ports:
-      - "3306:3306"
-
-  nacos:
-    image: nacos/nacos-server:latest
-    container_name: nacos
-    environment:
-      - PREFER_HOST_MODE=hostname
-      - MODE=standalone
-    volumes:
-      - ./logs:/home/nacos/logs
-      - ./nacos/custom.properties:/home/nacos/init.d/custom.properties
-    ports:
-      - "8848:8848"
-
-  prometheus:
-    container_name: prometheus
-    image: prom/prometheus:latest
-    volumes:
-      - ./prometheus/prometheus-standalone.yaml:/etc/prometheus/prometheus.yml
-    ports:
-      - "9091:9090"
-
-  grafana:
-    container_name: grafana
-    image: grafana/grafana:latest
-    volumes:
-      - ./grafana/prometheus.yml:/etc/grafana/provisioning/datasources/prometheus.yml
-      - ./grafana/dashboards.yml:/etc/grafana/provisioning/dashboards/default.yml
-      - ./grafana/dashboards:/var/lib/grafana/dashboards
-      - ./logs:/var/log/grafana
-    ports:
-      - 3000:3000
diff --git a/shopping-order/docker/docker-compose.yml b/shopping-order/docker/docker-compose.yml
new file mode 100644
index 0000000..bb2c0df
--- /dev/null
+++ b/shopping-order/docker/docker-compose.yml
@@ -0,0 +1,59 @@
+version: "3"
+services:
+  seata:
+    image: seataio/seata-server:latest
+    container_name: seata
+    ports:
+      - "8091:8091"
+#    volumes:
+#      - ./seata/registry.conf:/seata-server/resources/registry.conf
+#      - ./seata/file.conf:/seata-server/resources/file.conf
+    environment:
+      - SEATA_PORT=8091
+#      - STORE_MODE=db
+    depends_on:
+      - nacos
+      - mysql
+
+  mysql:
+    image: mysql:5.7
+    container_name: mysql
+    environment:
+      - MYSQL_ROOT_PASSWORD=123456
+    command: --default-authentication-plugin=mysql_native_password --default-time-zone='+08:00'
+    volumes:
+      - ./mysql:/docker-entrypoint-initdb.d
+      - ./mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
+    ports:
+      - "3306:3306"
+
+  nacos:
+    image: nacos/nacos-server:latest
+    container_name: nacos
+    environment:
+      - PREFER_HOST_MODE=hostname
+      - MODE=standalone
+    volumes:
+      - ./logs:/home/nacos/logs
+      - ./nacos/custom.properties:/home/nacos/init.d/custom.properties
+    ports:
+      - "8848:8848"
+
+  prometheus:
+    container_name: prometheus
+    image: prom/prometheus:latest
+    volumes:
+      - ./prometheus/prometheus-standalone.yaml:/etc/prometheus/prometheus.yml
+    ports:
+      - "9091:9090"
+
+  grafana:
+    container_name: grafana
+    image: grafana/grafana:latest
+    volumes:
+      - ./grafana/prometheus.yml:/etc/grafana/provisioning/datasources/prometheus.yml
+#      - ./grafana/dashboards.yml:/etc/grafana/provisioning/dashboards/default.yml
+      - ./grafana/dashboards:/var/lib/grafana/dashboards
+      - ./logs:/var/log/grafana
+    ports:
+      - 3000:3000
\ No newline at end of file
diff --git a/shopping-order/grafana/dashboards.yml b/shopping-order/docker/grafana/dashboards.yml
similarity index 100%
rename from shopping-order/grafana/dashboards.yml
rename to shopping-order/docker/grafana/dashboards.yml
diff --git a/shopping-order/grafana/dashboards/nacos_rev2.json b/shopping-order/docker/grafana/dashboards/nacos_rev2.json
similarity index 100%
rename from shopping-order/grafana/dashboards/nacos_rev2.json
rename to shopping-order/docker/grafana/dashboards/nacos_rev2.json
diff --git a/shopping-order/grafana/prometheus.yml b/shopping-order/docker/grafana/prometheus.yml
similarity index 100%
rename from shopping-order/grafana/prometheus.yml
rename to shopping-order/docker/grafana/prometheus.yml
diff --git a/shopping-order/mysql/mysqld.cnf b/shopping-order/docker/mysql/mysqld.cnf
similarity index 100%
rename from shopping-order/mysql/mysqld.cnf
rename to shopping-order/docker/mysql/mysqld.cnf
diff --git a/shopping-order/mysql/seata.sql b/shopping-order/docker/mysql/seata.sql
similarity index 100%
rename from shopping-order/mysql/seata.sql
rename to shopping-order/docker/mysql/seata.sql
diff --git a/shopping-order/mysql/seata_order.sql b/shopping-order/docker/mysql/seata_order.sql
similarity index 85%
rename from shopping-order/mysql/seata_order.sql
rename to shopping-order/docker/mysql/seata_order.sql
index af0f64b..92d5ffb 100644
--- a/shopping-order/mysql/seata_order.sql
+++ b/shopping-order/docker/mysql/seata_order.sql
@@ -10,15 +10,11 @@
 # Generation Time: 2021-04-05 09:38:10 +0000
 # ************************************************************
 
+CREATE database if NOT EXISTS `seata_order` default character set utf8mb4 collate utf8mb4_unicode_ci;
+use `seata_order`;
 
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
 SET NAMES utf8mb4;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+SET FOREIGN_KEY_CHECKS = 0;
 
 
 # Dump of table so_item
@@ -91,14 +87,4 @@ CREATE TABLE `undo_log` (
                             `ext` varchar(100) DEFAULT NULL,
                             PRIMARY KEY (`id`),
                             KEY `idx_unionkey` (`xid`,`branch_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-
-
-
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
\ No newline at end of file
diff --git a/shopping-order/mysql/seata_product.sql b/shopping-order/docker/mysql/seata_product.sql
similarity index 86%
rename from shopping-order/mysql/seata_product.sql
rename to shopping-order/docker/mysql/seata_product.sql
index da56730..0e9a5f5 100644
--- a/shopping-order/mysql/seata_product.sql
+++ b/shopping-order/docker/mysql/seata_product.sql
@@ -11,14 +11,11 @@
 # ************************************************************
 
 
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
+CREATE database if NOT EXISTS `seata_product` default character set utf8mb4 collate utf8mb4_unicode_ci;
+use `seata_product`;
+
 SET NAMES utf8mb4;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+SET FOREIGN_KEY_CHECKS = 0;
 
 # Dump of table inventory
 # ------------------------------------------------------------
@@ -102,14 +99,4 @@ CREATE TABLE `undo_log` (
                             `ext` varchar(100) DEFAULT NULL,
                             PRIMARY KEY (`id`),
                             KEY `idx_unionkey` (`xid`,`branch_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-
-
-
-
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
\ No newline at end of file
diff --git a/shopping-order/nacos/custom.properties b/shopping-order/docker/nacos/custom.properties
similarity index 100%
rename from shopping-order/nacos/custom.properties
rename to shopping-order/docker/nacos/custom.properties
diff --git a/shopping-order/prometheus/prometheus-standalone.yaml b/shopping-order/docker/prometheus/prometheus-standalone.yaml
similarity index 100%
rename from shopping-order/prometheus/prometheus-standalone.yaml
rename to shopping-order/docker/prometheus/prometheus-standalone.yaml
diff --git a/shopping-order/seata/file.conf b/shopping-order/docker/seata/file.conf
similarity index 100%
rename from shopping-order/seata/file.conf
rename to shopping-order/docker/seata/file.conf
diff --git a/shopping-order/seata/registry.conf b/shopping-order/docker/seata/registry.conf
similarity index 100%
rename from shopping-order/seata/registry.conf
rename to shopping-order/docker/seata/registry.conf
diff --git a/shopping-order/go-client/conf/client.yml b/shopping-order/go-client/conf/client.yml
index 46ad980..cc638dc 100644
--- a/shopping-order/go-client/conf/client.yml
+++ b/shopping-order/go-client/conf/client.yml
@@ -21,7 +21,7 @@ references:
     protocol: "dubbo"
     interface: "org.apache.dubbo.OrderSvc"
     cluster: "failover"
-    url: "dubbo://go-server-order:20000"
+    url: "dubbo://127.0.0.1:20000"
     methods:
       - name: "CreateSo"
         retries: 3
@@ -30,7 +30,7 @@ references:
     protocol: "dubbo"
     interface: "org.apache.dubbo.ProductSvc"
     cluster: "failover"
-    url: "dubbo://go-server-product:20001"
+    url: "dubbo://127.0.0.1:20001"
     methods:
       - name: "AllocateInventory"
         retries: 3
diff --git a/shopping-order/go-client/conf/seata.yml b/shopping-order/go-client/conf/seata.yml
index 1d91a60..647a02f 100644
--- a/shopping-order/go-client/conf/seata.yml
+++ b/shopping-order/go-client/conf/seata.yml
@@ -1,5 +1,5 @@
 application_id: "aggregation-svc"
-transaction_service_group: "seata:8091"
+transaction_service_group: "127.0.0.1:8091"
 enable-client-batch-send-request: true
 seata_version: "1.2.0"
 getty:
diff --git a/shopping-order/go-server-order/cmd/server.go b/shopping-order/go-server-order/cmd/server.go
index d45eb76..72ef034 100644
--- a/shopping-order/go-server-order/cmd/server.go
+++ b/shopping-order/go-server-order/cmd/server.go
@@ -45,6 +45,7 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go-samples/shopping-order/go-server-order/pkg"
 	orderDao "github.com/apache/dubbo-go-samples/shopping-order/go-server-order/pkg/dao"
 )
 
@@ -79,8 +80,8 @@ func main() {
 	d := &orderDao.Dao{
 		DB: sqlDB,
 	}
-	svc := &OrderSvc{
-		dao: d,
+	svc := &pkg.OrderSvc{
+		Dao: d,
 	}
 	config.SetProviderService(svc)
 
diff --git a/shopping-order/go-server-order/conf/seata.yml b/shopping-order/go-server-order/conf/seata.yml
index dfe0042..9698ba0 100644
--- a/shopping-order/go-server-order/conf/seata.yml
+++ b/shopping-order/go-server-order/conf/seata.yml
@@ -1,5 +1,5 @@
 application_id: "order-svc"
-transaction_service_group: "seata:8091"
+transaction_service_group: "127.0.0.1:8091"
 seata_version: "1.2.0"
 getty:
   reconnect_interval: 0
@@ -21,7 +21,7 @@ tm:
   commit_retry_count: 5
   rollback_retry_count: 5
 at:
-  dsn: "root:123456@tcp(mysql:3306)/seata_order?timeout=1s&readTimeout=1s&writeTimeout=1s&parseTime=true&loc=Local&charset=utf8mb4,utf8"
+  dsn: "root:123456@tcp(127.0.0.1:3306)/seata_order?timeout=1s&readTimeout=1s&writeTimeout=1s&parseTime=true&loc=Local&charset=utf8mb4,utf8"
   report_retry_count: 5
   report_success_enable: false
   lock_retry_interval: 10ms
diff --git a/shopping-order/go-server-order/conf/server.yml b/shopping-order/go-server-order/conf/server.yml
index b1a9b2c..0f9c3ef 100644
--- a/shopping-order/go-server-order/conf/server.yml
+++ b/shopping-order/go-server-order/conf/server.yml
@@ -9,7 +9,7 @@ registries:
   "nacos":
     protocol: "nacos"
     timeout: "3s"
-    address: "nacos:8848"
+    address: "127.0.0.1:8848"
 
 filter: "seata"
 
diff --git a/shopping-order/go-server-order/docker/docker-compose.yml b/shopping-order/go-server-order/docker/docker-compose.yml
deleted file mode 100644
index 8724179..0000000
--- a/shopping-order/go-server-order/docker/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
diff --git a/shopping-order/go-server-order/cmd/order_svc.go b/shopping-order/go-server-order/pkg/order_svc.go
similarity index 96%
rename from shopping-order/go-server-order/cmd/order_svc.go
rename to shopping-order/go-server-order/pkg/order_svc.go
index 0521b08..2c651e1 100644
--- a/shopping-order/go-server-order/cmd/order_svc.go
+++ b/shopping-order/go-server-order/pkg/order_svc.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package main
+package pkg
 
 import (
 	"context"
@@ -33,7 +33,7 @@ import (
 )
 
 type OrderSvc struct {
-	dao *orderDao.Dao
+	Dao *orderDao.Dao
 }
 
 func (svc *OrderSvc) CreateSo(ctx context.Context, reqs []*orderDao.SoMaster) (*orderDao.CreateSoResult, error) {
@@ -41,7 +41,7 @@ func (svc *OrderSvc) CreateSo(ctx context.Context, reqs []*orderDao.SoMaster) (*
 	val := attach[filter.SEATA_XID]
 	xid := val.(string)
 	// set transaction xid
-	soIds, err := svc.dao.CreateSO(
+	soIds, err := svc.Dao.CreateSO(
 		context.WithValue(context.Background(), mysql.XID, xid), reqs)
 
 	if err == nil {
diff --git a/shopping-order/go-server-product/cmd/server.go b/shopping-order/go-server-product/cmd/server.go
index 8b0607f..2b50fd6 100644
--- a/shopping-order/go-server-product/cmd/server.go
+++ b/shopping-order/go-server-product/cmd/server.go
@@ -45,6 +45,7 @@ import (
 )
 
 import (
+	"github.com/apache/dubbo-go-samples/shopping-order/go-server-product/pkg"
 	productDao "github.com/apache/dubbo-go-samples/shopping-order/go-server-product/pkg/dao"
 )
 
@@ -81,8 +82,8 @@ func main() {
 		DB: sqlDB,
 	}
 
-	svc := &ProductSvc{
-		dao: d,
+	svc := &pkg.ProductSvc{
+		Dao: d,
 	}
 	config.SetProviderService(svc)
 
diff --git a/shopping-order/go-server-product/conf/seata.yml b/shopping-order/go-server-product/conf/seata.yml
index 3fa19c3..5862b04 100644
--- a/shopping-order/go-server-product/conf/seata.yml
+++ b/shopping-order/go-server-product/conf/seata.yml
@@ -1,5 +1,5 @@
 application_id: "product-svc"
-transaction_service_group: "seata:8091"
+transaction_service_group: "127.0.0.1:8091"
 seata_version: "1.2.0"
 getty:
   reconnect_interval: 0
@@ -21,7 +21,7 @@ tm:
   commit_retry_count: 5
   rollback_retry_count: 5
 at:
-  dsn: "root:123456@tcp(mysql:3306)/seata_product?timeout=1s&readTimeout=1s&writeTimeout=1s&parseTime=true&loc=Local&charset=utf8mb4,utf8"
+  dsn: "root:123456@tcp(127.0.0.1:3306)/seata_product?timeout=1s&readTimeout=1s&writeTimeout=1s&parseTime=true&loc=Local&charset=utf8mb4,utf8"
   report_retry_count: 5
   report_success_enable: false
   lock_retry_interval: 10ms
diff --git a/shopping-order/go-server-product/conf/server.yml b/shopping-order/go-server-product/conf/server.yml
index cd1981c..224bd75 100644
--- a/shopping-order/go-server-product/conf/server.yml
+++ b/shopping-order/go-server-product/conf/server.yml
@@ -9,7 +9,7 @@ registries:
   "nacos":
     protocol: "nacos"
     timeout: "3s"
-    address: "nacos:8848"
+    address: "127.0.0.1:8848"
 
 filter: "seata"
 
diff --git a/shopping-order/go-server-product/docker/docker-compose.yml b/shopping-order/go-server-product/docker/docker-compose.yml
deleted file mode 100644
index 8724179..0000000
--- a/shopping-order/go-server-product/docker/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
diff --git a/shopping-order/go-server-product/cmd/product_svc.go b/shopping-order/go-server-product/pkg/product_svc.go
similarity index 96%
rename from shopping-order/go-server-product/cmd/product_svc.go
rename to shopping-order/go-server-product/pkg/product_svc.go
index 03c659e..c39269b 100644
--- a/shopping-order/go-server-product/cmd/product_svc.go
+++ b/shopping-order/go-server-product/pkg/product_svc.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package main
+package pkg
 
 import (
 	"context"
@@ -33,7 +33,7 @@ import (
 )
 
 type ProductSvc struct {
-	dao *productDao.Dao
+	Dao *productDao.Dao
 }
 
 func (svc *ProductSvc) AllocateInventory(ctx context.Context, reqs []*productDao.AllocateInventoryReq) (*productDao.AllocateInventoryResult, error) {
@@ -41,7 +41,7 @@ func (svc *ProductSvc) AllocateInventory(ctx context.Context, reqs []*productDao
 	val := attach[filter.SEATA_XID]
 	xid := val.(string)
 	// set transaction xid
-	err := svc.dao.AllocateInventory(
+	err := svc.Dao.AllocateInventory(
 		context.WithValue(context.Background(), mysql.XID, xid), reqs)
 	if err == nil {
 		return &productDao.AllocateInventoryResult{true}, nil
diff --git a/shopping-order/go.mod b/shopping-order/go.mod
deleted file mode 100644
index 0275f4d..0000000
--- a/shopping-order/go.mod
+++ /dev/null
@@ -1,22 +0,0 @@
-module github.com/apache/dubbo-go-samples/shopping-order
-
-require (
-	cloud.google.com/go v0.50.0 // indirect
-	github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 // indirect
-	github.com/apache/dubbo-go v1.5.6
-	github.com/apache/dubbo-go-hessian2 v1.9.1
-	github.com/bwmarrin/snowflake v0.3.0
-	github.com/docker/go-connections v0.4.0 // indirect
-	github.com/gophercloud/gophercloud v0.3.0 // indirect
-	github.com/hashicorp/golang-lru v0.5.3 // indirect
-	github.com/imdario/mergo v0.3.9 // indirect
-	github.com/linode/linodego v0.10.0 // indirect
-	github.com/miekg/dns v1.1.27 // indirect
-	github.com/mitchellh/hashstructure v1.0.0 // indirect
-	github.com/opentrx/mysql v1.0.0-pre
-	github.com/transaction-wg/seata-golang v0.2.1-alpha
-	github.com/uber/jaeger-lib v2.2.0+incompatible // indirect
-	google.golang.org/grpc/examples v0.0.0-20210322221411-d26af8e39165 // indirect
-)
-
-go 1.13
diff --git a/shopping-order/go.sum b/shopping-order/go.sum
deleted file mode 100644
index 5b13ff5..0000000
--- a/shopping-order/go.sum
+++ /dev/null
@@ -1,1226 +0,0 @@
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw=
-cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
-cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
-cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
-cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
-cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
-cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
-cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
-cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
-cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
-github.com/Azure/azure-sdk-for-go v40.3.0+incompatible h1:NthZg3psrLxvQLN6rVm07pZ9mv2wvGNaBNGQ3fnPvLE=
-github.com/Azure/azure-sdk-for-go v40.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
-github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0=
-github.com/Azure/go-autorest/autorest v0.10.0 h1:mvdtztBqcL8se7MdrUweNieTNi4kfNG6GOJuurQJpuY=
-github.com/Azure/go-autorest/autorest v0.10.0/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630=
-github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
-github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc=
-github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
-github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0=
-github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
-github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 h1:iM6UAvjR97ZIeR93qTcwpKNMpV+/FTWjwEbuPD495Tk=
-github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM=
-github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 h1:LXl088ZQlP0SBppGFsRZonW6hSvwgL5gRByMbvUbx8U=
-github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw=
-github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
-github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM=
-github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g=
-github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
-github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
-github.com/Azure/go-autorest/autorest/mocks v0.3.0 h1:qJumjCaCudz+OcqE9/XtEPfvtOjOmKaui4EOpFI6zZc=
-github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM=
-github.com/Azure/go-autorest/autorest/to v0.3.0 h1:zebkZaadz7+wIQYgC7GXaz3Wb28yKYfVkkBKwc38VF8=
-github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA=
-github.com/Azure/go-autorest/autorest/validation v0.2.0 h1:15vMO4y76dehZSq7pAaOLQxC6dZYsSrj2GQpflyM/L4=
-github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI=
-github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY=
-github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
-github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k=
-github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
-github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
-github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4=
-github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
-github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
-github.com/Microsoft/go-winio v0.4.3/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
-github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
-github.com/NYTimes/gziphandler v1.0.1 h1:iLrQrdwjDd52kHDA5op2UBJFjmOb9g+7scBan4RN8F0=
-github.com/NYTimes/gziphandler v1.0.1/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
-github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
-github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
-github.com/RoaringBitmap/roaring v0.5.5 h1:naNqvO1mNnghk2UvcsqnzHDBn9DRbCIRy94GmDTRVTQ=
-github.com/RoaringBitmap/roaring v0.5.5/go.mod h1:puNo5VdzwbaIQxSiDIwfXl4Hnc+fbovcX4IW/dSTtUk=
-github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
-github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
-github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
-github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk=
-github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
-github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
-github.com/Workiva/go-datastructures v1.0.52 h1:PLSK6pwn8mYdaoaCZEMsXBpBotr4HHn9abU0yMQt0NI=
-github.com/Workiva/go-datastructures v1.0.52/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA=
-github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af h1:DBNMBMuMiWYu0b+8KMJuWmfCkcxl09JwdlqwDZZ6U14=
-github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw=
-github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw=
-github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
-github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
-github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
-github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
-github.com/alibaba/sentinel-golang v1.0.2 h1:Acopq74hOtZN4MV1v811MQ6QcqPFLDSczTrRXv9zpIg=
-github.com/alibaba/sentinel-golang v1.0.2/go.mod h1:QsB99f/z35D2AiMrAWwgWE85kDTkBUIkcmPrRt+61NI=
-github.com/aliyun/alibaba-cloud-sdk-go v1.61.18 h1:zOVTBdCKFd9JbCKz9/nt+FovbjPFmb7mUnp8nH9fQBA=
-github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk=
-github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/apache/dubbo-getty v1.4.3 h1:PCKpryDasKOxwT5MBC6MIMO+0NLOaHF6Xco9YXQw7HI=
-github.com/apache/dubbo-getty v1.4.3/go.mod h1:ansXgKxxyhCOiQL29nO5ce1MDcEKmCyZuNR9oMs3hek=
-github.com/apache/dubbo-go v1.5.6-rc2 h1:e9ziyPQx65n/dyGrA0/ce263jV2+nnSzzpdu9LbfNpc=
-github.com/apache/dubbo-go v1.5.6-rc2/go.mod h1:wLJvPWbnrf6/bhoohBT404QK4t2JoNcckMw+/fJ9P+c=
-github.com/apache/dubbo-go-hessian2 v1.9.1 h1:ceSsU/9z/gv3hzUpl8GceEhQvF3i0BionfdHUGMmjHU=
-github.com/apache/dubbo-go-hessian2 v1.9.1/go.mod h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
-github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA=
-github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
-github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
-github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg=
-github.com/armon/go-metrics v0.3.0 h1:B7AQgHi8QSEi4uHu7Sbsga+IJDU+CENgjxoo81vDUqU=
-github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs=
-github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
-github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
-github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
-github.com/aws/aws-sdk-go v1.25.41/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/aws/aws-sdk-go v1.27.0 h1:0xphMHGMLBrPMfxR2AmVjZKcMEESEgWF8Kru94BNByk=
-github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
-github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
-github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
-github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
-github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
-github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
-github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
-github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
-github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4=
-github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
-github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23 h1:D21IyuvjDCshj1/qq+pCNd3VZOAEI9jy6Bi131YlXgI=
-github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
-github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0=
-github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE=
-github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
-github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
-github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
-github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
-github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible h1:C29Ae4G5GtYyYMm1aztcyj/J5ckgJm2zwdDajFbx1NY=
-github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
-github.com/circonus-labs/circonusllhist v0.1.3 h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA=
-github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
-github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
-github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
-github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
-github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w=
-github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
-github.com/coredns/coredns v1.1.2 h1:bAFHrSsBeTeRG5W3Nf2su3lUGw7Npw2UKeCJm/3A638=
-github.com/coredns/coredns v1.1.2/go.mod h1:zASH/MVDgR6XZTbxvOnsZfffS+31vg6Ackf/wo1+AM0=
-github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
-github.com/coreos/bbolt v1.3.3 h1:n6AiVyVRKQFNb6mJlwESEvvLoDyiTzXX7ORAUlkeBdY=
-github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
-github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/etcd v3.3.25+incompatible h1:0GQEw6h3YnuOVdtwygkIfJ+Omx0tZ8/QkVyXI4LkbeY=
-github.com/coreos/etcd v3.3.25+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
-github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM=
-github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
-github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU=
-github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
-github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg=
-github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
-github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
-github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
-github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/creasty/defaults v1.5.1 h1:j8WexcS3d/t4ZmllX4GEkl4wIB/trOr035ajcLHCISM=
-github.com/creasty/defaults v1.5.1/go.mod h1:FPZ+Y0WNrbqOVw+c6av63eyHUAl6pMHZwqLPvXUZGfY=
-github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc=
-github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM=
-github.com/cznic/parser v0.0.0-20160622100904-31edd927e5b1/go.mod h1:2B43mz36vGZNZEwkWi8ayRSSUXLfjL8OkbzwW4NcPMM=
-github.com/cznic/sortutil v0.0.0-20181122101858-f5f958428db8/go.mod h1:q2w6Bg5jeox1B+QkJ6Wp/+Vn0G/bo3f1uY7Fn3vivIQ=
-github.com/cznic/strutil v0.0.0-20171016134553-529a34b1c186/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc=
-github.com/cznic/y v0.0.0-20170802143616-045f81c6662a/go.mod h1:1rk5VM7oSnA4vjp+hrLQ3HWHa+Y4yPCa3/CsJrcNnvs=
-github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM=
-github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
-github.com/denverdino/aliyungo v0.0.0-20170926055100-d3308649c661 h1:lrWnAyy/F72MbxIxFUzKmcMCdt9Oi8RzpAxzTNQHD7o=
-github.com/denverdino/aliyungo v0.0.0-20170926055100-d3308649c661/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
-github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
-github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
-github.com/digitalocean/godo v1.1.1/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU=
-github.com/digitalocean/godo v1.10.0 h1:uW1/FcvZE/hoixnJcnlmIUvTVNdZCLjRLzmDtRi1xXY=
-github.com/digitalocean/godo v1.10.0/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU=
-github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4=
-github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
-github.com/dnaeon/go-vcr v1.0.1 h1:r8L/HqC0Hje5AXMu1ooW8oyQyOFv4GxqpL0nRP7SLLY=
-github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
-github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
-github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
-github.com/dubbogo/go-zookeeper v1.0.3 h1:UkuY+rBsxdT7Bs63QAzp9z7XqQ53W1j8E5rwl83me8g=
-github.com/dubbogo/go-zookeeper v1.0.3/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c=
-github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8=
-github.com/dubbogo/gost v1.10.1/go.mod h1:+mQGS51XQEUWZP2JeGZTxJwipjRKtJO7Tr+FOg+72rI=
-github.com/dubbogo/gost v1.11.2 h1:NanyHmvzE1HrgI2T9H/jE/N1wkxFEj+IbM1A4RT9H7Q=
-github.com/dubbogo/gost v1.11.2/go.mod h1:3QQEj50QOhkWTERT785YZ5ZxIRGNdR11FCLP7FzHsMc=
-github.com/dubbogo/jsonparser v1.0.1/go.mod h1:tYAtpctvSP/tWw4MeelsowSPgXQRVHHWbqL6ynps8jU=
-github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
-github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
-github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
-github.com/elazarl/go-bindata-assetfs v0.0.0-20160803192304-e1a2a7ec64b0 h1:ZoRgc53qJCfSLimXqJDrmBhnt5GChDsExMCK7t48o0Y=
-github.com/elazarl/go-bindata-assetfs v0.0.0-20160803192304-e1a2a7ec64b0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
-github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
-github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633 h1:H2pdYOb3KQ1/YsqVWoWNLQO+fusocsw354rqGTZtAgw=
-github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
-github.com/emicklei/go-restful/v3 v3.4.0 h1:IIDhql3oyWZj1ay2xBZGb4sTOWMad0HVW8rwhVxN/Yk=
-github.com/emicklei/go-restful/v3 v3.4.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
-github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
-github.com/envoyproxy/go-control-plane v0.8.0 h1:uE6Fp4fOcAJdc1wTQXLJ+SYistkbG1dNoi6Zs1+Ybvk=
-github.com/envoyproxy/go-control-plane v0.8.0/go.mod h1:GSSbY9P1neVhdY7G4wu+IK1rk/dqhiCC/4ExuWJZVuk=
-github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=
-github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 h1:Ghm4eQYC0nEPnSJdVkTrXpu9KtoVCSo1hg7mtI7G9KU=
-github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw=
-github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
-github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=
-github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
-github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
-github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
-github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
-github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.6.2/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
-github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 h1:Ujru1hufTHVb++eG6OuNDKMxZnGIvF6o/u8q/8h2+I4=
-github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
-github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8=
-github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
-github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
-github.com/go-co-op/gocron v0.1.1 h1:OfDmkqkCguFtFMsm6Eaayci3DADLa8pXvdmOlPU/JcU=
-github.com/go-co-op/gocron v0.1.1/go.mod h1:Y9PWlYqDChf2Nbgg7kfS+ZsXHDTZbMZYPEQ0MILqH+M=
-github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=
-github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
-github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
-github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc=
-github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8=
-github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
-github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
-github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
-github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
-github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
-github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI=
-github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
-github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
-github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
-github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
-github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
-github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
-github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
-github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
-github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
-github.com/go-redis/redis v6.15.5+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
-github.com/go-resty/resty/v2 v2.3.0 h1:JOOeAvjSlapTT92p8xiS19Zxev1neGikoHsXJeOq8So=
-github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4HmxLBDwaroHU=
-github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
-github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA=
-github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
-github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
-github.com/go-test/deep v1.0.2 h1:onZX1rnHT3Wv6cqNgYyFOOlgVKJrksuCMCRvJStbMYw=
-github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
-github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM=
-github.com/go-xorm/xorm v0.7.9/go.mod h1:XiVxrMMIhFkwSkh96BW7PACl7UhLtx2iJIHMdmjh5sQ=
-github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
-github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI=
-github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
-github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
-github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
-github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
-github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
-github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
-github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
-github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
-github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM=
-github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
-github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
-github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=
-github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
-github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
-github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-querystring v0.0.0-20170111101155-53e6ce116135/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
-github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
-github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
-github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
-github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/tcpproxy v0.0.0-20180808230851-dfa16c61dad2 h1:AtvtonGEH/fZK0XPNNBdB6swgy7Iudfx88wzyIpwqJ8=
-github.com/google/tcpproxy v0.0.0-20180808230851-dfa16c61dad2/go.mod h1:DavVbd41y+b7ukKDmlnPR4nGYmkWXR6vHUkjQNiHPBs=
-github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
-github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
-github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
-github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
-github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
-github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g=
-github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
-github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99 h1:twflg0XRTjwKpxb/jFExr4HGq6on2dEOmnL6FV+fgPw=
-github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
-github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
-github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
-github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 h1:FlFbCRLd5Jr4iYXZufAvgWN6Ao0JrI5chLINnUXDDr0=
-github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway v1.9.5 h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI=
-github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=
-github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw=
-github.com/hashicorp/consul v1.8.0 h1:yRKMKZyPLqUxl37t4nFt5OuGmTXoFhTJrakhfnYKCYA=
-github.com/hashicorp/consul v1.8.0/go.mod h1:Gg9/UgAQ9rdY3CTvzQZ6g2jcIb7NlIfjI+0pvLk5D1A=
-github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
-github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
-github.com/hashicorp/consul/api v1.5.0 h1:Yo2bneoGy68A7aNwmuETFnPhjyBEm7n3vzRacEVMjvI=
-github.com/hashicorp/consul/api v1.5.0/go.mod h1:LqwrLNW876eYSuUOo4ZLHBcdKc038txr/IMfbLPATa4=
-github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/consul/sdk v0.5.0 h1:WC4594Wp/LkEeML/OdQKEC1yqBmEYkRp6i7X5u0zDAs=
-github.com/hashicorp/consul/sdk v0.5.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM=
-github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
-github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/go-bexpr v0.1.2 h1:ijMXI4qERbzxbCnkxmfUtwMyjrrk3y+Vt0MxojNCbBs=
-github.com/hashicorp/go-bexpr v0.1.2/go.mod h1:ANbpTX1oAql27TZkKVeW8p1w8NTdnyzPe/0qqPCKohU=
-github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de/go.mod h1:xIwEieBHERyEvaeKF/TcHh1Hu+lxPM+n2vT1+g9I4m4=
-github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
-github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM=
-github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
-github.com/hashicorp/go-connlimit v0.2.0 h1:OZjcfNxH/hPh/bT2Iw5yOJcLzz+zuIWpsp3I1S4Pjw4=
-github.com/hashicorp/go-connlimit v0.2.0/go.mod h1:OUj9FGL1tPIhl/2RCfzYHrIiWj+VVPGNyVPnUX8AqS0=
-github.com/hashicorp/go-discover v0.0.0-20200501174627-ad1e96bde088 h1:jBvElOilnIl6mm8S6gva/dfeTJCcMs9TGO6/2C6k52E=
-github.com/hashicorp/go-discover v0.0.0-20200501174627-ad1e96bde088/go.mod h1:vZu6Opqf49xX5lsFAu7iFNewkcVF1sn/wyapZh5ytlg=
-github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
-github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
-github.com/hashicorp/go-hclog v0.9.1/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
-github.com/hashicorp/go-hclog v0.12.0 h1:d4QkX8FRTYaKaCZBoXYY8zJX2BXjWxurN/GA2tkrmZM=
-github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
-github.com/hashicorp/go-immutable-radix v1.1.0 h1:vN9wG1D6KG6YHRTWr8512cxGOVgTMEfgEdSj/hr8MPc=
-github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
-github.com/hashicorp/go-memdb v1.0.3 h1:iiqzNk8jKB6/sLRj623Ui/Vi1zf21LOUpgzGjTge6a8=
-github.com/hashicorp/go-memdb v1.0.3/go.mod h1:LWQ8R70vPrS4OEY9k28D2z8/Zzyu34NVzeRibGAzHO0=
-github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI=
-github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
-github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI=
-github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=
-github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY=
-github.com/hashicorp/go-raftchunking v0.6.1 h1:moEnaG3gcwsWNyIBJoD5PCByE+Ewkqxh6N05CT+MbwA=
-github.com/hashicorp/go-raftchunking v0.6.1/go.mod h1:cGlg3JtDy7qy6c/3Bu660Mic1JF+7lWqIwCFSb08fX0=
-github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-retryablehttp v0.5.4 h1:1BZvpawXoJCWX6pNtow9+rpEj+3itIlutiqnntI6jOE=
-github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
-github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
-github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=
-github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
-github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
-github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc=
-github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A=
-github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE=
-github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
-github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.2-0.20191001231223-f32f5fe8d6a8/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
-github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E=
-github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
-github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/hil v0.0.0-20160711231837-1e86c6b523c5 h1:uk280DXEbQiCOZgCOI3elFSeNxf8YIZiNsbr2pQLYD0=
-github.com/hashicorp/hil v0.0.0-20160711231837-1e86c6b523c5/go.mod h1:KHvg/R2/dPtaePb16oW4qIyzkMxXOL38xjRN64adsts=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
-github.com/hashicorp/mdns v1.0.1 h1:XFSOubp8KWB+Jd2PDyaX5xUd5bhSP/+pTDZVDMzZJM8=
-github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=
-github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/memberlist v0.2.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
-github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g=
-github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
-github.com/hashicorp/net-rpc-msgpackrpc v0.0.0-20151116020338-a14192a58a69 h1:lc3c72qGlIMDqQpQH82Y4vaglRMMFdJbziYWriR4UcE=
-github.com/hashicorp/net-rpc-msgpackrpc v0.0.0-20151116020338-a14192a58a69/go.mod h1:/z+jUGRBlwVpUZfjute9jWaF6/HuhjuFQuL1YXzVD1Q=
-github.com/hashicorp/raft v1.1.1/go.mod h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8=
-github.com/hashicorp/raft v1.1.2 h1:oxEL5DDeurYxLd3UbcY/hccgSPhLLpiBZ1YxtWEq59c=
-github.com/hashicorp/raft v1.1.2/go.mod h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8=
-github.com/hashicorp/raft-boltdb v0.0.0-20171010151810-6e5ba93211ea h1:xykPFhrBAS2J0VBzVa5e80b5ZtYuNQtgXjN40qBZlD4=
-github.com/hashicorp/raft-boltdb v0.0.0-20171010151810-6e5ba93211ea/go.mod h1:pNv7Wc3ycL6F5oOWn+tPGo2gWD4a5X+yp/ntwdKLjRk=
-github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hashicorp/serf v0.9.0/go.mod h1:YL0HO+FifKOW2u1ke99DGVu1zhcpZzNwrLIqBC7vbYU=
-github.com/hashicorp/serf v0.9.2 h1:yJoyfZXo4Pk2p/M/viW+YLibBFiIbKoP79gu7kDAFP0=
-github.com/hashicorp/serf v0.9.2/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
-github.com/hashicorp/vault/api v1.0.4 h1:j08Or/wryXT4AcHj1oCbMd7IijXcKzYUGw59LGu9onU=
-github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q=
-github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M=
-github.com/hashicorp/vault/sdk v0.1.14-0.20191112033314-390e96e22eb2 h1:mKYi4Fm2uSfe94Ji89CoAaP7SPEEkfdtaUlgRGGb2go=
-github.com/hashicorp/vault/sdk v0.1.14-0.20191112033314-390e96e22eb2/go.mod h1:PcekaFGiPJyHnFy+NZhP6ll650zEw51Ag7g/YEa+EOU=
-github.com/hashicorp/vic v1.5.1-0.20190403131502-bbfe86ec9443 h1:O/pT5C1Q3mVXMyuqg7yuAWUg/jMZR1/0QTzTRdNR6Uw=
-github.com/hashicorp/vic v1.5.1-0.20190403131502-bbfe86ec9443/go.mod h1:bEpDU35nTu0ey1EXjwNwPjI9xErAsoOCmcMb9GKvyxo=
-github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
-github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ=
-github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
-github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
-github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
-github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ=
-github.com/jackc/pgx v3.3.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
-github.com/jackc/pgx v3.6.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
-github.com/jarcoal/httpmock v0.0.0-20180424175123-9c70cfe4a1da h1:FjHUJJ7oBW4G/9j1KzlHaXL09LyMVM9rupS39lncbXk=
-github.com/jarcoal/httpmock v0.0.0-20180424175123-9c70cfe4a1da/go.mod h1:ks+b9deReOc7jgqp+e7LuFiCBH6Rm5hL32cLcEAArb4=
-github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 h1:IPJ3dvxmJ4uczJe5YQdrYB16oTJlGSC/OyZDqUk9xX4=
-github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag=
-github.com/jinzhu/copier v0.0.0-20190625015134-976e0346caa8 h1:mGIXW/lubQ4B+3bXTLxcTMTjUNDqoF6T/HUW9LbFx9s=
-github.com/jinzhu/copier v0.0.0-20190625015134-976e0346caa8/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s=
-github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
-github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
-github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
-github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ=
-github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
-github.com/joyent/triton-go v0.0.0-20180628001255-830d2b111e62/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA=
-github.com/joyent/triton-go v1.7.1-0.20200416154420-6801d15b779f h1:ENpDacvnr8faw5ugQmEF1QYk+f/Y9lXFvuYmRxykago=
-github.com/joyent/triton-go v1.7.1-0.20200416154420-6801d15b779f/go.mod h1:KDSfL7qe5ZfQqvlDMkVjCztbmcpp/c8M77vhQP8ZPvk=
-github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
-github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
-github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
-github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
-github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM=
-github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k=
-github.com/k0kubun/pp v3.0.1+incompatible h1:3tqvf7QgUnZ5tXO6pNAZlrvHgl6DvifjDrd9g2S9Z40=
-github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg=
-github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
-github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
-github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
-github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
-github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
-github.com/lestrrat/go-envload v0.0.0-20180220120943-6ed08b54a570 h1:0iQektZGS248WXmGIYOwRXSQhD4qn3icjMpuxwO7qlo=
-github.com/lestrrat/go-envload v0.0.0-20180220120943-6ed08b54a570/go.mod h1:BLt8L9ld7wVsvEWQbuLrUZnCMnUmLZ+CGDzKtclrTlE=
-github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f h1:sgUSP4zdTUZYZgAGGtN5Lxk92rK+JUFOwf+FT99EEI4=
-github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f/go.mod h1:UGmTpUd3rjbtfIpwAPrcfmGf/Z1HS95TATB+m57TPB8=
-github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042 h1:Bvq8AziQ5jFF4BHGAEDSqwPW1NJS3XshxbRCxtjFAZc=
-github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042/go.mod h1:TPpsiPUEh0zFL1Snz4crhMlBe60PYxRHr5oFF3rRYg0=
-github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
-github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
-github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
-github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
-github.com/linode/linodego v0.7.1/go.mod h1:ga11n3ivecUrPCHN0rANxKmfWBJVkOXfLMZinAbj2sY=
-github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
-github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
-github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
-github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY=
-github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
-github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
-github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
-github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.7 h1:bQGKb3vps/j0E9GfJQ03JyhRuxsvdAanXlT9BTw3mdw=
-github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
-github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
-github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
-github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
-github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
-github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
-github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
-github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
-github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
-github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
-github.com/mattn/go-sqlite3 v2.0.1+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
-github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
-github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
-github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
-github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/cli v1.1.0 h1:tEElEatulEHDeedTxwckzyYMA5c86fbmNIUL1hBIiTg=
-github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
-github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=
-github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
-github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
-github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/go-testing-interface v1.14.0 h1:/x0XQ6h+3U3nAyk1yx+bHPURrKa9sVVvYbuqZ7pIAtI=
-github.com/mitchellh/go-testing-interface v1.14.0/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
-github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
-github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
-github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.2.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
-github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
-github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
-github.com/mitchellh/pointerstructure v1.0.0 h1:ATSdz4NWrmWPOF1CeCBU4sMCno2hgqdbSrRPFWQSVZI=
-github.com/mitchellh/pointerstructure v1.0.0/go.mod h1:k4XwG94++jLVsSiTxo7qdIfXA9pj9EAeo0QsNNJOLZ8=
-github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE=
-github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
-github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae h1:VeRdUYdCw49yizlSbMEn2SZ+gT+3IUKx8BqxyQdz+BY=
-github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
-github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
-github.com/nacos-group/nacos-sdk-go v1.0.7 h1:Am1tJFe7GUTNCREKsZ5ok0H2OspHDRmRcsxn7DiSwhA=
-github.com/nacos-group/nacos-sdk-go v1.0.7/go.mod h1:hlAPn3UdzlxIlSILAyOXKxjFSvDJ9oLzTJ9hLAK1KzA=
-github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
-github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
-github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
-github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=
-github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
-github.com/nicolai86/scaleway-sdk v1.10.2-0.20180628010248-798f60e20bb2 h1:BQ1HW7hr4IVovMwWg0E0PYcyW8CzqDcVmaew9cujU4s=
-github.com/nicolai86/scaleway-sdk v1.10.2-0.20180628010248-798f60e20bb2/go.mod h1:TLb2Sg7HQcgGdloNxkrmtgDNR9uVYF3lfdFIN4Ro6Sk=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
-github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
-github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
-github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
-github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
-github.com/olekukonko/tablewriter v0.0.0-20180130162743-b8a9be070da4/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
-github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
-github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
-github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU=
-github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
-github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
-github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
-github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
-github.com/opentrx/mysql v1.0.0-pre h1:Svl0pDOk88ZO7eyoeT3hGHj234WyP1nA0dxoxmshpqs=
-github.com/opentrx/mysql v1.0.0-pre/go.mod h1:8HOov/z9FcRy14FWAnyvUrabpARx2lXQEjlNutz0zD4=
-github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU=
-github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
-github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
-github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI=
-github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/packethost/packngo v0.1.1-0.20180711074735-b9cb5096f54c h1:vwpFWvAO8DeIZfFeqASzZfsxuWPno9ncAebBEP0N3uE=
-github.com/packethost/packngo v0.1.1-0.20180711074735-b9cb5096f54c/go.mod h1:otzZQXgoO96RTzDB/Hycg0qZcXZsWJGJRSXbmEIJ+4M=
-github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
-github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
-github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
-github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
-github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
-github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
-github.com/pelletier/go-toml v1.4.0 h1:u3Z1r+oOXJIkxqw34zVhyPgjBsm6X2wn21NWs/HfSeg=
-github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo=
-github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
-github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
-github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ=
-github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
-github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
-github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ=
-github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712 h1:R8gStypOBmpnHEx1qi//SaqxJVI4inOqljg/Aj5/390=
-github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712/go.mod h1:PYMCGwN0JHjoqGr3HrZoD+b8Tgx8bKnArhSq8YVzUMc=
-github.com/pingcap/errors v0.11.0/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
-github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
-github.com/pingcap/errors v0.11.5-0.20190809092503-95897b64e011 h1:58naV4XMEqm0hl9LcYo6cZoGBGiLtefMQMF/vo3XLgQ=
-github.com/pingcap/errors v0.11.5-0.20190809092503-95897b64e011/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
-github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8=
-github.com/pingcap/log v0.0.0-20200117041106-d28c14d3b1cd h1:CV3VsP3Z02MVtdpTMfEgRJ4T9NGgGTxdHpJerent7rM=
-github.com/pingcap/log v0.0.0-20200117041106-d28c14d3b1cd/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8=
-github.com/pingcap/parser v0.0.0-20200424075042-8222d8b724a4 h1:1dFbm4zVXWvdwjEdyjMlu1PCxnlxK+JfNq+HhbGjDtc=
-github.com/pingcap/parser v0.0.0-20200424075042-8222d8b724a4/go.mod h1:9v0Edh8IbgjGYW2ArJr19E+bvL8zKahsFp+ixWeId+4=
-github.com/pingcap/tipb v0.0.0-20190428032612-535e1abaa330/go.mod h1:RtkHW8WbcNxj8lsbzjaILci01CtYnYbIkQhjyZWrWVI=
-github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
-github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
-github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
-github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo=
-github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
-github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU=
-github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
-github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
-github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
-github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
-github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
-github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
-github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
-github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU=
-github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU=
-github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
-github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
-github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
-github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM=
-github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
-github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
-github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
-github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4=
-github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
-github.com/rboyer/safeio v0.2.1/go.mod h1:Cq/cEPK+YXFn622lsQ0K4KsPZSPtaptHHEldsy7Fmig=
-github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
-github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
-github.com/renier/xmlrpc v0.0.0-20170708154548-ce4a1a486c03 h1:Wdi9nwnhFNAlseAOekn6B5G/+GMtks9UKbvRU/CMM/o=
-github.com/renier/xmlrpc v0.0.0-20170708154548-ce4a1a486c03/go.mod h1:gRAiPF5C5Nd0eyyRdqIu9qTiFSoZzpTq727b5B8fkkU=
-github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
-github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
-github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rs/zerolog v1.4.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
-github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
-github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
-github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
-github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
-github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
-github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
-github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
-github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b h1:gQZ0qzfKHQIybLANtM3mBXNUtOfsCFXeTsnBqCsx1KM=
-github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
-github.com/sean-/conswriter v0.0.0-20180208195008-f5ae3917a627/go.mod h1:7zjs06qF79/FKAJpBvFx3P8Ww4UTIMAe+lpNXDHziac=
-github.com/sean-/pager v0.0.0-20180208200047-666be9bf53b5/go.mod h1:BeybITEsBEg6qbIiqJ6/Bqeq25bCLbL7YFmpaFfJDuM=
-github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=
-github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
-github.com/shima-park/agollo v1.2.6 h1:5COt4poF4kWPLE7iean0hsnKZPrDQz9nRLqvU9Qwmi8=
-github.com/shima-park/agollo v1.2.6/go.mod h1:pbHN4SgHDd84eTKyhCvG2LjQ+6mcZq/fEkElxL+oRYk=
-github.com/shirou/gopsutil v0.0.0-20181107111621-48177ef5f880/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shirou/gopsutil v3.20.11-0.20201116082039-2fb5da2f2449+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shirou/gopsutil v3.20.11+incompatible h1:LJr4ZQK4mPpIV5gOa4jCOKOGb4ty4DZO54I4FGqIpto=
-github.com/shirou/gopsutil v3.20.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
-github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
-github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
-github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
-github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
-github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
-github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/softlayer/softlayer-go v0.0.0-20180806151055-260589d94c7d h1:bVQRCxQvfjNUeRqaY/uT0tFuvuFY0ulgnczuR684Xic=
-github.com/softlayer/softlayer-go v0.0.0-20180806151055-260589d94c7d/go.mod h1:Cw4GTlQccdRGSEf6KiMju767x0NEHE0YIVPJSaXjlsw=
-github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=
-github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
-github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
-github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
-github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
-github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc=
-github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
-github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
-github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
-github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
-github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
-github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
-github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
-github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
-github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk=
-github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
-github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A=
-github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
-github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/tebeka/strftime v0.1.3 h1:5HQXOqWKYRFfNyBMNVc9z5+QzuBtIXy03psIhtdJYto=
-github.com/tebeka/strftime v0.1.3/go.mod h1:7wJm3dZlpr4l/oVK0t1HYIc4rMzQ2XJlOMIUJUJH6XQ=
-github.com/tencentcloud/tencentcloud-sdk-go v3.0.83+incompatible h1:8uRvJleFpqLsO77WaAh2UrasMOzd8MxXrNj20e7El+Q=
-github.com/tencentcloud/tencentcloud-sdk-go v3.0.83+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4=
-github.com/tent/http-link-go v0.0.0-20130702225549-ac974c61c2f9/go.mod h1:RHkNRtSLfOK7qBTHaeSX1D6BNpI3qw7NTxsmNr4RvN8=
-github.com/tevid/gohamcrest v1.1.1 h1:ou+xSqlIw1xfGTg1uq1nif/htZ2S3EzRqLm2BP+tYU0=
-github.com/tevid/gohamcrest v1.1.1/go.mod h1:3UvtWlqm8j5JbwYZh80D/PVBt0mJ1eJiYgZMibh0H/k=
-github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU=
-github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3 h1:kF/7m/ZU+0D4Jj5eZ41Zm3IH/J8OElK1Qtd7tVKAwLk=
-github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlpd3qS71vYtakd2hmdpqhJ9nwv6mD6A30bQ1BPBFE=
-github.com/transaction-wg/seata-golang v0.2.1-alpha h1:YT0jWEc0XxN53E9xb/N8eKQ0yi9LVwXc0YBeaIe236g=
-github.com/transaction-wg/seata-golang v0.2.1-alpha/go.mod h1:L9vMoZxvLX4BuXQ13vFPCwFfXRLP0Bhr97z+6jm49Dw=
-github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8=
-github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
-github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
-github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
-github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
-github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
-github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
-github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
-github.com/vmware/govmomi v0.18.0 h1:f7QxSmP7meCtoAmiKZogvVbLInT+CZx6Px6K5rYsJZo=
-github.com/vmware/govmomi v0.18.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU=
-github.com/willf/bitset v1.1.10 h1:NotGKqX0KwQ72NUzqrjZq5ipPNDQex9lo3WpaS8L2sc=
-github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
-github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
-github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
-github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
-github.com/zouyx/agollo/v3 v3.4.5 h1:7YCxzY9ZYaH9TuVUBvmI6Tk0mwMggikah+cfbYogcHQ=
-github.com/zouyx/agollo/v3 v3.4.5/go.mod h1:LJr3kDmm23QSW+F1Ol4TMHDa7HvJvscMdVxJ2IpUTVc=
-go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
-go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
-go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg=
-go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
-go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
-go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
-go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
-go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
-go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
-go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
-go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
-go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
-go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=
-go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
-go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
-go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
-go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
-go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
-go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
-go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM=
-go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
-golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
-golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
-golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
-golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
-golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
-golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
-golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
-golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
-golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
-golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
-golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
-golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA=
-golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
-golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190508220229-2d0786266e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190523142557-0e01d883c5c5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201223074533-0d417f636930 h1:vRgIt+nup/B/BwIS0g2oC0haq0iqbV3ZA+u6+0TlNCo=
-golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
-golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
-golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
-golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ=
-golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE=
-golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
-golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191107010934-f79515f33823/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200325203130-f53864d0dba1/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200928182047-19e03678916f h1:VwGa2Wf+rHGIxvsssCkUNIyFv8jQY0VCBCNWtikoWq0=
-golang.org/x/tools v0.0.0-20200928182047-19e03678916f/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
-golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210106214847-113979e3529a h1:CB3a9Nez8M13wwlr/E2YtwoU+qYHKfC+JrDa45RXXoQ=
-golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
-google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
-google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
-google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
-google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
-google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.6.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I=
-google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
-google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
-google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
-google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884 h1:fiNLklpBwWK1mth30Hlwk+fcdBmIALlgF5iy77O37Ig=
-google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
-google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
-google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
-google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg=
-google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc=
-google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
-google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
-gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
-gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
-gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
-gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
-gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
-gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo=
-gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM=
-gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
-gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
-gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno=
-gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
-gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
-gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=
-gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
-gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
-gopkg.in/square/go-jose.v2 v2.4.1 h1:H0TmLt7/KmzlrDOpa1F+zr0Tk90PbJYBfsVUmRLrf9Y=
-gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
-gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
-gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U=
-honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-istio.io/gogo-genproto v0.0.0-20190124151557-6d926a6e6feb/go.mod h1:eIDJ6jNk/IeJz6ODSksHl5Aiczy5JUq6vFhJWI5OtiI=
-k8s.io/api v0.16.9 h1:3vCx0WX9qcg1Hv4aQ/G1tiIKectGVuimvPVTJU4VOCA=
-k8s.io/api v0.16.9/go.mod h1:Y7dZNHs1Xy0mSwSlzL9QShi6qkljnN41yR8oWCRTDe8=
-k8s.io/apimachinery v0.16.9 h1:ESUZ4hMBUKF2kn2HBFL5zM/wQv4j/0uRbR7AjgqGJ4o=
-k8s.io/apimachinery v0.16.9/go.mod h1:Xk2vD2TRRpuWYLQNM6lT9R7DSFZUYG03SarNkbGrnKE=
-k8s.io/client-go v0.16.9 h1:6Eh4lMDxFtDzBkqid1AOL3bQ/pPYrulx8l23DXw4mRU=
-k8s.io/client-go v0.16.9/go.mod h1:ThjPlh7Kx+XoBFOCt775vx5J7atwY7F/zaFzTco5gL0=
-k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
-k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
-k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
-k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
-k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
-k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
-k8s.io/utils v0.0.0-20190801114015-581e00157fb1 h1:+ySTxfHnfzZb9ys375PXNlLhkJPLKgHajBU0N62BDvE=
-k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
-launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
-sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
-sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
-sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
-sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
-vimagination.zapto.org/byteio v0.0.0-20200222190125-d27cba0f0b10 h1:pxt6fVJP67Hxo1qk8JalUghLlk3abYByl+3e0JYfUlE=
-vimagination.zapto.org/byteio v0.0.0-20200222190125-d27cba0f0b10/go.mod h1:fl9OF22g6MTKgvHA1hqMXe/L7+ULWofVTwbC9loGu7A=
-vimagination.zapto.org/memio v0.0.0-20200222190306-588ebc67b97d h1:Mp6WiHHuiwHaknxTdxJ8pvC9/B4pOgW1PamKGexG7Fs=
-vimagination.zapto.org/memio v0.0.0-20200222190306-588ebc67b97d/go.mod h1:zHGDKp2tyvF4IAfLti4pKYqCJucXYmmKMb3UMrCHK/4=
-xorm.io/builder v0.3.6/go.mod h1:LEFAPISnRzG+zxaxj2vPicRwz67BdhFreKg8yv8/TgU=
-xorm.io/core v0.7.2-0.20190928055935-90aeac8d08eb/go.mod h1:jJfd0UAEzZ4t87nbQYtVjmqpIODugN6PD2D9E+dJvdM=