搭建Eureka服务,实现负载均衡

服务器引入依赖

<!--        eureka服务器依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

客户端引入依赖

<!--        eureka客户端依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

 

服务端配置

server:
  port: 10086 #服务端口
spring:
  application:
    name: eurekaserver #服务端名称
eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

客户端配置

spring:
  application:
    name: orderservice #客户端名称

eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka #服务器的ip地址

 

服务端启动类中,开启EurekaServer服务

@EnableEurekaServer //开启EurekaServer服务
@SpringBootApplication
public class EurekaApplication {

    public static void main( String[] args ) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

 

在restTemplate中,添加负载均衡注解

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

    @Bean
    @LoadBalanced //开启负载均衡
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    @Bean //更改负载均衡规则为随机数,全局配置,之后对所有请求都采用这项规则
    public IRule randomRule(){
        return new RandomRule();
    }
}

服务消费者向服务提供者发送http请求

@Autowired
private RestTemplate restTemplate;

public Order queryOrderById(Long orderId) {
    // 1.查询订单
    Order order = orderMapper.findById(orderId);
    User user = new User();
    String url = "http://userservice/user/"+order.getUserId(); //userservice是前面配置的客户端或服务端名称
    order.setUser(restTemplate.getForObject(url,User.class));
    // 4.返回
    return order;
}

 也可以对单个服务提供者更改某项负载均衡规则。还有加载方式,默认是懒加载,可以改成饥饿加载

userservice: #服务提供者的服务名
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则
ribbon:
  eager-load:
    enabled: true #开启饥饿加载
    clients:
      - userservice
      # -userservice 需要让多个服务提供者对此消费者开启饥饿加载就挨个这样写

 

posted @ 2023-12-19 19:20  凌碎瞳缘  阅读(25)  评论(0编辑  收藏  举报