说明:本节案例的代码承接上节案例
1. 远程调用的问题
2. eureka原理(作用)
假如心跳续约检测到 user-service 8083 端口已经离线:
小结:
3. 实战
3.1 搭建EurekaServer
3.1.1 创建项目 引入依赖
创建项目:
引入依赖:
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
3.1.2 编写启动类(main函数)添加@EnableEurekaServer注解
启动类 EurekaApplication.java
package cn.itcast.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
// 自动装配Eureka
@EnableEurekaServer
// 表明这是一个启动类
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
配置文件 application.yml
server:
port: 10086 # 服务端口
# 下面是为了做服务注册
spring:
application:
name: eureka-server # eureka的服务名称(微服务的名称)
eureka:
client:
service-url: # eureka的地址信息 因为eureka自己也是一个微服务,所以他会把自己也注册到eureka 这是为了以后eureka做集群。
defaultZone: http://127.0.0.1:10086/eureka
启动EurekaServer 看看效果:
小结:
3.2 服务注册
3.2.1 注册user-service
引入依赖:
<!--eureka客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
注册user-service:
spring:
application:
name: user-service
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:10086/eureka
3.2.2 注册order-service
引入依赖:
<!--eureka客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
注册order-service:
spring:
application:
name: order-service
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:10086/eureka
3.2.3 多次启动user-service 模拟多实例部署
3.2.4 启动测试
小结:
3.3 服务发现(拉取)
3.3.1 修改OrderService的代码,修改访问的url路径,用服务名代替ip、端口
3.3.2 在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注解
3.3.3 启动测试
负载均衡说明:
2次查询走了2个微服务,合理的调度了资源。