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
+```
+
+启用多个服务中心以后,会在不同的服务中心查找服务的实例,并对信息进行合并。
+