You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/06/04 02:30:10 UTC

[servicecomb-docs] branch master updated: [SCB-1984]add documents on using two service centers

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

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-docs.git


The following commit(s) were added to refs/heads/master by this push:
     new 27eb5cd  [SCB-1984]add documents on using two service centers
27eb5cd is described below

commit 27eb5cd291f5394ed2dab32ea95d788c1ba13421
Author: liubao <bi...@qq.com>
AuthorDate: Wed Jun 3 19:56:18 2020 +0800

    [SCB-1984]add documents on using two service centers
---
 .../zh_CN/docs/config/inject-config.md             |  2 +-
 .../docs/general-development/file-download.md      | 12 +++--
 .../zh_CN/docs/registry/multi-registries.md        | 56 ++++++++++++++++++++++
 3 files changed, 64 insertions(+), 6 deletions(-)

diff --git a/java-chassis-reference/zh_CN/docs/config/inject-config.md b/java-chassis-reference/zh_CN/docs/config/inject-config.md
index 18dfb7c..0a88ce6 100644
--- a/java-chassis-reference/zh_CN/docs/config/inject-config.md
+++ b/java-chassis-reference/zh_CN/docs/config/inject-config.md
@@ -99,7 +99,7 @@ Java Bean,或是一个拥有public字段的类。
     ```Java
     priorityPropertyManager.unregisterConfigObject(config)
     ```
-进行显示回收。 2.1.0 及其之后的版本, 不需要调用这个接口,系统创建的对象是 WeakReference, 再未被
+进行显示回收。 2.1.0 及其之后的版本, 不需要调用这个接口,系统创建的对象是 WeakReference, 在未被
 业务引用以后,会自动回收。 
 
 更多关于配置注入的用法,建议下载 java-chassis 的源码, 查看 TestConfigObjectFactory 类里面的示例。
diff --git a/java-chassis-reference/zh_CN/docs/general-development/file-download.md b/java-chassis-reference/zh_CN/docs/general-development/file-download.md
index e9c2c19..d579f84 100644
--- a/java-chassis-reference/zh_CN/docs/general-development/file-download.md
+++ b/java-chassis-reference/zh_CN/docs/general-development/file-download.md
@@ -76,11 +76,13 @@ public ResponseEntity<Resource> resource() {
 @ApiResponses({
   @ApiResponse(code = 200, response = File.class, message = ""),
 })
-return ResponseEntity
-    .ok()
-    .header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE)
-    .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=resource.txt")
-    .body(stream);
+public ResponseEntity<InputStream> download() throws IOException {
+    return ResponseEntity
+        .ok()
+        .header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE)
+        .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=resource.txt")
+        .body(stream);
+}
 ```
 
 在下载完成后,ServiceComb会自动关闭stream,开发人员不必再关注。
diff --git a/java-chassis-reference/zh_CN/docs/registry/multi-registries.md b/java-chassis-reference/zh_CN/docs/registry/multi-registries.md
index d9dc8d8..d63eced 100644
--- a/java-chassis-reference/zh_CN/docs/registry/multi-registries.md
+++ b/java-chassis-reference/zh_CN/docs/registry/multi-registries.md
@@ -148,3 +148,59 @@ public class ServiceCenterTestCase implements CategorizedTestCase {
   }
 }
 ```
+
+## 连接多个服务中心
+
+有些应用场景需要连接多个服务中心。比如一个应用系统会在不同的 region 部署,其中一个 region 的服务需要访问
+另外一个 region 的服务, 这个时候,可以连接另外 region 的服务中心,发现服务信息。 
+
+***注意:*** 连接多个服务中心指的是不同的服务中心集群,不是指一个集群内部的多个服务中心实例。 
+
+连接多个服务中心比较简单, 只需要在项目里面定义新的服务中心的配置信息,通过 spring bean 的方式注入:
+
+```java
+@Configuration
+public class ServerBServiceCenterConfiguration {
+  @Bean("serverBServiceCenterConfig")
+  public ServiceRegistryConfig serverBServiceCenterConfig() {
+    ServiceRegistryConfig config = ServiceRegistryConfig.buildFromConfiguration();
+    String address = DynamicPropertyFactory.getInstance()
+        .getStringProperty("servicecomb.service.registry-serverB.address", null)
+        .get();
+    if (address == null) {
+      throw new IllegalStateException("service center address is required.");
+    }
+    String[] urls = address.split(",");
+    List<String> uriList = Arrays.asList(urls);
+    ArrayList<IpPort> ipPortList = new ArrayList<>();
+    uriList.forEach(anUriList -> {
+      try {
+        URI uri = new URI(anUriList.trim());
+        if ("https".equals(uri.getScheme())) {
+          config.setSsl(true);
+        }
+        ipPortList.add(NetUtils.parseIpPort(uri));
+      } catch (Exception e) {
+        throw new IllegalStateException("service center address is required.", e);
+      }
+    });
+    config.setIpPort(ipPortList);
+    return config;
+  }
+}
+```
+
+上面的代码复用了缺省服务中心的配置信息,只修改了连接地址,代码指定了下面的配置项。如果需要自定义其他配置项,可以
+通过继承 ServiceRegistryConfig 来实现。
+
+```yaml
+servicecomb:
+  service:
+    registry:
+      address: http://127.0.0.1:30100
+    registry-serverB:
+      address: http://127.0.0.1:40100
+```
+
+启用多个服务中心以后,会在不同的服务中心查找服务的实例,并对信息进行合并。 
+