• 沒有找到結果。

本章节介绍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()方法返回的名称 说明

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

----结束

相關文件