Ribbon(基于客户端)
1.ribbon是什么
Spring Cloud Ribbon 是基于NetFlix Ribbon实现的一套客户端堵在均衡的工具。
Ribbon时NetFlix发布的开源项目,主要功能是提供负载均衡算法,将NetFlix的中间层服务连接在一起。Ribbon的客户端组件提供一系列完整的配置项,如:连接超时,重试等的。简单地说,就是在配置文件中列出LoadBalancer(j简称LB:负载均衡)后面所有的及其,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些及其。我们也容易使用Ribbon实现自定义的负载均衡算法。
①LB即负载均衡,在微服务或分布式集群中经常用的一种应用。
②负载均衡简单的说就是将用户的请求平摊分配到多个服务上,从而达到系统的HA(高可用)。
③常见的负载均衡有Nginx,Lvs等等。
④dubbo、springcloud中君给我们提供负载均衡,springcloud的负载均衡算法可以自定义。
⑤负载均衡的简单分类:
集中式LB:
即在服务的提供方和消费方之间使用独立的LB设施,如Nginx(反向代理服务器),由该设施负责吧访问请求通过某种策略转发到服务的提供方!
渐进式LB
1.将LB逻辑集成到消费方,消费方从服务注册中心 获知那些地址可以用,然后自己再从这些地址中选一个核实的服务器。
Ribbon就属于进程内LB,他只是一个类库,继承与消费方进程,消费方通过他来获取到服务提供方的地址。
2.集成Ribbon
Feign(基于服务端)
1.简介
feign是声明式的web service客户端,它让微服务之间的调用变得更加简单,类似于controller调用service。springcloud集成了Ribbon和Eureka,可以使用Feign时提供的负载均衡的http客户端。
只需要创建一个接口,然后添加注解就可以。
feign主要是社区,大家都习惯面向接口编程,这是许多开发人员的规范,调用微服务访问两种方法:
1.微服务名字【ribbon】
2.接口注解【feign】
feign能干什么?
1.feign旨在让编写jaba http客户端变得更加容易
2.在前面使用ribbon+RestTemplate时,利用RestTemplate对http进行请求的封装,形成一套模板化的调用方法。但在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务进行封装一个客户端类包装这些依赖服务的调用。所以***,feign在此基础上进行进一步的封装,由他来帮助我们订阅和实现依赖服务接口的定义,在feign的实现下,我们只需要创建一个接口并使用注解的方式来配置它(类似于以前的dao接口上注解mapper注解,现在是一个在微服务接口上标注一个feign注解即可。)***即可完成对服务提供方的接口绑定,简化使用springcloud ribbon时,自动封装服务调用客户端的发展量。
feign默认集成了ribbon
利用ribbon维护了MincroServiceCloud-dept的服务列表,并通过轮询实现了客户端的负载均衡,而与ribbon不同的是,通过feign只需要定义服务绑定接口兵役声明式的方法,优雅的实现了服务调用。