应用管理与运维平台 ServiceStage应用管理与运维平台 ServiceStage

更新时间:2021/09/15 GMT+08:00
分享

Spring Cloud接入CSE

本章节介绍Spring Cloud如何接入CSE,使得Spring Cloud能够对接CSE,并且方便的使用CSE提供的最常用的功能。在使用微服务引擎功能章节,会给出具体的开发指导。

本章节介绍的开发方法,可以在Spring Cloud Huawei Samples项目中找到对应的代码,供您在开发过程中参考。

Spring Cloud接入CSE需要使用Spring Cloud Huawei,本文主要描述如何在Spring Cloud中集成和使用Spring Cloud Huawei。

前提条件

  • 版本要求:Spring Cloud Huawei 1.6.0-Hoxton及以上版本。
  • 本文假设您的项目使用了maven管理打包,您熟悉maven的依赖管理机制,能够正确的修改pom.xml文件中的dependency management和dependency。

操作步骤

  1. 在项目的“pom.xml”文件中引入依赖。

    • 如果使用Spring Cloud开发微服务,引入:
      <dependency>
        <groupId>com.huaweicloud</groupId>
        <artifactId>spring-cloud-starter-huawei-service-engine</artifactId>
      </dependency>
      
    • 如果使用Spring Cloud Gateway开发网关,引入:
      <dependency>
        <groupId>com.huaweicloud</groupId>
        <artifactId>spring-cloud-starter-huawei-service-engine-gateway</artifactId>
      </dependency>

      推荐使用Maven Dependency Management管理项目依赖的三方软件,在项目中引入:

       <dependencyManagement>
          <dependencies>
            <!-- configure user spring cloud / spring boot versions -->
            <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-dependencies</artifactId>
              <version>${spring-boot.version}</version>
              <type>pom</type>
              <scope>import</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-dependencies</artifactId>
              <version>${spring-cloud.version}</version>
              <type>pom</type>
              <scope>import</scope>
            </dependency>
            <!-- configure spring cloud huawei version -->
            <dependency>
              <groupId>com.huaweicloud</groupId>
              <artifactId>spring-cloud-huawei-bom</artifactId>
              <version>${spring-cloud-huawei.version}</version>
              <type>pom</type>
              <scope>import</scope>
            </dependency>
          </dependencies>
        </dependencyManagement>

    如果您的项目中,已经包含了上述依赖,则不需要做任何处理。

    如果您的项目中使用了其他注册发现库,比如eureka,需要对项目进行适当调整,包括:

    • 删除项目中eureka相关依赖,比如:
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
      </dependency>
    • 如果代码中使用了@EnableEurekaServer, 需要删除并替换为@EnableDiscoveryClient。

      组件spring-cloud-starter-huawei-service-engine包含了服务注册、配置中心、服务治理、灰度发布、契约管理等功能。其中契约管理对于Spring Cloud微服务应用的运行不是必须的。微服务引擎对契约个数存在数量限制,当微服务应用契约个数超过限制,会注册失败。如果遗留系统无法进行合理的拆分减少契约个数,可以排除依赖,不使用契约管理功能。

      <dependency>
        <groupId>com.huaweicloud</groupId>
        <artifactId>spring-cloud-starter-huawei-service-engine</artifactId>
        <exclusions>
      	<exclusion>
      	  <groupId>com.huaweicloud</groupId>
      	  <artifactId>spring-cloud-starter-huawei-swagger</artifactId>
      	</exclusion>
        </exclusions>
      </dependency>

  2. 配置微服务信息。

    “bootstrap.yml”增加微服务描述信息。如果项目中没有“bootstrap.yml”,则创建一个新的文件。

    spring:
      application:
        name: basic-provider
      cloud:
        servicecomb:
          discovery:
            enabled: true
            address: http://127.0.0.1:30100
            appName: basic-application
            serviceName: ${spring.application.name}
            version: 0.0.1
            healthCheckInterval: 30
          config:
            serverAddr:  http://127.0.0.1:30113
            serverType: service-center

    使用微服务引擎2.0,需要将serverType配置为kie。注意kie的端口号和service-center不一样。

    spring:
      cloud:
        servicecomb:
          config:
            serverAddr: http://127.0.0.1:30110
            serverType: kie

  3. (可选)配置AK/SK。

    如果使用微服务引擎专业版,需要配置AK/SK;如果使用微服务引擎专享版,不需要配置AK/SK,可以跳过这个步骤。

    AK/SK在“bootstrap.yml”中配置,默认提供明文配置,支持用户自定义加密存储。

    • 明文方法,在“bootstrap.yml”文件中增加配置。
      spring: 
        cloud: 
          servicecomb: 
            credentials:
              enabled: true
              accessKey: AK
              secretKey: SK
              cipher: default
              project: 项目名称
    • 自定义实现
      1. 首先实现接口“com.huaweicloud.common.util.Cipher”,里面有两个方法:
        • String name(),这个是servicecomb.credentials.akskCustomCipher的名称定义,需要配置在配置文件中。
        • char[] decode(char[] encrypted),解密接口,对secretKey进行解密后使用。
        public class CustomCipher implements Cipher

        加密解密的实现需要作为BootstrapConfiguration,首先声明:

        @Configuration
        public class MyAkSKCipherConfiguration {
          @Bean
          public Cipher customCipher() {
            return new CustomCipher();
          }
        }

        然后增加文件 “META-INF/spring.factories”定义配置:

        org.springframework.cloud.bootstrap.BootstrapConfiguration=\
        com.huaweicloud.common.transport.MyAkSKCipherConfiguration
      2. 自定义完成,即可在“bootstrap.yaml”文件中使用新增加的解密算法:
        spring:
          cloud:
            servicecomb:
              credentials:
                enabled: true
                accessKey: AK
                secretKey: SK
                cipher: 自定义算法名称
                project: 项目名称

  4. (可选)配置安全认证参数。

    使用微服务引擎专享版,并且启用了安全认证,需要配置,其他场景可以跳过这个步骤。

    微服务引擎开启了安全认证之后,所有调用的API都需要先获取token才能调用,认证流程请参考服务中心RBAC说明

    使用安全认证首先需要从微服务引擎获取用户名和密码,然后在配置文件中增加如下配置。和配置AK/SK一样,password默认明文存储,开发者可以自定义password的加密存储算法,这里不重复描述。

    spring:
      cloud:
        servicecomb:
          credentials:
            account:
              name:用户名
              password:密码
            cipher: 自定义算法名称

    使用安全认证功能,需要1.6.0-Hoxton及以上版本。

    使用微服务引擎专业版,不能使用watch功能,需要在配置文件里面关闭,否则会周期性打印错误日志。服务中心设置watch=false。1.6.0-Hoxton及以上版本默认没有开启watch功能,不需要设置。

    spring:
      cloud:
        servicecomb:
          discovery:
            watch: false

分享:

    相关文档

    相关产品