集群搭建
1. 集群搭建
spring_cloud:为总项目(父工程)
eureka-server:注册中心的服务(启动注册中心)
eureka-server2:注册中心2的服务(启动注册中心)
user-consumer:消费者(通过注册中心去访问提供者的API接口)
user-provider:提供者(提供访问接口到注册中心)
user-provider2:提供者2(提供访问接口到注册中心)
2.eureka-server 服务为互相注册
- eureka-server的yml
server:
port: 7777
spring:
application:
name: eureka-server
eureka:
client:
register-with-eureka: true
fetch-registry: true
serviceUrl:
defaultZone: http://localhost:7778/eureka/
- eureka-server2的yml
server:
port: 7778
spring:
application:
name: eureka-server
eureka:
client:
register-with-eureka: true
fetch-registry: true
serviceUrl:
defaultZone: http://localhost:7777/eureka/
3. 提供者和消费者的配置
- 将两个服务器的地址都注册进去
eureka:
client:
serviceUrl:
defaultZone: http://localhost:7777/eureka/,http://localhost:7778/eureka/
4. 在消费者的启动类添加
- 在使用 RestTemplate 的时候 如果 RestTemplate 上面有 这个注解,那么 这个 RestTemplate 调用的 远程地址,会走负载均衡器。
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
2.Controller简写
@RequestMapping("/{id}")
public Object findById(@PathVariable Integer id){
String url = "http://user-provider/user/find/"+id;
String result = restTemplate.getForObject(url,String.class);
System.out.println(result);
return result;
}
5. 启动两个服务
- 端口为7777的服务器
- 端口为7778的服务器
通过Instances currently registered with Eureka 两个eureka服务都注册进去了,
并且提供者也有两个
通过DS Replicas可以看到服务的复制品 也就是说服务的集群
这样子eureka的集群就完成了
6.访问消费者
这是eureka的负载均衡算法 默认走的ZoneAvoidanceRule算法 底层是轮询算法