springcloud最近常用组件整理

注册中心Eureka
主要解决微服务之间调用时路径写死的问题,
小结:
1.服务的注册和发现,服务的心跳检测
2.可以通过DiscoverClient根据服务的名称动态获取IP地址和端口号
高可用:
互联网环境下为了保证某个服务应用一定可以提供服务,对同一个服务应用,采取冗余备份的方式搭建多台,形成一个集群
高可用解决单点问题,高并发问题
负载均衡Ribben
概念:当多个节点可选时,从多个节点选取一台服务器的策略
为什么要做负载均衡?
避免单点风险,提高并发量
Ribbon内置了多种负载均衡策略:

  • com.netflix.loadbalancer.RoundRobinRule:以轮询的方式进行负载均衡。 默认的负载均衡算法

  • com.netflix.loadbalancer.RandomRule:随机策略

  • com.netflix.loadbalancer.RetryRule:重试策略。

  • com.netflix.loadbalancer.WeightedResponseTimeRule:权重策略。会计算每个服务的权重,越高的被调用的可能性越大。

    • com.netflix.loadbalancer.BestAvailableRule:最佳策略。遍历所有的服务实例,过滤掉故障实例,并返回请求数最小的实例返回。
  • com.netflix.loadbalancer.AvailabilityFilteringRule:可用过滤策略。过滤掉故障和请求数超过阈值的服务实例,再从剩下的实力中轮询调用。
    小结:
    ribbon: 负责提供负载均衡算法 负责计算,轮训、随机和权重等等
    discoveryClient: 负责从eureka注册中心中获取服务名称响应的ip和端口列表127.0.0.1:8081,127.0.0.1:8082
    restTemplate: 负责http请求的发送 url
    ribbon通过discoveryClient获取的url列表来选择一个,交给restTemplate发送请求
    熔断降级Hystrix(豪猪)一种自我保护措施
    可以使用hystrix对响应超时或者出现问题的访问进行熔断降级
    雪崩效应:由于某个环节调用产生大量积压,造成的整个流程其他环节大范围出现访问积压的连锁反应
    为什么会产生雪崩效应?某写调用环节不能得到及时的响应,长期的积压
    怎么解决? 如果超过某个时间范围,不再继续调用,熔断,强制给出备选的响应方案,降级;
    触发熔断的情况有:
    服务提供者超时
    服务消费者的hystrix线程池满了,为了减少整体的响应时间,直接调用本地的降级方法
    服务消费者被保护的方法抛出了异常
    在消费者的启动类添加相关注解:@EnableCircuitBreaker
    在消费者的实现类添加注解@HystrixCommand(fallbackMethod=“xxxxx”)
    配置默认超时时间,默认是1秒,可以根据情况进行修改
    hystrix:
    command:
    default:
    execution:
    isolation:
    thread:
    timeoutInMilliseconds: 1000 #单位是毫秒

    hystrix的三种状态:
    打开
    关闭
    半开(完全断开之后,默认5秒开启半开状态,可以尝试访问user-server1次,如果访问没问题,那么保险丝变关闭,就是完好,可以继续正常访问user-server,如果访问有问题,那么继续完全打开)
    保险丝完好》》20次访问超时 完全断开》》5秒 中之内不会再去访问user服务》》有一次尝试》》成功了》》变为第一步
    保险丝完好》》20次访问超时 完全断开》》5秒 中之内不会再去访问user服务》》有一次尝试》》失败
    了》》变为第二步
    Feign微服务之间的远程调用
    使用feign解决远程调用地址拼写容易写错的问题
    gateway网关
    整体性能优于zuul所以用gateway
    网关的核心功能:鉴权 路由

  • 网关旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。

  • 在微服务架构中,不同的微服务可以有不同的网络地址,各个微服务之间通过互相调用完成用户请求,客户端可能通过调用N个微服务的接口完成一个用户请求。
    gateway的两种路由:
    静态路由 yml配置文件写死的uri就是静态路由
    动态路由 将uri改成 lb://服务名称
    启动类添加@EnableDiscoveryClient

  • Gateway 支持过滤器功能,对请求或响应进行拦截,完成一些通用操作。

  • Gateway 提供两种过滤器方式:“pre”和“post”
    pre 过滤器,在转发之前执行,可以做参数校验、权限校验、流量监控、日志输出、协议转换等。
    post 过滤器,在后端微服务响应之后并且给前端响应之前执行,可以做响应内容、响应头的修改,日志的输出,流量监控等。

  • Gateway 还提供了两种类型过滤器
    GatewayFilter:局部过滤器,针对单个路由
    GlobalFilter :全局过滤器,针对所有路由

Nacos
•Nacos(Dynamic Naming and Configuration Service) 是阿里巴巴2018年7月开源的项目。

•它专注于服务发现和配置管理领域 致力于帮助您发现、配置和管理微服务。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理。
•一句话概括就是Nacos = Spring Cloud注册中心 + Spring Cloud配置中心。

SpringCloud的总结

1、Eureka 注册中心 ZooKeeper、consul、Nacos

2、Robbin 负载均衡

3、Hystrix 熔断器

4、Feign 远程调用

5、gateway网关(路由、鉴权)

6、 Nacos 注册配置中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值