SpringCloud组件总结

一、Spring Config

1、通过BootstrapListener加载BootstrapConfiguration配置文件

2、DiscoveryClientConfigServiceBootstrapConfiguration生成后,通过Bean的@EventListener重写url地址

3、通过ConfigServiceBootstrapConfiguration加载ConfigServicePropertySourceLocator类,之后通过SpringBoot初始化方法执行ConfigServicePropertySourceLocator类locate方法,通过restTemplate从Spring cloud Config服务获取配置信息。

 

二、Spring Ribbon

1、通过RibbonAutoConfiguration注入负载客户端RibbonLoadBalancerClient、规则类ZoneAvoidanceRule、负载执行类ZoneAwareLoadBalancer。

2、通过LoadBalancerAutoConfiguration注入拦截器LoadBalancerInterceptor,在使用restTemplate时选择负载服务器。

3、Ribbon基于LoadBalancerInterceptor方式,在request请求时进行选择。

 

三、Spring Feign

1、通过启动类@EnableFeignClients将所有路径中包含@FeignClient的类注入,注入的BeanClass类型为FeignClientFactoryBean。

2、在其他类调用Feign接口时,通过FeignClientFactoryBean.getObject方法返回生成的对象。对象中通过创建代理类最后执行SynchronousMethodHandler.invoke方法。该方法最后通过Ribbon底层选取负载服务器。Feign基于Spring Bean对象注入,在Controller中注入Bean时会通过FeignClientFactoryBean来获取Bean对象,并通过动态代理方式进入invoke方法最后找到ZoneAwareLoadBalancer来进行调用。

3、Feign底层最后调用规则还是借助Ribbon的ZoneAwareLoadBalancer来选择具体服务。

 

四、Spring Zuul

1、Zuul的核心是一系列的filters

2、通过ZuulProxyAutoConfiguration装载DiscoveryClientRouteLocator类主要作用是发现路由配置等,并组装成Map<String, ZuulRoute>形式。PreDecorationFilter类主要是执行preFilter。filter类型是pre。RibbonRoutingFilter类执行routeFilter中。filter类型是route。

3、通过ZuulServerAutoConfiguration装载ZuulController是负责请求过来处理请求的Controller。装载ZuulHandlerMapping主要是处理DispatcherServlet请求访问过来的时候,需要AbstractHandlerMapping处理getHandlerInternal方法寻找handler时用的,找到ZuulController。

4、ZuulControllor在处理请求后,最终会调用ZuulServlet的service方法。处理preRoute方法找到对应的路由。

 

五、Spring Sleuth ZipKin

1、通过TraceFillter创建Span,创建完毕后通过finally方法判断是否需要发送zipKinServer。

2、通过创建Sampler类设置抽样类型,有四种Bean,AlwaysSampler、IsTracingSampler、NeverSampler、PercentageBasedSampler(默认)。

3、通过TraceRestTemplateInterceptor,将需要继续调用其他微服务的Span信息加入到requestHeader中。

4、通过AsyncReporter进行异步发送,每秒扫描一次是否有信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Alibaba是一个基于Spring Cloud的开源项目,它提供了一系列的组件和解决方案,用于开发基于阿里云的微服务应用。Spring Cloud Alibaba包含了一些核心组件,如Nacos、Sentinel、Seata等,以及一些附加组件,如Dubbo、RocketMQ等。 Spring Cloud是一套用于快速构建分布式系统的开发工具集合,它基于Spring框架,提供了一系列的组件和解决方案,如服务注册与发现、负载均衡、熔断器、配置管理等。Spring Cloud充分利用了Spring框架的优势,简化了微服务架构的开发和部署流程。 Spring Cloud Alibaba与Spring Cloud有一些共同的特性和目标,比如都提供了服务注册与发现、负载均衡、熔断器等功能。但是Spring Cloud Alibaba在某些方面有一些不同的设计和实现方式。 首先,Spring Cloud Alibaba使用Nacos作为默认的服务注册与发现组件,而Spring Cloud使用Eureka或Consul。Nacos提供了更强大的功能,如命名空间、配置中心、服务网关等。其次,Spring Cloud Alibaba引入了Sentinel作为默认的熔断器和限流保护组件,而Spring Cloud使用Hystrix。Sentinel功能更加强大、灵活,支持实时的熔断、降级和限流策略的动态调整。 另外,Spring Cloud Alibaba还整合了一些阿里云的组件,如RocketMQ、Dubbo等。RocketMQ是一个高可用的分布式消息队列,Dubbo是一个高性能的RPC框架,它们可以与其他Spring Cloud组件无缝集成,提供更全面的解决方案。 总结来说,Spring Cloud Alibaba是Spring Cloud的一种补充和扩展,它提供了更多功能强大、适用于基于阿里云的微服务应用的组件和解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值