springcloud day2

一 微服务集群

为什么要集群?提高并发量

结构

在这里插入图片描述

服务消费者负载均衡调用

1.常见的负载均衡策略 轮休 可用性检查 权重

2.ribbon
在这里插入图片描述
3.feign
3.1入门类配置扫描client
在这里插入图片描述
3.2 client代码
在这里插入图片描述

二 hystrix

1.微服务架构处理服务健壮性的框架
2.解决微服务架构的雪崩线下
3. 隔离&熔断&降级

服务提供者实现 ribbon

导包 @EnableHystrix

在这里插入图片描述

feign

1.feign熔断机制是封装hystrix
在这里插入图片描述

三 zuul

1.是什么?为外部访问提供统一的入口,并且我们同可以通过过滤完成过渡,并且封装负载均衡ribbon,封装了熔断hystrix

实现

1.基本配置
在这里插入图片描述
2.路由配置 不用服务名访问,加上前缀

       server:
  port: 4399
spring:
  application:
    name: ZUUL-GATEWAY
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka #集群环境配置需要改一下
  instance:
    instance-id: gateway-9527.com
    prefer-ip-address: false

3.自定义拦截器实现登录

@Component
public class LoginFilter extends ZuulFilter{
    @Override
    public String filterType() {
        // 登录校验,肯定是在前置拦截
        return "pre";
    }

    @Override
    public int filterOrder() {
        // 顺序设置为1
        return 1;
    }

    @Override
    public boolean shouldFilter() {
        // 返回true,代表过滤器生效。
        return true;
    }

   
    @Override
    public Object run() throws ZuulException {
        // 登录校验逻辑。
        // 1)获取Zuul提供的请求上下文对象
        RequestContext ctx = RequestContext.getCurrentContext();
        // 2) 从上下文中获取request对象
        HttpServletRequest req = ctx.getRequest();
        // 3) 从请求中获取token
        String token = request.getHeader("token");

        // 4) 判断
        if(token == null || "".equals(token.trim())){
            // 没有token,登录校验失败,拦截
            ctx.setSendZuulResponse(false);
            // 返回401状态码。也可以考虑重定向到登录页。
            ctx.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
        }
        // 校验通过,可以考虑把用户信息放入上下文,继续向后执行
        return null;
    }
}

4.负载均衡和断路器:配置超时时间

zuul:
  retryable: true
ribbon:
  ConnectTimeout: 250 # 连接超时时间(ms)
  ReadTimeout: 2000 # 通信超时时间(ms)
  OkToRetryOnAllOperations: true # 是否对所有操作重试
  MaxAutoRetriesNextServer: 2 # 同一服务不同实例的重试次数
  MaxAutoRetries: 1 # 同一实例的重试次数
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMillisecond: 3000 # 

四 config server

1.准备github配置文件
在这里插入图片描述
2.configserver:通过它读取配置文件
3.configclient:真正读取配置文件的地方

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值