SpringCloud的详细介绍及实现原理
什么是SpringCloud?
SpirngCloud是⼀系列框架的有序集合,利⽤springboot开发便利性巧妙地简化了分布式系统的开发,对微服务框架⼜封装了多个开源组件,如:
Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从⽽知道其他服务在哪⾥
总结⼀下:
Eureka Client:负责将这个服务的信息注册到Eureka Server中
Eureka Server:注册中⼼,⾥⾯有⼀个注册表,保存了各个服务所在的机器和端⼝号
Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从⼀个服务的多台机器中选择⼀台,默认使⽤(轮询)
Feign:基于Feign的动态代理机制,根据@FeignClient注解和选择的机器,拼接请求URL地址,发起请求
Feign整合了Ribbon,具有负载均衡的能⼒
Feign整合了Hystrix,具有熔断的能⼒
Hystrix:发起请求是通过Hystrix的线程池来⾛的,不同的服务⾛不同的线程池,实现了不同服务调⽤的隔离、熔断和降级,避免了服务雪崩的问题
熔断:在规定时间让该服务直接返回
降级:每次调⽤该服务,你就在数据库⾥添加⼀条消息,因为该服务挂了,导致没添加成功!等该服务恢复了,可以根据这些信息⼿动加⼀下上去
Zuul:如果前端、移动端要调⽤后端系统,统⼀从Zuul⽹关进⼊,由Zuul⽹关转发请求给对应的服务
Eureka⾃我保护机制是什么?
⾃我保护机制是为了防⽌误杀服务⽽提供的⼀个机制,当Eureka Server 节点在短时间内丢失了过多实例的连接时(⽐如⽹络故障或频繁启动关闭客户端)节点会进⼊⾃我保护模式,保护注册信息,不再删除注册数据,故障恢复时,⾃动退出⾃我保护模式。
Spring Cloud 的优点:
基于 Spring Boot,具有简单配置、快速开发、轻松部署、⽅便测试的特点。
⽀持 REST 服务调⽤,相⽐于 RPC,更加轻量化和灵活,跨语⾔服务的实现,服务的发布部署
结合 Swagger,也使得服务的⽂档⼀体化
Spring Cloud 提供整套的微服务解决⽅案,开发成本较低,且风险较⼩
Spring Cloud 的缺点:
REST 服务调⽤性能会⽐ RPC 低⼀些(但也不是强绑定)
Spring Cloud 整合了⼤量组件,相关⽂档⽐较复杂,需要针对性的进⾏阅读。
流程图:
总结:
⾸先通过Eureka保存和调⽤各个服务,
通过Feign进⾏动态代理,针对需要的地址,发起请求、解析响应
使⽤Rebbon进⾏负载均衡,会帮你在每次请求时选择⼀台机器,均匀的把请求分发到各个机器上,默认使⽤(轮询)使⽤Hystrix隔离、熔断和降级,防⽌服务雪崩的问题
通过Zuul可以进⾏统⼀的降级、限流、认证授权、安全
springcloud难学吗
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论