SpringCloud主要知识点整理(持续更新~~~)

整理云笔记的时候发现自己之前整理过一些SpringCloud框架相关的知识,放出来留存一下。这些属于比较早期的SpringCloud相关使用,现在使用spring-cloud-alibaba,后面再开一篇使用记录。

首先先放概念:
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署(基于Spring Boot)。

一、服务注册中心(eureka-server):

@EnableEurekaServer
在这里插入图片描述

服务提供者(eureka-client):@EnableEurekaClient
在这里插入图片描述

二、服务消费者(rest+ribbon和feign):

springcloud调用服务有两种方式:
1.rest+ribbon
注入restTemplete调用,@LoadBalanced开启负载均衡
在这里插入图片描述

2.feign
启动类加@EnableFeignClients**
Feign的源码实现的过程如下:
1.首先通过@EnableFeignCleints注解开启FeignCleint
2.根据Feign的规则实现接口,并加@FeignCleint注解
3.程序启动后,会进行包扫描,扫描所有的@ FeignCleint的注解的类,并将这些信息注入到ioc容器中。
4.当接口的方法被调用,通过jdk的代理,来生成具体的RequesTemplate
5.RequesTemplate在生成Request
6.Request交给Client去处理,其中Client可以是HttpUrlConnection、HttpClient也可以是Okhttp
7.最后Client被封装到LoadBalanceClient类,这个类结合类Ribbon做到了负载均衡。

三、断路器(Hystrix)

1.ribbon中开启断路器(熔断)需在启动类上加@EnableHystrix,然后在方法上加@HystrixCommand(fallbackMethod = “hiError”),fallbackMehod
指定失败方法
在这里插入图片描述

2.feign开启断路器需在配置文件中设置feign.hystrix.enabled=true
feign层@FeignClient(value = “service-hi”,fallback = ScheduleServiceHiHystrix.class)
在这里插入图片描述

四、路由网关(Zuul):@EnableZuulProxy

常用场景:
黑白名单: 实现通过 IP 地址控制请求的访问
日志:实现访问日志的记录,进而实现日志分析,处理性能指标等
协议适配:实现通信协议的校验、适配转换的功能
身份认证:对请求进行身份认证
计流限流:可以设计限流规则,记录访问流量
路由:将请求进行内部(服务)转发
Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,
/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。
1.配置:
在这里插入图片描述
意为以/api-a/ 开头的请求都转发给service-ribbon服务;以/api-b/开头的请求都转发给service-feign服务;

2.过滤器:继承ZuulFilter类
①filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型
pre: 这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的
微服务、记录调试信息等。
routing:这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服务的请求,并使用
Apache HttpClient 或 Netfilx Ribbon 请求微服务。
post:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的 HTTP Header、收集
统计信息和指标、将响应从微服务发送给客户端等。
error:在其他阶段发生错误时执行该过滤器。
②filterOrder:过滤的顺序
③shouldFilter:这里可以写逻辑判断,是否要过滤,也可以直接写true,永远过滤
run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。

五、分布式配置中心(Spring Cloud Config):

1.config服务:@EnableConfigServer
在这里插入图片描述
2.config-client:0
访问配置中心的文件名是 spring.application.name 的值拼接 spring.cloud.config.profile 的值
例:如下访问的配置文件名为config-client-dev.properties
在这里插入图片描述
高可用的配置中心:
用服务名访问,通过负载均衡,从而高可用
在这里插入图片描述

六、消息总线(Spring Cloud Bus):

使用rabbitmq
在这里插入图片描述

七、服务链路追踪(Spring Cloud Sleuth):

整合zipkin:
在这里插入图片描述
在这里插入图片描述

Span:基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,
span通过一个64位ID唯一标识,trac以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳
事件、关键值注释(tags)、span的ID、以及进度ID(通常是IP地址)
span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它。
Trace:一系列spans组成的一个树状结构,例如,如果你正在跑一个分布式大数据工程,你可能需要
创建一个trace。
Annotation:用来及时记录一个事件的存在,一些核心annotations用来定义一个请求的开始和结束
cs - Client Sent -客户端发起一个请求,这个annotion描述了这个span的开始
sr - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到网
络延迟
ss - Server Sent -注解表明请求处理的完成(当请求返回客户端),如果ss减去sr时间戳便可得到服
务端需要的处理请求时间
cr - Client Received -表明span的结束,客户端成功接收到服务端的回复,如果cr减去cs时间戳便可得到客户端从服务端获取回复的所有所需时间

4.Spring security(Eureka配置用户名密码安全登录):

org.springframework.boot
spring-boot-starter-security

yml里配置:
security:
basic:
enabled: true
user:
name: admin
password: admin
eureka注册地址改为:http:// s e c u r i t y . u s e r . n a m e : {security.user.name}: security.user.name:{security.user.password}@ e u r e k a . i n s t a n c e . h o s t n a m e : {eureka.instance.hostname}: eureka.instance.hostname:{server.port}/eureka/

八、网关(gateway):

Spring Cloud Gateway根据作用范围划分为GatewayFilter和GlobalFilter,二者区别如下:
GatewayFilter : 需要通过spring.cloud.routes.filters 配置在具体路由下,只作用在当前路由上或通过spring.cloud.default-filters配置在全局,作用在所有路由上
GlobalFilter : 全局过滤器,不需要在配置文件中配置,作用在所有的路由上,最终通过GatewayFilterAdapter包装成GatewayFilterChain可识别的过滤器,它为请求业务以及路由的URI转换为真实业务服务的请求地址的核心过滤器,不需要配置,系统初始化时加载,并作用在每个路由上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值