Ribbon
随着服务注册中心的安装完成后,客户端的负载均衡和服务的调用又是我们关注的话题。Ribbon可以实现客户端的负载均衡,
负载均衡LB
Load Balance(负载均衡):简单的说就是将用户的请求平摊的分配到多个服务器上,从而达到系统的HA(高可用)。常见的负载均衡工具有nginx、LVS,硬件上F5等
集中式LB
即在服务的消费方和提供方之间使用独立的LB设施,可以是硬件F5、也可以是软件nginx、LVS等,提供该设施将请求通过某种策略发送给服务提供方
进程内LB
将LB逻辑集成到消费方,消费方从服务注册中心查找服务列表,然后获取服务地址根据某种规则选出合适的服务器。Ribbon就是进程内LB,它只是一个类库,集成于消费方进程,消费者通过它来获取到服务提供方的地址
SpringCloud Ribbon是基于Netflix Ribbon实现的一套客户端的负载均衡工具,主要功能是提供了客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供了一系列完善的配置项例如连接超时、重试等。Ribbon目前也进入了维护模式
Ribbon 是 Netflix开源的基于HTTP和TCP等协议负载均衡组件
Ribbon 可以用来做客户端负载均衡,调用注册中心的服务
Ribbon的使用需要代码里手动调用目标服务,请参考官方示例:https://github.com/Netflix/ribbon
Nginx是服务器端的负载均衡,客户端的所有请求都会交给nginx,由nginx分发到各个服务器上。即负载均衡是由服务端实现的
Ribbon是本地的负载均衡,在调用微服务接口的时候,会在注册中心上获取注册服务信息列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用的技术
Feign
Feign是Spring Cloud组件中的一个轻量级RESTful
的HTTP服务客户端
Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。
Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务
Feign支持的注解和用法请参考官方文档:https://github.com/OpenFeign/feign
Feign本身不支持Spring MVC的注解,它有一套自己的注解
Feign是Spring Cloud组件中的一个轻量级Restful的HTTP服务客户端,Feign内置了Ribbon,用来做客户端的负载均衡,去调用服务注册中心的服务。Feign的使用方式是:使用Feign的注解接口,调用这个接口,就可以调用服务注册中心的服务
OpenFeign
而OpenFeign则是可以让我们像调用Dubbo接口一样,实现面向接口编程
OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解,如@RequesMapping
等等。
OpenFeign的@FeignClient
可以解析SpringMVC的@RequestMapping
注解下的接口,
并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。
OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理产生实现类,实现类中做负载均衡并调用其他服务