nacos
8848/nacos 查看服务列表
- 注册中心 :实现服务的管理
- 注册服务 :
- 微服务在启动时,将自己的网络地址等信息注册到服务发现组件(nacos server)中,服务发现组件会存储这些信息。
- 各个微服务与服务发现组件使用心跳机制通信。服务发现组件若发现与某微服务实例通信正常则保持注册状态(up在线状态)、若长时间无法与某微服务实例通信,就会自动注销(即:删除)该实例。
- 服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口。
- 当微服务网络地址发生变更(例如实例增减或者IP端口发生变化等)时,会重新注册到服务发现组件。
- 心跳机制 :每 5 秒一个心跳请求被发送到 Nacos 的 /nacos/v1/ns/instance/beat 接口,该请求会被 Nacos 服务器内置的 naming 模块处理。
- naming 模块收到心跳包,首先根据 IP 与端口判断 Nacos 是否存在该服务实例?如果实例信息不存在,在 Nacos 中注册登记该实例,然后记录记录本次心跳包发送时间。(而注册的本质是将新实例对象存储在“实例 Map”集合中)
- 如果实例信息已存在,直接记录本次心跳包发送时间
- 设置实例状态为“健康”
- 推送“微服务状态变更”消息
- naming 模块返回心跳包时间间隔
- Nacos Server 内置的逻辑是每过 15 秒对 “实例 Map” 进行扫描,如果 15 秒内没有收到心跳请求,就会将该实例标记为 “非健康” 实例,当发现已被标记为 “非健康” 实例时会将该实例删除。
- 注册服务 :
main: allow-bean-definition-overriding: true
实现负载均衡
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
实现流量控制
实现熔断降级
Route(路由)
这是Spring Cloud Gateway的基本构建块,可简单理解成一条转发规则。包含:ID、目标URL、一组断言和一组过滤器,可以根据规则进行匹配
- Predicate(断言)
这是一个 Java 8 的 Predicate,即java.util.function.Predicate这个接口,Gateway使用Predicate实现路由的匹配条件
- Filter(过滤器)
这是 org.springframework.cloud.gateway.filter.GatewayFilter 的实例,我们可以使用它修改请求和响应
路由规则
- path :根据请求路径匹配
- host
- queryParam
- cookie
- method
- datetime :根据时间区间转发请求
- remoteAddr
- header