[dubbo-go] branch feature/promethus created (now 3fe96d3)
This is an automated email from the ASF dual-hosted git repository. alexstocks pushed a change to branch feature/promethus in repository https://gitbox.apache.org/repos/asf/dubbo-go.git. at 3fe96d3 Merge pull request #277 from xujianhai666/fix-dep No new revisions were added by this update.
[dubbo-go] branch feature/metrics created (now 3fe96d3)
This is an automated email from the ASF dual-hosted git repository. fangyc pushed a change to branch feature/metrics in repository https://gitbox.apache.org/repos/asf/dubbo-go.git. at 3fe96d3 Merge pull request #277 from xujianhai666/fix-dep No new revisions were added by this update.
[dubbo-website] branch asf-site updated: Automated deployment: Tue Dec 10 03:27:50 UTC 2019 23c4d94ba39402755161343cecd06769ab97f670
This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 0d26b19 Automated deployment: Tue Dec 10 03:27:50 UTC 2019 23c4d94ba39402755161343cecd06769ab97f670 0d26b19 is described below commit 0d26b19d5ab5392947b1b4596078b1818162b8eb Author: lovepoem AuthorDate: Tue Dec 10 03:27:50 2019 + Automated deployment: Tue Dec 10 03:27:50 UTC 2019 23c4d94ba39402755161343cecd06769ab97f670 --- .../configuration/configuration-load-process.html | 176 + .../configuration/configuration-load-process.json | 6 + md_json/docs.json | 10 +- 3 files changed, 187 insertions(+), 5 deletions(-) diff --git a/en-us/docs/user/configuration/configuration-load-process.html b/en-us/docs/user/configuration/configuration-load-process.html new file mode 100644 index 000..51c17cc --- /dev/null +++ b/en-us/docs/user/configuration/configuration-load-process.html @@ -0,0 +1,176 @@ + + + + + + + + + + configuration-load-process + + + + + 中This document focuses on how the Dubbo framework collects the required configuration (including application configuration, registry configuration, service configuration, etc.) during the application startup phase to complete the process of service exposure and reference. +Depending on how you drive it (such as Spring or naked API programming), the configuration form will certainly vary, for detail please refer to XML Configuration, Annotation Configuration and API Configuration. In addition to the differences in peripheral drivers, Dubbo's configuration reads generally follow the following principles: + +Dubbo supports multiple levels of configuration and automatically override configurations according to predetermined priorities. Eventually, all configurations are aggregated to the data bus URL to drive subsequent service exposure, reference and other processes. +ApplicationConfig, ServiceConfig and ReferenceConfig can be regarded as configuration sources, which collect configuration by directly user-oriented programming. +The configuration format is mainly Properties, and the configuration content follows conventions +The configuration format is mainly Properties, and the configuration content follows the agreed path-based naming [specification](#Configuration Format). + +Configuration Source +First, starting with the configuration sources that Dubbo supports, there are four default configuration sources: + +JVM System Properties,-Dproperty +Externalized Configuration +ServiceConfig, ReferenceConfig and other programming interface collected configuration +Local configuration file dubbo.properties + +Override Priority +The figure below shows the priority of configuration override, decreasing from top to bottom: + +click here to view Externalize configuration details +Configuration Format +Currently, all configurations supported by Dubbo are in the format of .properties, including -D, Externalized Configuration, etc., and all configuration items in .properties follow a path-based Configuration format: +# Application level +dubbo.{config-type}[.{config-id}].{config-item}={config-item-value} +# Service level +dubbo.service.{interface-name}[.{method-name}].{config-item}={config-item-value} +dubbo.reference.{interface-name}[.{method-name}].{config-item}={config-item-value} +# Multiple configuration items +dubbo.{config-type}s.{config-id}.{config-item}={config-item-value} + + +Application level + +dubbo.application.name=demo-provider +dubbo.registry.address=zookeeper://127.0.0.1:2181 +dubbo.protocol.port=-1 + + +Service level + +dubbo.service.org.apache.dubbo.samples.api.DemoService.timeout=5000 +dubbo.reference.org.apache.dubbo.samples.api.DemoService.timeout=6000 +dubbo.reference.org.apache.dubbo.samples.api.DemoService.sayHello.timeout=7000 + + +Multiple configuration items + +dubbo.registries.unit1.address=zookeeper://127.0.0.1:2181 +dubbo.registries.unit2.address=zookeeper://127.0.0.1:2182 + +dubbo.protocols.dubbo.name=dubbo +dubbo.protocols.dubbo.port=20880 +dubbo.protocols.hessian.name=hessian +dubbo.protocols.hessian.port=8089 + + +Extended configuration + +dubbo.application.parameters.item1=value1 +dubbo.application.parameters.item2=value2 +dubbo.registry.parameters.item3=value3 +dubbo.reference.org.apache.dubbo.samples.api.DemoService.parameters.item4=value4 + +Several programming approaches of configuration +Next, let's look at the changes corresponding to ServiceConfig, ReferenceConfig and other programming interface collected configuration when selecting different development methods. +Spring + +XML + +Refer to https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-basic;>the sample + !-- dubbo-provier.xml -- + +
[dubbo-website] branch master updated: fix incorrect file name (#538)
This is an automated email from the ASF dual-hosted git repository. wangxin pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/dubbo-website.git The following commit(s) were added to refs/heads/master by this push: new 23c4d94 fix incorrect file name (#538) 23c4d94 is described below commit 23c4d94ba39402755161343cecd06769ab97f670 Author: zhenyifang <1582524...@qq.com> AuthorDate: Tue Dec 10 11:26:01 2019 +0800 fix incorrect file name (#538) LGTM --- ...nslate configuration-load-process.md => configuration-load-process.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en-us/user/configuration/translate configuration-load-process.md b/docs/en-us/user/configuration/configuration-load-process.md similarity index 100% rename from docs/en-us/user/configuration/translate configuration-load-process.md rename to docs/en-us/user/configuration/configuration-load-process.md
[dubbo-go] branch develop updated: fix(common): use new uuid method
This is an automated email from the ASF dual-hosted git repository. alexstocks pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/dubbo-go.git The following commit(s) were added to refs/heads/develop by this push: new 7d55c0d fix(common): use new uuid method new 3fe96d3 Merge pull request #277 from xujianhai666/fix-dep 7d55c0d is described below commit 7d55c0dafb61db968007572e78099a042e05ccb5 Author: xujianhai666 AuthorDate: Tue Dec 10 10:08:06 2019 +0800 fix(common): use new uuid method --- common/url.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/common/url.go b/common/url.go index 6fc7cd8..6e7a843 100644 --- a/common/url.go +++ b/common/url.go @@ -156,9 +156,7 @@ func WithToken(token string) option { if len(token) > 0 { value := token if strings.ToLower(token) == "true" || strings.ToLower(token) == "default" { - if id, err := uuid.NewV4(); err == nil { - value = id.String() - } + value = uuid.NewV4().String() } url.SetParam(constant.TOKEN_KEY, value) }
[dubbo-website] branch asf-site updated: Automated deployment: Mon Dec 9 14:33:58 UTC 2019 769e90be6fca7e5d0e07dd0cbe2bf611db623ce9
This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 1995658 Automated deployment: Mon Dec 9 14:33:58 UTC 2019 769e90be6fca7e5d0e07dd0cbe2bf611db623ce9 1995658 is described below commit 1995658ef264dd925af138ef346d66d7c58a2500 Author: beiwei30 AuthorDate: Mon Dec 9 14:33:59 2019 + Automated deployment: Mon Dec 9 14:33:58 UTC 2019 769e90be6fca7e5d0e07dd0cbe2bf611db623ce9 --- build/blog.js | 2 +- build/blogDetail.js | 2 +- build/community.js| 2 +- build/documentation.js| 2 +- build/ecology.js | 6 +++--- build/home.js | 2 +- md_json/docs.json | 6 +- zh-cn/docs/user/preface/requirements.html | 8 zh-cn/docs/user/preface/requirements.json | 8 ++-- 9 files changed, 23 insertions(+), 15 deletions(-) diff --git a/build/blog.js b/build/blog.js index a1071cf..57cc1e5 100644 --- a/build/blog.js +++ b/build/blog.js @@ -1,4 +1,4 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=316 [...] +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=318 [...] Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames diff --git a/build/blogDetail.js b/build/blogDetail.js index eeb159f..ca0b07d 100644 --- a/build/blogDetail.js +++ b/build/blogDetail.js @@ -1,4 +1,4 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=317 [...] +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=319 [...] Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames diff --git a/build/community.js b/build/community.js index ebdab14..69ff1d7 100644 --- a/build/community.js +++ b/build/community.js @@ -1,4 +1,4 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=318 [...] +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=320 [...] Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames diff --git a/build/documentation.js
[dubbo-website] branch master updated: 删掉多余的字 (#539)
This is an automated email from the ASF dual-hosted git repository. iluo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/dubbo-website.git The following commit(s) were added to refs/heads/master by this push: new 769e90b 删掉多余的字 (#539) 769e90b is described below commit 769e90be6fca7e5d0e07dd0cbe2bf611db623ce9 Author: xurui <30774342+xr...@users.noreply.github.com> AuthorDate: Mon Dec 9 22:31:48 2019 +0800 删掉多余的字 (#539) --- docs/zh-cn/user/preface/requirements.md | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/zh-cn/user/preface/requirements.md b/docs/zh-cn/user/preface/requirements.md index 06c25c3..2c8b921 100644 --- a/docs/zh-cn/user/preface/requirements.md +++ b/docs/zh-cn/user/preface/requirements.md @@ -1,3 +1,9 @@ +--- +title: 需求 +keywords: 服务注册中心,依赖关系,机器支撑 +description: 本文介绍了dubbo要解决的需求 +--- + # 需求 ![image](../sources/images/dubbo-service-governance.jpg) @@ -5,9 +11,9 @@ 在大规模服务化之前,应用可能只是通过 RMI 或 Hessian 等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过 F5 等硬件进行负载均衡。 **当服务越来越多时,服务 URL 配置管理变得非常困难,F5 硬件负载均衡器的单点压力也越来越大。** 此时需要一个服务注册中心,动态地注册和发现服务,使服务的位置透明。并通过在消费方获取服务提供方地址列表,实现软负载均衡和 Failover,降低对 F5 硬件负载均衡器的依赖,也能减少部分成本。 - -**当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。** 这时,需要自动画出应用间的依赖关系图,以帮助架构师理清理关系。 - + +**当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。** 这时,需要自动画出应用间的依赖关系图,以帮助架构师理清关系。 + **接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?** 为了解决这些问题,第一步,要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标。其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达阈值,记录此时的访问量,再以此访问量乘以机器数反推总容量。 - + 以上是 Dubbo 最基本的几个需求。
[dubbo-go] branch develop updated: Fix: use 1e6 as ms
This is an automated email from the ASF dual-hosted git repository. alexstocks pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/dubbo-go.git The following commit(s) were added to refs/heads/develop by this push: new 33b75f1 Fix: use 1e6 as ms 33b75f1 is described below commit 33b75f139c8897a72de37188f78d92847e43ba0f Author: AlexStocks AuthorDate: Mon Dec 9 18:19:16 2019 +0800 Fix: use 1e6 as ms --- common/url.go | 4 +++- filter/impl/tps/impl/tps_limit_fix_window_strategy.go | 2 +- filter/impl/tps/impl/tps_limit_fix_window_strategy_test.go | 2 +- filter/impl/tps/impl/tps_limit_sliding_window_strategy.go | 2 +- filter/impl/tps/impl/tps_limit_sliding_window_strategy_test.go | 4 ++-- .../tps/impl/tps_limit_thread_safe_fix_window_strategy_test.go | 2 +- filter/impl/tps/impl/tps_limiter_mock.go | 10 -- 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/common/url.go b/common/url.go index 6e7a843..6fc7cd8 100644 --- a/common/url.go +++ b/common/url.go @@ -156,7 +156,9 @@ func WithToken(token string) option { if len(token) > 0 { value := token if strings.ToLower(token) == "true" || strings.ToLower(token) == "default" { - value = uuid.NewV4().String() + if id, err := uuid.NewV4(); err == nil { + value = id.String() + } } url.SetParam(constant.TOKEN_KEY, value) } diff --git a/filter/impl/tps/impl/tps_limit_fix_window_strategy.go b/filter/impl/tps/impl/tps_limit_fix_window_strategy.go index b4dd815..8805dbd 100644 --- a/filter/impl/tps/impl/tps_limit_fix_window_strategy.go +++ b/filter/impl/tps/impl/tps_limit_fix_window_strategy.go @@ -79,7 +79,7 @@ func (impl *FixedWindowTpsLimitStrategyImpl) IsAllowable() bool { func NewFixedWindowTpsLimitStrategyImpl(rate int, interval int) tps.TpsLimitStrategy { return { rate: int32(rate), - interval: int64(interval * 1000), // convert to ns + interval: int64(interval) * int64(time.Millisecond), // convert to ns count: 0, timestamp: time.Now().UnixNano(), } diff --git a/filter/impl/tps/impl/tps_limit_fix_window_strategy_test.go b/filter/impl/tps/impl/tps_limit_fix_window_strategy_test.go index 55d0b14..4cf52b2 100644 --- a/filter/impl/tps/impl/tps_limit_fix_window_strategy_test.go +++ b/filter/impl/tps/impl/tps_limit_fix_window_strategy_test.go @@ -36,7 +36,7 @@ func TestFixedWindowTpsLimitStrategyImpl_IsAllowable(t *testing.T) { assert.True(t, strategy.IsAllowable()) assert.True(t, strategy.IsAllowable()) assert.False(t, strategy.IsAllowable()) - time.Sleep(time.Duration(2100 * 1000)) + time.Sleep(2100 * time.Millisecond) assert.True(t, strategy.IsAllowable()) assert.True(t, strategy.IsAllowable()) assert.False(t, strategy.IsAllowable()) diff --git a/filter/impl/tps/impl/tps_limit_sliding_window_strategy.go b/filter/impl/tps/impl/tps_limit_sliding_window_strategy.go index de98eb7..c48c818 100644 --- a/filter/impl/tps/impl/tps_limit_sliding_window_strategy.go +++ b/filter/impl/tps/impl/tps_limit_sliding_window_strategy.go @@ -83,7 +83,7 @@ func (impl *SlidingWindowTpsLimitStrategyImpl) IsAllowable() bool { func NewSlidingWindowTpsLimitStrategyImpl(rate int, interval int) tps.TpsLimitStrategy { return { rate: rate, - interval: int64(interval * 1000), + interval: int64(interval) * int64(time.Millisecond), mutex:{}, queue:list.New(), } diff --git a/filter/impl/tps/impl/tps_limit_sliding_window_strategy_test.go b/filter/impl/tps/impl/tps_limit_sliding_window_strategy_test.go index 1d0187f..0169404 100644 --- a/filter/impl/tps/impl/tps_limit_sliding_window_strategy_test.go +++ b/filter/impl/tps/impl/tps_limit_sliding_window_strategy_test.go @@ -31,14 +31,14 @@ func TestSlidingWindowTpsLimitStrategyImpl_IsAllowable(t *testing.T) { assert.True(t, strategy.IsAllowable()) assert.True(t, strategy.IsAllowable()) assert.False(t, strategy.IsAllowable()) - time.Sleep(time.Duration(2100 * 1000)) + time.Sleep(2100 * time.Millisecond) assert.False(t, strategy.IsAllowable()) strategy = NewSlidingWindowTpsLimitStrategyImpl(2, 2000) assert.True(t, strategy.IsAllowable()) assert.True(t, strategy.IsAllowable()) assert.False(t, strategy.IsAllowable()) - time.Sleep(time.Duration(2100 * 1000)) + time.Sleep(2100 * time.Millisecond) assert.True(t, strategy.IsAllowable()) assert.True(t,
[dubbo-go] branch develop updated: Imp: use var default value
This is an automated email from the ASF dual-hosted git repository. alexstocks pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/dubbo-go.git The following commit(s) were added to refs/heads/develop by this push: new f4f346c Imp: use var default value f4f346c is described below commit f4f346c15e0bfbe8dab489511355d8809e203bff Author: AlexStocks AuthorDate: Mon Dec 9 16:58:43 2019 +0800 Imp: use var default value --- cluster/router/condition_router.go| 9 ++--- common/extension/filter.go| 2 +- filter/impl/tps/impl/tps_limit_fix_window_strategy.go | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cluster/router/condition_router.go b/cluster/router/condition_router.go index a196ceb..efae65c 100644 --- a/cluster/router/condition_router.go +++ b/cluster/router/condition_router.go @@ -156,10 +156,13 @@ func parseRule(rule string) (map[string]MatchPair, error) { if len(rule) == 0 { return condition, nil } - var pair MatchPair + + var ( + pair MatchPair + startIndex int + ) values := gxset.NewSet() reg := regexp.MustCompile(`([&!=,]*)\s*([^&!=,\s]+)`) - var startIndex = 0 if indexTuple := reg.FindIndex([]byte(rule)); len(indexTuple) > 0 { startIndex = indexTuple[0] } @@ -227,7 +230,7 @@ func MatchCondition(pairs map[string]MatchPair, url *common.URL, param *common.U if sample == nil { return true, perrors.Errorf("url is not allowed be nil") } - result := false + var result bool for key, matchPair := range pairs { var sampleValue string diff --git a/common/extension/filter.go b/common/extension/filter.go index e2a66c7..93f7f8c 100644 --- a/common/extension/filter.go +++ b/common/extension/filter.go @@ -33,7 +33,7 @@ func SetFilter(name string, v func() filter.Filter) { func GetFilter(name string) filter.Filter { if filters[name] == nil { - panic("filter for " + name + " is not existing, make sure you have import the package.") + panic("filter for " + name + " is not existing, make sure you have imported the package.") } return filters[name]() } diff --git a/filter/impl/tps/impl/tps_limit_fix_window_strategy.go b/filter/impl/tps/impl/tps_limit_fix_window_strategy.go index 7290619..b4dd815 100644 --- a/filter/impl/tps/impl/tps_limit_fix_window_strategy.go +++ b/filter/impl/tps/impl/tps_limit_fix_window_strategy.go @@ -21,6 +21,7 @@ import ( "sync/atomic" "time" ) + import ( "github.com/apache/dubbo-go/common/constant" "github.com/apache/dubbo-go/common/extension"
[dubbo] branch master updated (4704413 -> 8eae301)
This is an automated email from the ASF dual-hosted git repository. liujun pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/dubbo.git. from 4704413 Fix issue#5411 (#5427) add 8eae301 add the router key in dubbo.xsd (#5337) No new revisions were added by this update. Summary of changes: .../dubbo/config/AbstractReferenceConfig.java | 11 .../dubbo/config/AbstractReferenceConfigTest.java | 31 +- .../src/main/resources/META-INF/compat/dubbo.xsd | 6 + .../src/main/resources/META-INF/dubbo.xsd | 6 + 4 files changed, 53 insertions(+), 1 deletion(-)