配置中心 Config
是SpringCloud的配置中心组件,集中管理配置文件,是客户端和服务器端CS模式,配置文件基于Git的。
服务的注册和发现 Eureka
Netflix公司提供的服务注册和发现组件
Netflix相关的组件:Eureka、Ribbon、Hystrix、Zuul、Config等
注册中心的作用:服务提供者启动后将自己的IP和端口注册到注册中心上,服务消费者从注册中心获得服务提供者的IP和端口进行连接,
服务提供者和消费者每隔30s向注册中心发送心跳,如果90s没有发送,注册中心会剔除掉失效的服务器。
路由 Gateway
Gateway是SpringCloud提供的API网关,提供主要功能有:路由和鉴权以及限流、统一配置等。
服务和服务之间的调用 OpenFeign
Feign的简介
SpringCloud提供的声明式的REST客户端,实现远程的服务的调用,只需要编写接口和SpringMVC的注解就能完成调用。
Feign = RestTemplate + Ribbon + Hystrix
Feign的用法
-
引入依赖 openfeign
-
在启动类上加 @EnableFeignClients("Feign接口所在的包名")
-
编写Feign接口,在接口上加@FeignClient("被调用的服务名")
-
在Feign接口中编写方法(对应提供者的方法),方法可以使用SpringMVC的注解
-
注入接口对象,通过方法实现远程调用
负载均衡 Ribbon
服务器为了提高并发性能、可用性一般会以集群方式部署
负载均衡是将流量均匀的分配到每一台服务器上,从而实现集群作用的最大化
负载均衡分为:
服务器端实现
Nginx(软件)、F5(硬件)
客户端实现
Ribbon基于注册中心实现,服务消费者调用服务提供者集群时,Ribbon通过注册中心拉取服务地址,通过特定的负载均衡策略实现服务调用
Ribbon的使用
1)引入Ribbon依赖,已经包含在Eureka-Client依赖中
2) 在RestTemplate加@LoadBalanced
3) 调用提供者时自动生效
配置商品服务的伪集群
熔断器 Hystrix
Netflix提供的熔断器,能在服务出现长时间等待或崩溃的情况下提供一系列处理方法,解决服务雪崩的问题。
方法有:
熔断:当失败率达到一定的阈值,会触发熔断,进行快速失败。
降级:降级处理,返回兜底数据
缓存:对请求进行缓存、请求合并处理
实时监控、报警、控制等
使用方法:
-
引入hystrix依赖
-
在启动类加 @EnableHystrix
-
在需要熔断降级的方法上添加注解 @HystrixCommand(fallbackMethod="降级方法名")
-
在同一个类中添加降级方法,返回兜底数据
@Service public class ProductService { @Autowired private RestTemplate restTemplate; //熔断和降级 @HystrixCommand(fallbackMethod = "getProductByIdFallback") public Product getProductById(Long id){ //商品服务查询商品 ResponseEntity<Product> entity = restTemplate.getForEntity("http://product-service/product/" + id, Product.class); return entity.getBody(); } //降级方法 public Product getProductByIdFallback(Long id){ //兜底的商品对象 return new Product(0L,"兜底商品",new BigDecimal("0")); } }