Spring Cloud组件

1.服务治理 Spring Cloud Eureka

概念

Eureka提供了服务端组件,我们也称为注册中心。每个服务都向Eureka的服务注册中心,登记自己提供服务的元数据,包括服务的ip地址、端口号、版本号、通信协议等。

原理

服务注册中心,还会以心跳的方式去监听清单中的服务是否可用(默认30秒),若不可用(服务续约时间默认90秒),需从清单中剔除,达到排除故障服务的效果。
Eureka注册中心提供了高可用方案,可以支持集群部署注册中心,保证了AP(可用性和分区容错性),然后多个注册中心实例之间又相互注册,这样每个实例中都有一样的服务清单了。

2.客户端负载均衡 Spring Cloud Ribbon

概念

服务的调用方,在通过Eureka Client缓存到本地的注册表之后,通过服务名称,找到具体的服务对应的实例地址,但是被调用方的服务地址是有多个的,那么该用那个地址去进行调用呢?ribbon提供访问方案。

策略

随机:从服务实例清单中随机选择一个服务实例
权重:根据权重来挑选实例
轮训:根据轮询方式进行,且具备重试机制进行选择实例

3.声明式服务调用 Spring Cloud Feign

概念

Spring Cloud Feign具备可插拔的注解支持,并扩展了Spring MVC的注解支持,调用方通过Feign进程远程服务调用的时候,非常简单,就向是在调用本地服务一样.

原理

Feign底层主要是靠动态代理来实现这整个服务的调用过程的,如果调用方,在调用这个定义了@FeignClient注解的接口时,本质上是会调用Feign生成的代理类。 Feign生成的动态代理类,会根据具体接口方法中的**@RequestMapping**等注解,来动态构造出需要请求的服务地址.

4.服务容错保护 Spring Cloud Hystrix

概念

微服务架构中,我们将系统拆分成多个服务单元,各个服务之间通过服务注册与订阅的方式互相依赖,一旦其中一个有异常,很容易会造成服务雪崩。针对这种情况,Hystrix会提供服务的熔断,隔离,降级

原理

Hystrix其实是会为每一个服务开辟一个线程池,然后每个线程池中的线程用于对服务的调用请求。这样就算是积分服务挂了,那也只是调用积分服务的线程池出现问题了,而其他服务的线程池还正常工作。这就是服务的隔离

这样订单服务在的调用积分服务的时候,如果发现有问题了,积分服务可以通过Hystrix返回一个默认值(默认是5秒内20次调用失败就熔断)。这样订单服务就不用在这里卡住了,可以继续往下调用其他服务进行业务操作了。这就是服务的熔断

虽然说是积分服务挂了,并且也返回了默认值了,但是后续如果积分服务恢复了,想恢复数据怎么办呢?这个时候积分服务可以将接收到的请求记录下来,或者是打到日志中,能为后面恢复数据提供依据就行。这就是服务的降级

5.API网关服务Spring Cloud Zuul

概念

权限校验机制,请求过滤,请求路由,限流等等

概述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值