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/11/27 06:30:06 UTC

[servicecomb-docs] branch master updated: 3rdparty registry and service center docs improvement (#206)

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 dc49501  3rdparty registry and service center docs improvement (#206)
dc49501 is described below

commit dc49501f4f0e1ef8d2127e6905e75bc9efb055e3
Author: bao liu <bi...@qq.com>
AuthorDate: Fri Nov 27 14:29:58 2020 +0800

    3rdparty registry and service center docs improvement (#206)
---
 .../build-consumer/3rd-party-service-invoke.md     |  55 +++----
 .../zh_CN/docs/registry/introduction.md            |  21 ---
 .../zh_CN/docs/registry/multi-registries.md        |  35 -----
 .../zh_CN/docs/registry/service-center.md          | 172 +++++++++++++++++++++
 java-chassis-reference/zh_CN/docs/security/rbac.md |  71 ---------
 java-chassis-reference/zh_CN/docs/toc.md           |   5 +-
 java-chassis-reference/zh_CN/mkdocs.yml            |   2 +-
 7 files changed, 198 insertions(+), 163 deletions(-)

diff --git a/java-chassis-reference/zh_CN/docs/build-consumer/3rd-party-service-invoke.md b/java-chassis-reference/zh_CN/docs/build-consumer/3rd-party-service-invoke.md
index f8508eb..90fcf75 100644
--- a/java-chassis-reference/zh_CN/docs/build-consumer/3rd-party-service-invoke.md
+++ b/java-chassis-reference/zh_CN/docs/build-consumer/3rd-party-service-invoke.md
@@ -2,9 +2,11 @@
 
 ## 概念阐述
 
-ServiceComb允许用户注册第三方REST服务的endpoint、接口契约等信息,使用户可以以调用ServiceComb provider服务相同的方式编写调用第三方服务的代码。
+第三方服务没有在服务中心注册,不存契约信息,Java Chassis 提供一种透明的方式访问第三方服务。 
 使用该功能调用第三方服务时,发往第三方服务的请求会经过consumer端handler链、HttpClientFilter的处理,
-即该功能支持对第三方服务调用的治理功能,并且也支持ServiceComb既有的用户自定义扩展处理机制。
+即该功能支持对第三方服务调用的治理功能,并且也支持ServiceComb既有的用户自定义扩展处理机制。 
+
+另外开发者也可以使用 [本地注册发现](../registry/local-registry.md) 实现第三方调用, 两种方式实现的效果是一致的。 
 
 ## 示例代码
 
@@ -51,40 +53,30 @@ ServiceComb允许用户注册第三方REST服务的endpoint、接口契约等信
         }
         ```
 
-3. 在consumer服务中调用ServiceComb提供的方法将其进行注册:
+3. 通过实现 `ThirdServiceWithInvokerRegister` 注册第三方服务信息。 可以注册多个 schema。 
 
         ```java
-        String endpoint = "rest://127.0.0.1:8080";
-        RegistryUtils.getServiceRegistry().registerMicroserviceMappingByEndpoints(
-          // 3rd party rest service name, you can specify the name on your need as long as you obey the microservice naming rule
-          "thirdPartyService",
-          // service version
-          "0.0.1",
-          // list of endpoints
-          Collections.singletonList(endpoint),
-          // java interface class to generate swagger schema
-          ThirdPartyRestServiceInterface.class
-        );
+        @Configuration
+        public class ThirdSvc extends ThirdServiceWithInvokerRegister {
+          public ThirdSvc() {
+            super("3rd-svc");
+        
+            addSchema("schema-1", VertxServerIntf.class);
+          }
+        }
         ```
 
+    ***注意:*** java chassis 2.1.3 以上版本才支持 ThirdServiceWithInvokerRegister。 
+
 4. 调用第三方服务,声明和调用方式与调用ServiceComb provider服务相同,此处以RPC调用方式为例。
 
         ```java
-        // declare rpc reference to 3rd party rest service, schemaId is the same as microservice name
-        @RpcReference(microserviceName = "thirdPartyService", schemaId = "thirdPartyService")
-        ThirdPartyRestServiceInterface thirdPartyRestService;
-        
-        @RequestMapping(path = "/{pathVar}", method = RequestMethod.GET)
-        public String testInvoke(@PathVariable(name = "pathVar") String pathVar) {
-        LOGGER.info("testInvoke() is called, pathVar = [{}]", pathVar);
-        // invoke 3rd party rest service
-        String response = thirdPartyRestService.testPathVar(pathVar);
-        LOGGER.info("testInvoke() response = [{}]", response);
-        return response;
-        }
+        VertxServerIntf client = BeanUtils.getContext().getBean(VertxServerIntf.class);
+        client.testPathVar(pathVar);
         ```
 
-5. 使用治理功能。使用治理功能的方法与普通的consumer调用provider场景类似。以限流策略为例,在consumer服务的microservice.yaml文件中进行如下配置:
+5. 使用治理功能。使用治理功能的方法与普通的consumer调用provider场景类似。以限流策略为例,在consumer
+  服务的microservice.yaml文件中进行如下配置:
 
         ```yaml
         servicecomb:
@@ -99,9 +91,8 @@ ServiceComb允许用户注册第三方REST服务的endpoint、接口契约等信
     此时即将consumer调用名为`thirdPartyService`的第三方REST服务的QPS设置为1。当consumer调用`thirdPartyService`的流量高于1QPS时,
     将会得到`429 Too Many Requests`的`InvocationException`异常。
 
-> ***注意:***
-- endpoint信息是以`rest`开头的,而非`http`,可以参照ServiceComb微服务注册到服务中心的endpoint样式进行编写。
-- 当第三方服务有多个实例(地址)时,可以在endpoint list中指定多个地址,ServiceComb支持对多个地址进行负载均衡处理,处理方式和对待ServiceComb
- provider服务相同。
-- 当前仅支持一次性注册第三方服务及其实例信息,不支持增加、删除和修改操作。
+6. 配置第三分服务的实例信息
 
+        3rd-svc:
+          urls:
+            - http://localhost:8080
diff --git a/java-chassis-reference/zh_CN/docs/registry/introduction.md b/java-chassis-reference/zh_CN/docs/registry/introduction.md
index 0df7a3b..8b2dbaf 100644
--- a/java-chassis-reference/zh_CN/docs/registry/introduction.md
+++ b/java-chassis-reference/zh_CN/docs/registry/introduction.md
@@ -25,27 +25,6 @@
 不同的注册发现机制,可能注册的信息和发现的信息不包括上述信息的全集,可以通过组合不同的注册发现机制,提供完整的信息。
 比如,可以通过 mDNS 的方式发现网络地址(endpoints)信息, 可以通过配置文件的方式,发现契约信息。
 
-## 使用服务中心 
-
-服务中心(servicecomb-service-center) 提供了完备的注册发现机制, 实现了所有 `Microservice` 和 `MicroserviceInstance` 信息的注册和发现,
-是 servicecomb 缺省使用的注册发现机制。 
-
-服务中心支持使用 `PULL` 和 `PUSH` 两种模式通知实例变化, 开发者可以配置服务中心集群地址、连接参数以及心跳管理等。
-
-* 表1-1 访问服务中心常用的配置项
-
-| 配置项 | 默认值 | 是否必选 | 含义 | 
-| :--- | :--- | :--- | :--- | 
-| servicecomb.service.registry.</p>address | http://127.0.0.1:30100 | 是 | 服务中心的地址信息,可以配置多个,用逗号分隔。 |
-| servicecomb.service.registry.</p>instance.watch | true | 否 | 是否采用PUSH模式监听实例变化。为false的时候表示使用PULL模式。 |
-| servicecomb.service.registry.</p>autodiscovery | false | 否 | 是否自动发现服务中心的地址。当需要配置部分地址,其他地址由配置的服务中心实例发现的时候,开启这个配置。 |
-| servicecomb.service.registry.</p>instance.healthCheck.interval | 30 | 否 | 心跳间隔。 |
-| servicecomb.service.registry.</p>instance.healthCheck.times | 3 | 否 | 允许的心跳失败次数。当连续第times+1次心跳仍然失败时则实例被sc下线。即interval \* (times + 1)决定了实例被自动注销的时间。如果服务中心等待这么长的时间没有收取到心跳,会注销实例。 |
-| servicecomb.service.registry.</p>instance.empty.protection | true | 否 | 当从服务中心查询到的地址为空的时候,是否覆盖本地缓存。这个是一种可靠性保护机制,避免实例异常批量下线导致的请求失败。 |
-
-servicecomb 与服务中心采用 HTTP 进行交互, HTTP client 相关配置可以参
-考 [Service Center Client 配置项](../config-reference/service-center-client.md)
-
 ## 同时使用多个注册发现
 
 从 2.1.0 版本开始,可以同时使用多个注册发现的实现。组合不同的注册发现的实现,能够满足一些非常重要场景的需求。
diff --git a/java-chassis-reference/zh_CN/docs/registry/multi-registries.md b/java-chassis-reference/zh_CN/docs/registry/multi-registries.md
deleted file mode 100644
index 1796994..0000000
--- a/java-chassis-reference/zh_CN/docs/registry/multi-registries.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# 连接多个服务中心
-
-有些应用场景需要连接多个服务中心。比如一个应用系统会在不同的 region 部署,其中一个 region 的服务需要访问
-另外一个 region 的服务, 这个时候,可以连接另外 region 的服务中心,发现服务信息。 
-
-***注意:*** 连接多个服务中心指的是不同的服务中心集群,不是指一个集群内部的多个服务中心实例。 
-
-连接多个服务中心比较简单, 只需要在项目里面定义新的服务中心的配置信息,通过 spring bean 的方式注入:
-
-```java
-@Configuration
-public class ServerBServiceCenterConfiguration {
-  @Bean("serverBServiceCenterConfig")
-  public ServiceRegistryConfig serverBServiceCenterConfig() {
-    ServiceRegistryConfig config = ServiceRegistryConfig.buildFromConfiguration();
-    return ServiceRegistryConfigCustomizer.from(config)
-        .addressListFromConfiguration("servicecomb.service.registry-serverB.address").get();
-  }
-}
-```
-
-上面的代码复用了缺省服务中心的配置信息,只修改了连接地址,代码指定了下面的配置项。如果需要自定义其他配置项,可以
-通过继承 ServiceRegistryConfig 来实现。
-
-```yaml
-servicecomb:
-  service:
-    registry:
-      address: http://127.0.0.1:30100
-    registry-serverB:
-      address: http://127.0.0.1:40100
-```
-
-启用多个服务中心以后,会在不同的服务中心查找服务的实例,并对信息进行合并。 
-
diff --git a/java-chassis-reference/zh_CN/docs/registry/service-center.md b/java-chassis-reference/zh_CN/docs/registry/service-center.md
new file mode 100644
index 0000000..c412bad
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/registry/service-center.md
@@ -0,0 +1,172 @@
+# 使用服务中心 
+
+服务中心(servicecomb-service-center) 提供了完备的注册发现机制, 实现了所有 `Microservice` 和 `MicroserviceInstance` 信息的注册和发现,
+是 servicecomb 缺省使用的注册发现机制。 
+
+服务中心支持使用 `PULL` 和 `PUSH` 两种模式通知实例变化, 开发者可以配置服务中心集群地址、连接参数以及心跳管理等。
+
+* 表1-1 访问服务中心常用的配置项
+
+| 配置项 | 默认值 | 是否必选 | 含义 | 
+| :--- | :--- | :--- | :--- | 
+| servicecomb.service.registry.</p>address | http://127.0.0.1:30100 | 是 | 服务中心的地址信息,可以配置多个,用逗号分隔。 |
+| servicecomb.service.registry.</p>instance.watch | true | 否 | 是否采用PUSH模式监听实例变化。为false的时候表示使用PULL模式。 |
+| servicecomb.service.registry.</p>autodiscovery | false | 否 | 是否自动发现服务中心的地址。当需要配置部分地址,其他地址由配置的服务中心实例发现的时候,开启这个配置。 |
+| servicecomb.service.registry.</p>instance.healthCheck.interval | 30 | 否 | 心跳间隔。 |
+| servicecomb.service.registry.</p>instance.healthCheck.times | 3 | 否 | 允许的心跳失败次数。当连续第times+1次心跳仍然失败时则实例被sc下线。即interval \* (times + 1)决定了实例被自动注销的时间。如果服务中心等待这么长的时间没有收取到心跳,会注销实例。 |
+| servicecomb.service.registry.</p>instance.empty.protection | true | 否 | 当从服务中心查询到的地址为空的时候,是否覆盖本地缓存。这个是一种可靠性保护机制,避免实例异常批量下线导致的请求失败。 |
+
+servicecomb 与服务中心采用 HTTP 进行交互, HTTP client 相关配置可以参
+考 [Service Center Client 配置项](../config-reference/service-center-client.md)
+
+使用服务中心需要确保下面的软件包引入:
+
+```
+  <dependency>
+    <groupId>org.apache.servicecomb</groupId>
+    <artifactId>registry-service-center</artifactId>
+  </dependency>
+```
+
+也可以直接依赖:
+
+```
+  <dependency>
+    <groupId>org.apache.servicecomb</groupId>
+    <artifactId>solution-basic</artifactId>
+  </dependency>
+```
+
+## 使用 RBAC 认证
+
+服务中心支持[RBAC认证](https://service-center.readthedocs.io/en/latest/user-guides/rbac.html),服务中心开启RBAC认证之
+后,客户端调用服务中心接口都需要先获取token,保证服务的安全可信。 使用 RBAC 认证, 需要使用 2.1.3 及其以上的版本。 
+
+* 服务配置
+
+  使用 RBAC 认证,需要在配置文件中增加如下配置项, 指定连接服务中心的用户名和密码:
+
+        ```
+        servicecomb:
+          credentials:
+            account:
+              name: root   #服务中心支持的用户名
+              password: your-password  #用户名对应的密码
+            cipher: default #账号密码加解密用的算法实现类
+        ```
+
+  账号密码都是敏感信息,一般需要加密保存,使用的时候再解密,Java Chassis 提供了一个扩展机制,用户只需要实现接口
+  `org.apache.servicecomb.foundation.auth.Cipher`,并注册成Spring Bean,就会自动被使用,接口里面包含两个方法:
+  
+        ```java
+          String name();
+        
+          char[] decrypt(char[] encrypted);
+        ```
+        
+  name方法返回cipher的名称,对应 `servicecomb.credentials.cipher` 的配置,decrypt是解密接口,用户名、密码使用的时候都会调用这个方法进行解密。
+  下面给了一个最简单的base64编解码的实现示例,用户使用base64编码把账号密码配置到配置文件即可。
+  
+  ***注意***: base64 并不是安全加密算法,请勿在生产环境使用。 
+  
+        ```yaml
+        servicecomb:
+          credentials:
+            account:
+              name: cm9vdA==
+              password: eW91ci1wYXNzd29yZCA=
+            cipher: base64
+        ```
+        
+        ```java
+        import java.util.Base64;
+        
+        import org.apache.servicecomb.foundation.auth.Cipher;
+        import org.springframework.stereotype.Component;
+        
+        /**
+         * Base64解码实现
+         */
+        @Component
+        public class Base64Cipher implements Cipher {
+          @Override
+          public String name() {
+            return "base64";
+          }
+        
+          @Override
+          public char[] decrypt(char[] encrypted) {
+            return new String(Base64.getDecoder().decode(new String(encrypted))).toCharArray();
+          }
+        }
+        ```
+
+## 使用 AK/SK 认证
+
+华为云微服务引擎专业版的服务中心需要使用 AK/SK 认证, 使用 AK/SK 认证, 需要使用 2.1.3 及其以上的版本。
+AK/SK 认证需要配置如下信息:
+
+```yaml
+servciecomb:
+  credentials:
+    akskEnabled: true
+    accessKey: your access key
+    secretKey: your secrete key
+    akskCustomCipher: default # 加密算法, 和 RBAC 一样
+    project: cn-south-1 # 项目名称,根据实际情况填写
+```
+
+secreteKey 支持加密存储, 扩展方式同 RBAC 。
+
+使用AK/SK 需要下面的软件包引入:
+
+```
+  <dependency>
+    <groupId>org.apache.servicecomb</groupId>
+    <artifactId>servicestage</artifactId>
+  </dependency>
+```
+
+也可以直接依赖:
+
+```
+  <dependency>
+    <groupId>org.apache.servicecomb</groupId>
+    <artifactId>solution-basic</artifactId>
+  </dependency>
+```
+
+## 连接多个服务中心
+
+有些应用场景需要连接多个服务中心。比如一个应用系统会在不同的 region 部署,其中一个 region 的服务需要访问
+另外一个 region 的服务, 这个时候,可以连接另外 region 的服务中心,发现服务信息。 
+
+***注意:*** 连接多个服务中心指的是不同的服务中心集群,不是指一个集群内部的多个服务中心实例。 
+
+连接多个服务中心比较简单, 只需要在项目里面定义新的服务中心的配置信息,通过 spring bean 的方式注入:
+
+```java
+@Configuration
+public class ServerBServiceCenterConfiguration {
+  @Bean("serverBServiceCenterConfig")
+  public ServiceRegistryConfig serverBServiceCenterConfig() {
+    ServiceRegistryConfig config = ServiceRegistryConfig.buildFromConfiguration();
+    return ServiceRegistryConfigCustomizer.from(config)
+        .addressListFromConfiguration("servicecomb.service.registry-serverB.address").get();
+  }
+}
+```
+
+上面的代码复用了缺省服务中心的配置信息,只修改了连接地址,代码指定了下面的配置项。如果需要自定义其他配置项,可以
+通过继承 ServiceRegistryConfig 来实现。
+
+```yaml
+servicecomb:
+  service:
+    registry:
+      address: http://127.0.0.1:30100
+    registry-serverB:
+      address: http://127.0.0.1:40100
+```
+
+启用多个服务中心以后,会在不同的服务中心查找服务的实例,并对信息进行合并。 
diff --git a/java-chassis-reference/zh_CN/docs/security/rbac.md b/java-chassis-reference/zh_CN/docs/security/rbac.md
deleted file mode 100644
index 6bd4034..0000000
--- a/java-chassis-reference/zh_CN/docs/security/rbac.md
+++ /dev/null
@@ -1,71 +0,0 @@
-## 场景描述
-
-服务注册发现,服务中心需要确保服务是信任的,服务中心支持[RBAC认证](https://service-center.readthedocs.io/en/latest/user-guides/rbac.html),服务中心开启RBAC认证之后,客户端调用服务中心接口都需要先获取token,保证服务的安全可信(需要2.1.2+版本才支持)
-
-## 服务配置
-
-* 在pom.xml中增加依赖:
-
-```
-  <dependency>
-    <groupId>org.apache.servicecomb</groupId>
-    <artifactId>solution-basic</artifactId>
-  </dependency>
-  <dependency>
-    <groupId>org.apache.servicecomb</groupId>
-    <artifactId>registry-service-center</artifactId>
-  </dependency>
-```
-
-* 在microservice.yaml中添加账号配置
-
-```
-servicecomb:
-  credentials:
-    account:
-      name: root   #服务中心支持的用户名
-      password: your-password  #用户名对应的密码
-    cipher: default #账号密码加解密用的算法实现类
-```
-
-## 账号密码加解密配置
-账号密码都是敏感信息,一般需要加密保存,使用的时候再解密,ServiceComb JavaChassis提供了一个扩展机制,用户只需要实现接口org.apache.servicecomb.foundation.auth.Cipher,并注册成Spring Bean,就会自动被使用,接口里面包含两个方法:
-```java
-  String name();
-
-  char[] decrypt(char[] encrypted);
-```
-name方法返回cipher的名称,对应servicecomb.credentials.cipher的配置,decrypt是解密接口,用户名、密码使用的时候都会调用这个方法进行解密。下面给了一个最简单的base64编解码的实现示例,用户使用base64编码把账号密码配置到配置文件即可
-```yaml
-servicecomb:
-  credentials:
-    account:
-      name: cm9vdA==
-      password: eW91ci1wYXNzd29yZCA=
-    cipher: base64
-```
-```java
-import java.util.Base64;
-
-import org.apache.servicecomb.foundation.auth.Cipher;
-import org.springframework.stereotype.Component;
-
-/**
- * Base64解码实现
- */
-@Component
-public class Base64Cipher implements Cipher {
-  @Override
-  public String name() {
-    return "base64";
-  }
-
-  @Override
-  public char[] decrypt(char[] encrypted) {
-    return new String(Base64.getDecoder().decode(new String(encrypted))).toCharArray();
-  }
-}
-```
-
-
-
diff --git a/java-chassis-reference/zh_CN/docs/toc.md b/java-chassis-reference/zh_CN/docs/toc.md
index 46e347a..556c0da 100644
--- a/java-chassis-reference/zh_CN/docs/toc.md
+++ b/java-chassis-reference/zh_CN/docs/toc.md
@@ -73,10 +73,10 @@
     * [HTTP2](transports/http2.md)
 * 多样化的服务注册与发现功能参考:
     * [注册发现说明](registry/introduction.md)
+    * [使用服务中心](registry/service-center.md)
     * [本地注册发现](registry/local-registry.md)
     * [去中心化注册发现](registry/distributed.md)
-    * [连接多个服务中心](registry/multi-registries.md)
-- 服务治理功能参考:: 
+- 服务治理功能参考:
     - [处理链介绍](references-handlers/intruduction.md)
     - [负载均衡](references-handlers/loadbalance.md)
     - [限流](references-handlers/ratelimit.md)
@@ -91,7 +91,6 @@
     - [使用TLS通信](security/tls.md)
     - [使用RSA认证](security/shi-yong-rsa-ren-zheng.md)
     - [公钥认证](references-handlers/publickey.md)
-    - [RBAC认证](security/rbac.md)
 * 管理服务配置:
     * [通用配置说明](config/general-config.md)
     * [配置注入机制](config/inject-config.md)
diff --git a/java-chassis-reference/zh_CN/mkdocs.yml b/java-chassis-reference/zh_CN/mkdocs.yml
index 10c7cba..5ee4505 100644
--- a/java-chassis-reference/zh_CN/mkdocs.yml
+++ b/java-chassis-reference/zh_CN/mkdocs.yml
@@ -18,9 +18,9 @@ nav:
     - HTTP2: transports/http2.md
 - 多样化的服务注册与发现功能参考:
     - 注册发现说明: registry/introduction.md
+    - 使用服务中心: registry/service-center.md
     - 本地注册发现: registry/local-registry.md
     - 去中心化注册发现: registry/distributed.md
-    - 连接多个服务中心: registry/multi-registries.md
 - 服务治理功能参考:
       - 处理链介绍: references-handlers/intruduction.md
       - 负载均衡: references-handlers/loadbalance.md