nacos

8848/nacos 查看服务列表

  1. 注册中心 :实现服务的管理
    1. 注册服务 :
      1. 微服务在启动时,将自己的网络地址等信息注册到服务发现组件(nacos server)中,服务发现组件会存储这些信息。
      2. 各个微服务与服务发现组件使用心跳机制通信。服务发现组件若发现与某微服务实例通信正常则保持注册状态(up在线状态)、若长时间无法与某微服务实例通信,就会自动注销(即:删除)该实例。
      3. 服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口。
      4. 当微服务网络地址发生变更(例如实例增减或者IP端口发生变化等)时,会重新注册到服务发现组件。
    2. 心跳机制 :每 5 秒一个心跳请求被发送到 Nacos 的 /nacos/v1/ns/instance/beat 接口,该请求会被 Nacos 服务器内置的 naming 模块处理。
      1. naming 模块收到心跳包,首先根据 IP 与端口判断 Nacos 是否存在该服务实例?如果实例信息不存在,在 Nacos 中注册登记该实例,然后记录记录本次心跳包发送时间。(而注册的本质是将新实例对象存储在“实例 Map”集合中)
      2. 如果实例信息已存在,直接记录本次心跳包发送时间
      3. 设置实例状态为“健康”
      4. 推送“微服务状态变更”消息
      5. naming 模块返回心跳包时间间隔
    3. Nacos Server 内置的逻辑是每过 15 秒对 “实例 Map” 进行扫描,如果 15 秒内没有收到心跳请求,就会将该实例标记为 “非健康” 实例,当发现已被标记为 “非健康” 实例时会将该实例删除。

SpringCloudAlibaba组件 - 图1

  1. 配置中心 :实现配置的动态化管理

    OpenFeign

  2. 实现服务间的远程调用

    1. @EnabelFeignClients
    2. @FeignClient(value = “远程服务名”)

main: allow-bean-definition-overriding: true

  1. 实现负载均衡

    stu-provide: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #配置规则 随机 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #配置规则 轮询 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule #配置规则 重试 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule #配置规则 响应时间权重
    随机 :几个提供者间随机访问
    轮询 :轮流访问
    重试 :在一段时间内通过RoundRobinRule选择服务实例,一段时间内没有选择出服务则线程终止
    权重 :根据平均响应时间来计算权重

    Sentinel

  2. 实现流量控制

  3. 实现熔断降级

    1. 熔断 :是应对雪崩效应的一种微服务链路保护机制。当微服务处理请求达到熔断策略的阈值时,会熔断该服务。接下来的熔断时长内会拒绝所有请求,经过熔断时长后进入HALF_OPEN 状态,若接下来的一个请求通过则关闭熔断,如果失败(或请求时间达到阈值),就会继续熔断。
    2. 降级 :就是当某个服务熔断之后,服务将不再被调用,此时客户端可以自己准备一个备用逻辑,一般都是直接返回一个预先准备的值。

      Sleuth + zikper

      监控服务调用链路

      Gateway

      业务聚合,对外暴露统一接口
  4. Route(路由)

这是Spring Cloud Gateway的基本构建块,可简单理解成一条转发规则。包含:ID、目标URL、一组断言和一组过滤器,可以根据规则进行匹配

  1. Predicate(断言)

这是一个 Java 8 的 Predicate,即java.util.function.Predicate这个接口,Gateway使用Predicate实现路由的匹配条件

  1. Filter(过滤器)

这是 org.springframework.cloud.gateway.filter.GatewayFilter 的实例,我们可以使用它修改请求和响应

路由规则

  1. path :根据请求路径匹配
  2. host
  3. queryParam
  4. cookie
  5. method
  6. datetime :根据时间区间转发请求
  7. remoteAddr
  8. header