Springcloud_02

使用Springboot创建项目,所有服务注入到注册中心,相互调用使用feign,这样就能搭建一个简单的微服务架构


Feign(用来完成微服务之间的远程调用):在客户端完成工作

步骤:
超时设置:根据业务时间设置,默认为1s超时
在rml配置文件中设置ribbon超时时间: ribbon: ConnerctTimeout: 1000(连接超时时间) ReadTimeout: 1000(逻辑处理超时时间,默认1s)
日志记录配置(对数据包的监控,只能看debug级别,需要设置):
logging


Hystrix熔断器:防止级联失败(高并发情况下发生雪崩,一个项目失效,全部不可用)
主要功能:隔离,降级,熔断,限流
隔离:1.线程池隔离(一个线程池拆分为几个线程池,相互独立,一个挂了后不影响其他的)(服务器性能高的话选择这个)
2.信号量隔离(相当于加阀门,限制访问次数,到达访问次数后禁止访问)(服务器性能低的话选择这个)

降级(异常,超时会触发):提供友好提示,一旦访问失败后,返回一个友好提示,提供方和消费方都要写
服务端降级:1.引入hystrix环境 2.定义降级方法(方法的返回值需要和原方法一样,参数也需要一样) 3.使用注解配置降级方法 4.在启动类上开启hystrix功能:@EnableCircuitBreaker
消费端降级:feign已经集成了hystrix组件

熔断:将一个模块服务全部拒绝掉,模块恢复后会自动连接
监控微服务的调用情况,失败情况达到预定阀值,会触发熔断(断路器三种状态:关闭(默认关闭,成功情况达到预定阀值,就会关闭),
打开(失败情况达到预定阀值,就会打开熔断器),半开(放入一部分请求,如果成功阀值达到预定阀值,则关闭短路器))

限流:就是限流,限制访问数量,信号量隔离就属于限流
============================================================================================================
网关:提供一个简单有效的统一的API路由管理,客户端访问后台的统一入口,在用户和服务端之间,请求先通过网关再发送给服务端,可以在网关中判断权限,路由给服务端等.

Gateway网关:
快速入门:1.搭建网关模块 2.导入依赖坐标 3.编写启动类 4.编写yml配置文件(端口80 ,gateway(网关配置): routes(路由配置,转发规则)(里面是一个集合) )
没加端口号的相当于走网关访问,一个服务配一个路由
# 网关
gateway:
# 配置路由的转发规则
routes: #里面写的集合
#id:唯一标识.默认是一个UUID
#URI: 转发路径
#predicates:条件,用于请求网关路径的匹配规则
- id: gateway-provider
uri: http://localhost:8001/
# 请求过来后和/goods/**进行匹配,匹配成功后和URI进行拼接,找到对应地方的某个服务
predicates:
- Path=/goods/** # 满足这个条件才会拼接
静态路由:URI写死的(实际开发中不常用)
动态路由(和Eurika配合使用):网关成为注册服务中心的客户端,然后网关从注册中心拉取数据
引入Eurika-client坐标,yml中加入Eurika配置 uri: lb://加上Eurika中注册的名称(对应的服务名称)
可以设置微服务名称配置,访问的时候在端口后面加上微服务访问名

过滤器:拦截请求,决定是否放行
前置过滤器pre
后置过滤器post
全局过滤器:不需要在配置文件中配置,系统初始化时加载,作用在每个路由上

局部过滤器(GatewayFilter):yml中路由下面配置filter,可配置全局的(了解)

 

Config:解决了多环境配置文件的管理和维护(统一配置,实时刷新)
抽取多环境的配置文件,配置一个Config Server连接外部配置文件来获取配置
想要实时刷新 1. 需要在config客户端引入actuator依赖
2. 还需要在获取配置信息类上,添加@RefreshScope注解
3.添加端点配置
4.使用curl发送post请求
框架级别的配置更新过后也可以刷新出来(mybatis可以刷出来), Redis刷不出来.
只能刷新配置类,不会刷新这些配置类的对象
框架级别的配置更新过后还是很大可能需要重新启动这个项目


bus消息总线 组件 : 用于广播配置文件的更改或者服务的监控管理

stream:使用后不容易控制中间件特性

posted @ 2021-05-24 15:18  Li_ll  Views(57)  Comments(0)    收藏  举报