使用服务中心

服务中心(servicecomb-service-center) 提供了完备的注册发现机制, 实现了所有 MicroserviceMicroserviceInstance 信息的注册和发现, 是 servicecomb 缺省使用的注册发现机制。

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

  • 表1-1 访问服务中心常用的配置项
配置项默认值是否必选含义
servicecomb.service.registry.addresshttp://127.0.0.1:30100服务中心的地址信息,可以配置多个,用逗号分隔。
servicecomb.service.registry.instance.watchtrue是否采用PUSH模式监听实例变化。为false的时候表示使用PULL模式。
servicecomb.service.registry.autodiscoveryfalse是否自动发现服务中心的地址。当需要配置部分地址,其他地址由配置的服务中心实例发现的时候,开启这个配置。
servicecomb.service.registry.instance.healthCheck.interval30心跳间隔。
servicecomb.service.registry.instance.healthCheck.times3允许的心跳失败次数。当连续第times+1次心跳仍然失败时则实例被sc下线。即interval * (times + 1)决定了实例被自动注销的时间。如果服务中心等待这么长的时间没有收取到心跳,会注销实例。
servicecomb.service.registry.instance.empty.protectiontrue当从服务中心查询到的地址为空的时候,是否覆盖本地缓存。这个是一种可靠性保护机制,避免实例异常批量下线导致的请求失败。

servicecomb 与服务中心采用 HTTP 进行交互, HTTP client 相关配置可以参 考 Service Center Client 配置项

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

  <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认证,服务中心开启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 认证需要配置如下信息:

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>