6.1 Eureka 客户端
- 前面【Spring Cloud 学习笔记——Eureka 服务端集群、Eureka 工作细节、Eureka 集群原理】介绍完了 Eureka Sever,现在开始搭建客户端 Eureka Client;搭建客户端也非常方便,只需要 在 application.properties 中添加 3 行配置就可以了
- 客户端要有两种,一种是被调用的客户端,一种是调用其他接口的客户端,是根据业务人为划分的,也可以叫生产者服务,一种消费者服务,以下简称 provider 和 consumer
6.1.1 Eureka Client —— provider
- 创建 provider 的module
- 输入项目名
- 选择 Web 、Eureka Discovery Client依赖
- appliction.properties
spring.application.name=provider
server.port=1113
eureka.client.service-url.defaultZone=http://eurekaB:1112/eureka,http://eurekaA:1111/eureka
- 编写 HelloController
@RestController
public class HelloController {
@Value("${server.port}")
Integer port;
@RequestMapping("/hello")
public String hello(){
return "hello " + port;
}
}
- 启动项目,在 Eureka Server 中查看注册信息,看到 provider 服务注册到 Eureka Server,即 Eureka Client 注册到 Eureka Server 了
6.1.2 Eureka Client —— consumer
-
与 provider 一样,在 springcloudtest 项目中创建 consumer 的 moudle
-
输入项目名
-
选择 Web 、Eureka Discovery Client依赖
-
appliction.properties
spring.application.name=provider
server.port=1115
eureka.client.service-url.defaultZone=http://eurekaB:1112/eureka,http://eurekaA:1111/eureka
- 编写 UseHelloController,使用 Java SE 请求访问 provider,
@RestController
public class UseHelloController {
@GetMapping("/hello1")
public String hello1() {
HttpURLConnection conn = null;
try {
URL url = new URL("http://localhost:1113/hello");
conn = (HttpURLConnection) url.openConnection();
if (conn.getResponseCode() == 200) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String s = br.readLine();
br.close();
return s;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "error!";
}
-在之前的 Eureka Server 集群基础上,打包 provider、consumer,通过命令行启动两个服务:
java -jar provider-0.0.1-SNAPSHOT.jar --server.port=1113
java -jar consumer-0.0.1-SNAPSHOT.jar --server.port=1115
然后通过,访问 Eureka 的可视化窗口:http://localhost:1111,查看注册情况
- 通过客户端 consumer 调用 provider 接口,成功了,证明单客户端、集群化服务的配置可用了
- 开始集群化 Eureka Clinet ,即集群化 provider、consumer服务,通过命令行再启动两个服务
java -jar provider-0.0.1-SNAPSHOT.jar --server.port=1114
java -jar consumer-0.0.1-SNAPSHOT.jar --server.port=1116
- 查看注册情况
访问:http://localhost:1111
- 通过 1116 端口的 consumer 服务访问 provider的内容,如果成功证明 consumer 集群可用;
因为 consumer 中的调用代码写死是访问 1113 端口的 provider,不能确定 provider 集群是否好用;获取服务也是写死的没有利用 Eureka Discovery Client ;在介绍 RestTemplate 和负载均衡的时候再进一步验证 provider 集群,并利用 Eureka 获取服务地址