关于负载均衡:微服务服务治理之负载均衡实践使用-Ribbon-和-Feign-实现负载均衡详解

2次阅读

共计 1081 个字符,预计需要花费 3 分钟才能阅读完成。

Ribbon 负载平衡

Ribbon 与 Nginx 的区别

  • 客户端负载平衡 Ribbbon:

    • Ribbon 是从 Eureka 注册核心服务器上获取注册信息列表,缓存到本地, 而后在本地实现轮询负载平衡策略. 即在客户端实现负载平衡.
  • 服务端负载平衡 Nginx:

    • Ngnix 是客户端所有申请对立交给 Nginx, 由 Nginx 实现负载平衡申请转发, 属于服务器端负载平衡. 即申请由 Nginx 服务器端进行转发.
    • 利用场景的区别:

      • Nginx实用服务器端实现负载平衡:Tomcat,Jetty
      • Ribbon实用于在微服务中 RPC 近程调用实现本地负载平衡:Dubbo,SpringCloud

        Ribbon 负载平衡的底层实现

  • Ribbon 负载平衡:

    • 客户端从 Eureka 注册核心获取对应的注册信息列表, 获取到注册信息列表后, 缓存到本地, 而后在本地实现负载平衡. 即负载平衡是由客户端实现的.
  • 负载平衡算法:

    • 接口的总申请数 取模 服务器数失去理论的服务器下标 (从 0 开始) 获取到服务器调用服务
  • 实现:

    • 获取对应服务器的近程调用地址:DiscoveryClient

      List<ServiceInstance> instances=discoveryClient.getInstance("eureka_ticket");
    • 应用 rest 形式发送申请应用近程调用

       String result=restTemplate.getForObject(instanceUrl,String.class);

      Feign

  • SpringCloud 中反对两种客户端调用工具:

    • Rest(RestTemplate 模板)
    • Feign
  • Feign 是 申明式 Http 客户端调用工具, 采纳 接口 + 注解 形式实现, 易读性强.

    Feign 客户端书写是以 SpringMVC 接口模式书写的
    
    @FeignClient(name="服务别名")
    @FeignClient 调用服务接口(name: 服务名称)
    
    在主类上标注 @EnableFeignClients 注解开启 Feign 权限
    微服务项目目录构造:
    parent: 寄存独特的依赖信息
    api-service: 所有服务的接口
    ticket-service: 特定服务的接口
    ticket-serviceImpl: 特定服务的实现
    实体类和定义接口信息寄存在接口包里
    在特定服务中的参数后面要标注 @RequestParam("xx"), 这样参数才会被接管

    Feign 客户端超时工夫设置

    设置 Feign 客户端超时工夫
    ribbon.connectTime=5000        # 建设连贯所用工夫, 两端连贯所用工夫
    ribbon.ReadTimeout=5000        # 建设连贯后, 从服务器读取可用资源所用工夫
正文完
 0