一、概述
1、Ribbon:
SpingCloud Ribbon是基于NetFlix Ribbon实现的一套客户端-负载均衡的工具。简单的说,Ribbon是NetFlix公司发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时、重试等。再简单点说,就是在配置文件中列出Load Balancer (简称LB)后面的机器,Ribbon会自动帮助我们基于某种规则(如简单轮询、随机连接等)去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。官网资料:https://github.com/Netflix/ribbon/wiki/Getting-Started,Ribbon目前也进行维护模式。目前SpringCloud打算使用SpringCloud Load Balancer 替换Ribbon。Ribbon=负载均衡+RestTemplate调用。
RestTemplate官网API:
2、OpenFeign:
官网地址:https://spring.io/projects/spring-cloud-openfeign,GitHub地址:https://github.com/spring-cloud/spring-cloud-openfeign
①Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可插拔式的编码器和解码器。SpringCloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合以支持负载均衡。
②OpenFeign与Feign的区别:
③OpenFeign日志级别:
(1)NONE:默认的,不显示任何日志;
(2)BASIC:仅记录请求方法、URL、响应状态码及执行时间;
(3)HEADERS:除了BASIC定义的信息之外,还有请求和响应的头信息;
(4)FULL:除了HEADERS中定义的信息之外,还有请求和响应的正文及数据。
3、Ribbon本地负载均衡与Nginx服务端负载均衡区别:
(1)Nginx是服务器负载均衡,客户端所有请求都会交给Nginx,然后由Nginx实现转发请求。即负载均衡是由服务端来实现。
(2)Ribbon是本地负载均衡,在调用微服务接口时,会在注册中心上获取信息服务列表之后缓存到JVM本地,从而实现本地RPC远程调用技术。
二、Ribbon服务调用
Ribbon工作流程:
1、选择Eureka Server,它优先选择在同一个区域内负载比较少的Server
2、根据用户指定的策略,再从Server取到的服务注册列表中选择一个地址
部分参考鄙人博客:SpringCloud全家桶学习之客户端负载均衡及自定义负载均衡算法----Ribbon(三),其中有包含源码、自定义轮询算法配置。
三、OpenFeign服务调用
部分参考鄙人博客:SpringCloud全家桶学习之Feign负载均衡----Feign(四)
1、简单使用
1.1、接口+注解
ps:红框对应红框,蓝框对应蓝框内容。