Skip to content

使用 Service Center

ServcieComb Service Center 提供了完备的注册发现机制, 是 Java Chassis 缺省使用的注册发现机制。

服务中心支持使用 PULLPUSH 两种模式通知实例变化, 开发者可以配置服务中心集群地址、连接参数以及心跳管理等。

  • 表1-1 访问服务中心常用的配置项
配置项 默认值 是否必选 含义
servicecomb.registry.sc.enabled true 是否启用。
servicecomb.registry.sc.address http://127.0.0.1:30100 服务中心的地址信息,可以配置多个,用逗号分隔。
servicecomb.registry.sc.watch false 是否采用PUSH模式监听实例变化。为false的时候表示使用PULL模式。
servicecomb.registry.sc.autodiscovery false 是否自动发现服务中心的地址。当需要配置部分地址,其他地址由配置的服务中心实例发现的时候,开启这个配置。
servicecomb.registry.sc.healthCheckIntervalInSeconds 30 心跳间隔。
servicecomb.registry.sc.healthCheckTimes 3 允许的心跳失败次数。当连续第times+1次心跳仍然失败时则实例被sc下线。即interval * (times + 1)决定了实例被自动注销的时间。如果服务中心等待这么长的时间没有收取到心跳,会注销实例。

使用服务中心需要确保下面的软件包引入:

  <dependency>
    <groupId>org.apache.servicecomb</groupId>
    <artifactId>registry-service-center</artifactId>
  </dependency>

使用 RBAC 认证

服务中心支持RBAC认证,服务中心开启RBAC认证之 后,客户端调用服务中心接口都需要先获取token,保证服务的安全可信。 使用 RBAC 认证, 需要使用 2.1.3 及其以上的版本。

  • 服务配置

使用 RBAC 认证,需要在配置文件中增加如下配置项, 指定连接服务中心的用户名和密码:

    ```
    servicecomb:
      credentials:
        rbac.enabled: true # 使用启用 RBAC, 默认为 false
        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 认证需要配置如下信息:

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>