一、首先创建 Eureka 注册中心项目
二、创建服务提供者cloud-provider
因为要测试负载均衡,但是不想写重复的项目,我们可以通过启动同一个项目来设定不同端口号,达到该目的。
- 设置动态端口
server:
port: ${port:8001}
spring:
application:
name: cloud-provider
eureka:
client:
register-with-eureka: true
service-url:
defaultZone: http://localhost:7001/eureka/
instance:
instance-id: provider-${server.port} # Eureka Statue显示地址为 provider8001
prefer-ip-address: true #访问路径可以显示IP地址
lease-renewal-interval-in-seconds: 1 # Eureka客户端向服务器发送心跳的间隔
lease-expiration-duration-in-seconds: 2 # Eureka服务器收到最后一次心跳后等待的时间上限
-
修改创建启动类
image.png
三、创建消费者 cloud-consumer 。
-
在消费者项目中,实验负载均衡,已经引入 Eureka 依赖,里面包含 Ribbon 依赖
-
创建 controller ,进行调用
//远程调用
@Resource
RestTemplate restTemplate;
//引入 Ribbon 负载
@Resource
private LoadBalancerClient loadBalancerClient;
@GetMapping("/consumer/ribbon/{name}")
public String testRibbon(@PathVariable("name")String name){
ServiceInstance choose = loadBalancerClient.choose("cloud-provider");//不区分大小写
System.out.println("getUri:"+choose.getUri());
System.out.println("getHost:"+choose.getHost());
System.out.println("getPort:"+choose.getPort());
System.out.println("getInstanceId:"+choose.getInstanceId());
System.out.println("getMetadata:"+choose.getMetadata());
System.out.println("getScheme:"+choose.getScheme());
System.out.println("getServiceId:"+choose.getServiceId());
return " ConsumerController";
}
四、测试
分别启动 Eureka 、cloud-provider8001、cloud-provider8002、cloud-consumer
-
查看Eureka 控制台
Eureka 控制台.png -
发现每次调用结果不同,默认采用 轮询方式
调用结果.png
网友评论