概述
结合微服务框架,进行第一个微服务HelloWorld应用的开发。
通过这个例子,你将学会:
- 定义一个远程服务接口
- provider发布远程服务到注册中心
- consumer自动发现远程服务并完成服务调用
操作步骤
步骤 1配置maven
CSE的发布件在华为云提供的maven仓库中,需要在maven setting文件中指定对应的仓库,使得能够下载CSE相关依赖包。
<mirror>
<id>mirrorId</id>
<mirrorOf>*</mirrorOf>
<name>Mirror of central repository.</name>
<url>http://maven.huaweicse.com/nexus/content/groups/public</url>
</mirror>
步骤 2引入POM依赖包
修改项目的pom文件,引入相应的微服务框架依赖包。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.huawei.paas.cse</groupId>
<artifactId>cse-dependency</artifactId>
<version>2.3.12</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.huawei.paas.cse</groupId>
<artifactId>cse-solution-service-engine</artifactId>
</dependency>
</dependencies>
步骤 3修改配置。
1.配置微服务信息
在src/main/resources目录下面创建microservice.yaml文件,用于存放sdk配置信息。
APPLICATION_ID: helloTest
service_description:
name: helloClient
version: 0.0.1
cse:
service:
registry:
address: http://127.0.0.1:30100
2.日志文件配置(可选)
在src/main/resources目录下面创建config目录,添加log4j.hello.properties配置文件,日志配置文件命名规则为log4j.*.properties,内容如下。
paas.logs.dir=../logs/ #日志文件目录
paas.logs.file=hello.log #日志文件名
log4j.rootLogger=INFO,paas,stdout
步骤 4定义服务接口:(该接口需单独打包,在服务提供方和消费方共享)
HelloWorldService.java
根据契约编写业务接口,如下:
public interface HelloWorldService{
String sayHello(String name);
}
步骤 5Provider实现
- 服务提供方实现接口(对服务消费方隐藏实现):
@RpcSchema(schemaId="hello")
public class HelloWorldServiceImpl implements HelloWorldService{
public String sayHello(String name) {
return "hello " + name;
}
}
- 编写Main启动函数:
public class Provider{
public static void main(String[] args) throws Exception {
Log4jUtils.init(); //日志初始化
BeanUtils.init(); //Spring初始化
}
}
步骤 6 Consumer实现
- 服务调用声明
在文件META-INF/spring/hello.bean.xml中声明如下:
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" xmlns:cse="http://www.huawei.com/schema/paas/cse/rpc" xsi:schemaLocation="http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
<cse:rpc-reference id="helloworld" schema-id="helloworld" microservice-name="helloServer"></cse:rpc-reference>
</beans>
- 服务调用
Consumer.java
public class Consumer{
public static void main(String[] args) throws Exception {
Log4jUtils.init(); #日志初始化
BeanUtils.init(); # Spring bean初始化
HelloWorld hello = BeanUtils.getBean("helloworld")#服务调用
System.out.println(hello.sayHello("world"));
}
}
步骤 7服务注册
- 启动服务中心
服务中心单机版安装包为cse-service-center-standalone.tar.gz,现在只支持64位,解压之后,单击安装包里的start.bat脚本即可启动服务中心(linux环境下运行start.sh)。
- 使用华为云在线中间件
开发者只需要注册华为云用户,获得相应的AK、SK认证信息,即可直接使用在线服务,省去了本地按照服务的麻烦。还可以在线监控自己的服务状态。使用在线的服务,只需要将连接信息配置为对应的域名,并设置AK、SK:
cse:
service:
registry:
address: https://cse.cn-north-1.myhwclouds.com:443
instance:
watch: false
config:
client:
serverUri: https://cse.cn-north-1.myhwclouds.com:443
refreshMode: 1
refresh_interval: 5000
monitor:
client:
serverUri: https://cse.cn-north-1.myhwclouds.com:443
credentials:
accessKey: your access key
secretKey: your secret key
akskCustomCipher: default