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

[dubbo-website] branch master updated: fix 高级特性和用法——服务管控——服务分组 文档优化 #42 (#1232)

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

albumenj 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 ab244b1e83 fix 高级特性和用法——服务管控——服务分组 文档优化 #42 (#1232)
ab244b1e83 is described below

commit ab244b1e83c2b8b2812999707f7d54d45508c85f
Author: starcloud <st...@139.com>
AuthorDate: Fri Jul 15 10:54:50 2022 +0800

    fix 高级特性和用法——服务管控——服务分组 文档优化 #42 (#1232)
    
    * add 服务分组相关图片
    
    * fix 服务分组文档优化
---
 .../service/service-group.md                       | 133 +++++++++++++++++++--
 static/imgs/blog/service-group-1.png               | Bin 0 -> 61925 bytes
 static/imgs/blog/service-group-2.png               | Bin 0 -> 68881 bytes
 3 files changed, 123 insertions(+), 10 deletions(-)

diff --git a/content/zh/docs3-building/java-sdk/advanced-features-and-usage/service/service-group.md b/content/zh/docs3-building/java-sdk/advanced-features-and-usage/service/service-group.md
index 18a60fd897..722f7efe8f 100644
--- a/content/zh/docs3-building/java-sdk/advanced-features-and-usage/service/service-group.md
+++ b/content/zh/docs3-building/java-sdk/advanced-features-and-usage/service/service-group.md
@@ -5,28 +5,141 @@ linkTitle: "服务分组"
 weight: 2
 description: "使用服务分组区分服务接口的不同实现"
 ---
+# 特性说明
+同一个接口针对不同的业务场景、不同的使用需求或者不同的功能模块等场景,可使用服务分组来区分不同的实现方式。同时,这些不同实现所提供的服务是可并存的,也支持互相调用。
+## 配置
+- 服务提供端
+- 服务消费端
 
+# 使用场景
 当一个接口有多种实现时,可以用 group 区分。
 
-## 服务
+# 使用方式
+Dubbo服务分组可选择使用[注解配置](#properties1)、[xml配置](#properties2)或[API配置](#properties3)方式
 
-```xml
-<dubbo:service group="feedback" interface="com.xxx.IndexService" />
-<dubbo:service group="member" interface="com.xxx.IndexService" />
+## <a id="properties1">注解配置</a>
+### 服务提供端
+使用@DubboService注解,添加group参数
+```java
+@DubboService(group = "demo")
+public class DemoServiceImpl implements DemoService {
+ ...
+}
+
+@DubboService(group = "demo2")
+public class Demo2ServiceImpl implements DemoService {
+ ...
+}
 ```
+启动Dubbo服务,可在注册中心看到相同服务名不同分组的服务,以Nacos作为注册中心为例,显示如下内容:
+![image-service-group-1.png](/imgs/blog/service-group-1.png)
 
-## 引用
+### 服务消费端
+使用@DubboReference注解,添加group参数
+```java
+@DubboReference(group = "demo")
+private DemoService demoService;
 
-```xml
-<dubbo:reference id="feedbackIndexService" group="feedback" interface="com.xxx.IndexService" />
-<dubbo:reference id="memberIndexService" group="member" interface="com.xxx.IndexService" />
+@DubboReference(group = "demo2")
+private DemoService demoService2;
+
+//group值为*,标识匹配任意服务分组
+@DubboReference(group = "*")
+private DemoService demoService2;
 ```
+同样启动Dubbo服务后,可在注册中心看到相同服务名不同分组的引用者,以Nacos作为注册中心为例,显示如下内容:
+![image-service-group-2.png](/imgs/blog/service-group-2.png)
 
-任意组:
+## <a id="properties2">xml配置</a>
+### 服务提供端
+使用<dubbo:service />标签,添加group参数
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans        
+       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        
+       http://dubbo.apache.org/schema/dubbo        
+       http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
+	...
+    <dubbo:service interface="org.apache.dubbo.example.service.DemoService" group="demo"/>
 
+<dubbo:service interface="org.apache.dubbo.example.service.DemoService" group="demo2"/>
+...
+</beans>
+```
+启动Dubbo服务,可在注册中心看到相同服务名不同分组的服务,以Nacos作为注册中心为例,显示如下内容:
+![image-service-group-1.png](/imgs/blog/service-group-1.png)
+
+### 服务消费端
+使用<dubbo:reference/>注解,添加group参数
 ```xml
-<dubbo:reference id="barService" interface="com.foo.BarService" group="*" />
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans        
+       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        
+       http://dubbo.apache.org/schema/dubbo        
+       http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
+    ...
+    <!-- 引用服务接口 -->
+    <dubbo:reference id="demoService" interface="org.apache.dubbo.example.service.DemoService" group="demo"/>
+
+    <dubbo:reference id="demoService2" interface="org.apache.dubbo.example.service.DemoService" group="demo2"/>
+
+    <!-- group值为*,标识匹配任意服务分组 -->
+    <dubbo:reference id="demoService3" interface="org.apache.dubbo.example.service.DemoService" group="*"/>
+    ...
+</beans>
+```
+同样启动Dubbo服务后,可在注册中心看到相同服务名不同分组的引用者,以Nacos作为注册中心为例,显示如下内容:
+![image-service-group-2.png](/imgs/blog/service-group-2.png)
+
+## <a id="properties3">API配置</a>
+### 服务提供端
+使用org.apache.dubbo.config.ServiceConfig类,添加group参数
+```java
+// ServiceConfig为重对象,内部封装了与注册中心的连接,以及开启服务端口
+// 请自行缓存,否则可能造成内存和连接泄漏
+ServiceConfig<DemoService> service = new ServiceConfig<>();
+service.setInterface(DemoService.class);
+service.setGroup("demo");
+...
+
+ServiceConfig<DemoService> service2 = new ServiceConfig<>();
+service.setInterface(DemoService.class);
+service.setGroup("demo2");
+...
+
+```
+启动Dubbo服务,可在注册中心看到相同服务名不同分组的服务,以Nacos作为注册中心为例,显示如下内容:
+![image-service-group-1.png](/imgs/blog/service-group-1.png)
+
+### 服务消费端
+使用org.apache.dubbo.config.ReferenceConfig,添加group参数
+```java
+// ReferenceConfig为重对象,内部封装了与注册中心的连接,以及开启服务端口
+// 请自行缓存,否则可能造成内存和连接泄漏
+ReferenceConfig<DemoService> reference = new ReferenceConfig<>();
+reference.setInterface(DemoService.class);
+reference.setGroup("demo");
+...
+
+ReferenceConfig<DemoService> reference2 = new ReferenceConfig<>();
+reference2.setInterface(DemoService.class);
+reference2.setGroup("demo2");
+...
+
+ReferenceConfig<DemoService> reference3 = new ReferenceConfig<>();
+reference3.setInterface(DemoService.class);
+reference3.setGroup("*");
+...
+
 ```
+同样启动Dubbo服务后,可在注册中心看到相同服务名不同分组的引用者,以Nacos作为注册中心为例,显示如下内容:
+![image-service-group-2.png](/imgs/blog/service-group-2.png)
 
 {{% alert title="提示" color="primary" %}}
 `2.2.0` 以上版本支持,总是只调一个可用组的实现
diff --git a/static/imgs/blog/service-group-1.png b/static/imgs/blog/service-group-1.png
new file mode 100644
index 0000000000..ded821d093
Binary files /dev/null and b/static/imgs/blog/service-group-1.png differ
diff --git a/static/imgs/blog/service-group-2.png b/static/imgs/blog/service-group-2.png
new file mode 100644
index 0000000000..53cc27d08d
Binary files /dev/null and b/static/imgs/blog/service-group-2.png differ