导图社区 SpringCloud
Java基于springcloud微服务概括
编辑于2020-03-10 05:10:22SpringCloud
Feign
远程调用
引入依赖包
编写接口(@FeignClient),在接口中编写远程调用的方法信息
启动类上添加启动Feign的注解(@EnableFeignClients)
会给接口生成代理对象,并且将代理对象交给SpringIOC容器管理
日志配置
1.在application.yml文件中开启SpringBoot日志
2.配置Feign的日志级别
压缩配置
熔断配置
1.开启熔断
2.编写Feign接口的实现类,在实现类中编写兜底方法
3.需要在Feign接口中指定熔断兜底方法的类的字节码
负载均衡
Gateway微服务网关
作用:为各个微服务调用提供了统一的API路由规则和过滤功能。
过滤器: 1.默认过滤器 全局默认过滤器、局部默认过滤器 2.自定义过滤器 自定义全局过滤器(掌握) 自定义局部过滤器
@Component public class LoginGlobalFilter implements GlobalFilter,Ordered { /*** * 全局拦截 * @param exchange * @param chain * @return */ @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { /*** * 拦截用户登录,用户登录了,才允许访问微服务,需要放行 * 用户没登录,不允许访问微服务,需要拦截 * 如果用户传入了token参数,则表示已登录 */ ServerHttpRequest request = exchange.getRequest(); //1.获取token参数 //getQueryParams():查询所有请求的参数 //getFirst("token"):根据名字获取指定的参数 String token = request.getQueryParams().getFirst("token"); //2.判断是否登录 if(StringUtils.isEmpty(token)){//为空,没登录,要拦截 401 / 403 exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); return exchange.getResponse().setComplete(); } //放行 return chain.filter(exchange); } /*** * 全局过滤器的执行顺序,越大越先执行 * @return */ @Override public int getOrder() { return 1; } }
SpringCloud Config
配置中心,集中管理所有微服务的配置信息(从远程仓库中拉取配置信息)
注意的要点
配置中心中需要指定git的仓库地址
# 注释版本 server: port: 18085 # 端口号 spring: application: name: config-server # 应用名 cloud: config: server: git: # 配置gitee的仓库地址 uri: https://gitee.com/skllll/config78.git #RabbitMQ配置 rabbitmq: host: localhost port: 5672 username: guest password: guest # 暴露触发消息总线的地址 management: endpoints: web: exposure: # 暴露触发消息总线的地址 include: bus-refresh # Eureka服务中心配置 eureka: client: service-url: # 注册Eureka Server集群 defaultZone: http://127.0.0.1:7001/eureka # com.itheima 包下的日志级别都为Debug logging: level: com: debug
需要下载更新配置文件的微服务
删除application.yml
新增bootstarp.yml
# 注释版本 spring: cloud: config: name: user-provider # 与远程仓库中的配置文件的application保持一致,{application}-{profile}.yml profile: dev # 远程仓库中的配置文件的profile保持一致 label: master # 远程仓库中的版本保持一致 discovery: enabled: true # 使用配置中心 service-id: config-server # 配置中心服务id # rabbitmq的配置信息;如下配置的rabbit都是默认值,其实可以完全不配置 rabbitmq: host: localhost port: 5672 username: guest password: guest #向Eureka服务中心集群注册服务 eureka: client: service-url: defaultZone: http://127.0.0.1:7001/eureka
SpringCloud Bus
作用:监听各个微服务的状态和实现微服务之间广播通信