本章节介绍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>
开发指南 4 对接微服务应用
<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>
- 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:
开发指南 4 对接微服务应用
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),如果业务服务增加了同样
credentials:
rbac.enabled: true account:
name: your account name # 从微服务引擎获取的用户名 password: your password # 从微服务引擎获取的密码
cipher: default #接口org.apache.servicecomb.foundation.auth.Cipher的实现类里面的name() 方法返回的名称
开发指南 4 对接微服务应用
其中“cipher”指定了对“password”进行加密的算法名称,默认提供明文存储。通 过自定义实现加密,如下所以:
● 自定义实现,首先实现接口
“org.apache.servicecomb.foundation.auth.Cipher”,里面的两个方法:
– String name()
这个是servicecomb.credentials.cipher的名称定义,需要配置在配置文件中。
– 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:
rbac.enabled: true account:
name: your account name
password: your password # 加密后的密码
cipher: youciphername #实现类里面的name()方法返回的名称 说明
明文存储无法保证安全, 建议您对密码进行加密存储。
----结束