栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springcloud负载均衡

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springcloud负载均衡

LoadBalance服务调用
创建两个provider01 和 provider02 ,, spring.application.name 配置相同名字

spring:
  application:
    name: UserProvider
server:
  port: 3000
eureka:
  client:
    service-url:
      defaultZone: http://localhost:1111/eureka,http://localhost:1112/eureka
spring:
  application:
    name: UserProvider
server:
  port: 3001
eureka:
  client:
    service-url:
      defaultZone: http://localhost:1111/eureka,http://localhost:1112/eureka

在消费者中使用 LoadBalanceClient 对象,实现负载均衡:

  • 注入一个普通的 RestTemplate 对象
  • 使用 LoadBalanceClient 和 RestTemplate 实现负载均衡
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    RestTemplate restTemplate;

    // 支持负载均衡的调用客户端
    @Autowired
    LoadBalancerClient loadBalancerClient;

    @Override
    public Map findAllUser() {
//        通过客户端调用服务均衡器查找服务
        ServiceInstance inst = loadBalancerClient.choose("UserProvider");

        String url ="http://"+ inst.getHost()+":"+inst.getPort();
        System.out.println(url);
        Map map = restTemplate.getForObject(url, Map.class);
        return map;

    }
}

Ribbon
给RestTemplate bean添加 @LoadBalanced 注解,变成可以负载均衡的RestTemplate

   @Bean
    @LoadBalanced  // 开启ribbon
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    RestTemplate restTemplate;

    @Override
    public Map findAllUser() {
        Map  map = restTemplate.getForObject("http://UserProvider", Map.class);
        return map;
    }
}

openfeign

和Ribbon 一个性质的东西,Ribbon.需要手动调用目标服务
OpenFeign是 spring cloud 在 feign 的基础上支持了 SpringMVc注解,如@RequestMapping等

引用:https://blog.csdn.net/zimou5581/article/details/89949852

feign简化负载均衡书写,使用@FeignClient(服务名字) 声明一个接口,在接口中使用 RequestMapping 来匹配服务端的每一个接口,与之对应,,,在Controller层调用这个接口,就相当于远程调用了服务端的接口。。

导入包:

  
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

配置文件:

server:
  port: 3200
spring:
  application:
    name: userweb02


eureka:
  client:
    service-url:
      defaultZone: http://localhost:1111/eureka,http://localhost:1112/eureka

定义一个接口引用远程服务

@FeignClient(value = "UserProvider")
public interface UserService {
    @GetMapping("/")
    public Map findAll();
}

启动类要开启openfeign 使用 @EnableFeignClients

openFeign配置日志:

这里指定的Level级别是FULL,Feign支持4种级别:
NONE:不记录任何日志信息,这是默认值。
BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。

配置一个日志的Bean

@Configuration
public class FeignConfig {
    @Bean
    public Logger.Level getFeignLogger(){
        return Logger.Level.FULL;
    }
}

设置指定包的日志打印:

# 设置消费者指定包日志级别
logging:
  level:
    com:
      cj: debug
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/288086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号