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

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        # 建设连贯后,从服务器读取可用资源所用工夫

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理