服务治理
一、服务治理说明
1、方便微服务实例的上线与下线,实现服务快速进行水平扩展。
2、为微服务架构提升应用弹性,当其中一个应用的一个服务提供者实例不可用或者出现问题时,服务治理可及时发现问题,在调度消费者时可以绕开有问题的实例,将应用的影响降低到最低。
二、服务治理优点
1、可用性:支持动态的服务实例集群环境,任何服务实例可随时上线与下线。服务消费者只需知道服务名称即可调用相应服务,而无需知道服务提供者的物理地址.
2、负载均衡:可提供动态的负载均衡功能,并将所有的请求动态地分布到所管理的所有服务实例中进行处理。
3、应用弹性:服务治理的客户端会定时从服务治理服务器中复制一份服务实例信息缓存到本地中,这样即使当服务治理服务器不可用时,服务消费者也可使用本地的缓存区访问相应的服务,而不至于中断服务。
4、高可用性集群:可构建服务治理集群,通过互相注册机制,将每个治理服务所管辖的服务信息列表进行交换,是服务治理服务用友更高的可用性。
客户端负载均衡--Ribbon
1、修改服务消费方,增加依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
2、访问服务的入口类增加如下配置:
//增加@LoadBalanced,使得restTemplate具有负载均衡功能
@LoadBalanced
3、实现原理步骤:
(1)Ribbon首先根据其所在Zone优先选择一个负载较小的Eureka服务器;
(2)定期从Eureka服务器更新,并过滤服务实例列表;
(3)根据指定的负载均衡策略,从可用的服务实例列表中选择一个;
(4)然后使用改地址,通过rest客户端进行服务调用。
Feign
15:02
Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单。Feign提供了http请求模板,通过编写简单的接口并插入注解,就可以完成HTTP请求的参数、格式、地址、等信息的声明。通过feign代理请求,我们只需要像调用方法一样调用它就可以完成微服务请求及相关处理。