• 沒有找到結果。

1.4 对接微服务应用

1.4.2 Java Chassis 接入 CSE

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

org.springframework.cloud.bootstrap.BootstrapConfiguration=\

com.huaweicloud.common.transport.MyCipherConfiguration 自定义完成,即可在bootstrap.yaml文件中使用新增加的解密算法:

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 ----结束

1.4.2 Java Chassis 接入 CSE

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

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

前提条件

● 已基于Java Chassis开发好了微服务应用。

Java Chass框架下的微服务应用开发,请参考https://servicecomb.apache.org/

references/java-chassis/zh_CN/。

● 版本要求:Java Chassis 2.3.0及以上版本。

● 本文假设您的项目使用了maven管理打包,您熟悉maven的依赖管理机制,能够 正确的修改“pom.xml”文件中的dependency management和dependency。

● Java Chassis支持和不同的技术进行组合使用,配置文件的名称和实际使用的技术 有关。如果您采用Spring方式使用Java Chassis,配置文件的名称一般为

“microservice.yaml”,如果您采用Spring Boot方式使用Java Chassis, 配置文 件名称一般为“application.yaml”。本文统一使用“microservice.yaml”表示配 置文件,请结合实际项目进行区分。

操作步骤

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

<dependency>

<groupId>org.apache.servicecomb</groupId>

<artifactId>solution-basic</artifactId>

</dependency>

<dependency>

<groupId>org.apache.servicecomb</groupId>

<artifactId>servicestage-environment</artifactId>

</dependency>

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

“pom.xml”文件中引入:

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.apache.servicecomb</groupId>

<artifactId>java-chassis-dependencies</artifactId>

<version>${java-chassis.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

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

- servicecomb.service.registry.address - servicecomb.config.client.serverUri PAAS_CSE_SC_ENDPOINT:

- servicecomb.service.registry.address PAAS_CSE_CC_ENDPOINT:

- servicecomb.config.client.serverUri PAAS_PROJECT_NAME:

- servicecomb.credentials.project

# CAS_APPLICATION_NAME:

# - servicecomb.service.application

# CAS_COMPONENT_NAME:

# - servicecomb.service.name

# CAS_INSTANCE_VERSION:

# - servicecomb.service.version

solution-basic里面引入了常用的软件包,并且提供了默认的“microservice.yaml”文 件。这个配置文件配置了常用的Handler和参数。其内容如下:

# order of this configure file servicecomb-config-order: -100

servicecomb:

# handlers handler:

chain:

Provider:

default: qps-flowcontrol-provider Consumer:

default: qps-flowcontrol-consumer,loadbalance,fault-injection-consumer

# loadbalance strategies references:

version-rule: 0 loadbalance:

retryEnabled: true retryOnNext: 1 retryOnSame: 0

# metrics and access log accesslog:

enabled: true metrics:

window_time: 60000 invocation:

latencyDistribution: 0,1,10,100,1000 Consumer.invocation.slow:

enabled: true msTime: 1000

Provider.invocation.slow:

enabled: true msTime: 1000 publisher.defaultLog:

enabled: true

endpoints.client.detail.enabled: true

“microservice.yaml”配置文件设置了servicecomb-config-order: -100 , 表示配置 文件的优先级很低(order越大,优先级越高,缺省为0),如果业务服务增加了同样

● 明文方法,在“microservice.yaml”文件中增加配置。

servicecomb:

● 自定义实现,首先实现接口

“org.apache.servicecomb.foundation.auth.Cipher”,里面有两个方法:

– String name()

这个是servicecomb.credentials.akskCustomCipher的名称定义,需要配置在 配置文件中。

– char[] decode(char[] encrypted)

解密接口,对secretKey进行解密后使用。

实现类需要声明为SPI,比如:

package com.example

public class MyCipher implements Cipher

创建SPI配置文件,文件名称和路径为META-INF/serivces/

org.apache.servicecomb.foundation.auth.Cipher, 文件内容为:

com.example.MyCipher

然后在“microservice.yaml”文件中增加配置。

servicecomb:

credentials:

accessKey: AK

secretKey: SK #对应的加密后的SK project: 项目名称

akskCustomCipher: youciphername #实现类里面的name()方法返回的名称 说明

如果不想将AK/SK写入配置文件,也可以使用如下两种方法,具体操作请参考Java Chassis。

● 使用环境变量。操作系统环境变量名称不支持“.”,Java Chassis能够自动处理 servicecomb_credentials_accessKey环境变量,将其映射到

servicecomb.credentials.accessKey。

增加“mapping.yaml”文件,自定义环境变量名称。在步骤1介绍模块servicestage-environment的时候,已经用到了这个方法。

步骤3 (可选)配置安全认证参数。

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

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

使用安全认证首先需要从微服务引擎获取用户名和密码,然后在配置文件中增加如下 配置:

servicecomb:

credentials:

rbac.enabled: true account:

name: your account name # 从微服务引擎获取的用户名 password: your password # 从微服务引擎获取的密码

cipher: default #接口org.apache.servicecomb.foundation.auth.Cipher的实现类里面的name() 方法返回的名称

其中“cipher”指定了对“password”进行加密的算法名称,默认提供明文存储。

和AK/SK认证的加密方案类似,通过实现接口

“org.apache.servicecomb.foundation.auth.Cipher”可以对密码进行加密存储。

说明

● 明文存储无法保证安全, 建议您对密码进行加密存储。

● 和配置AK/SK一样,也可以使用环境变量配置用户名和密码信息,请参考Java Chassis。

● 使用微服务引擎专业版,不能使用watch功能,需要在配置文件里面关闭,否则会周期性打 印错误日志。服务中心设置watch=false,配置中心设置refreshMode=1。

servicecomb:

service:

application: porter-application name: user-service

version: 0.0.1 registry:

address: http://localhost:30100 instance:

watch: false config:

client:

serverUri: http://localhost:30113 refreshMode: 1

----结束