Spring Cloud_Nacos

作者: Cathy 分类: 编程开发 发布时间: 2023-07-19 04:29

什么是 Nacos?

  • Nacos 是阿里巴巴开源的,用于云原生应用的动态服务发现、配置和服务管理平台
  • 主要解决动态服务发现、负载均衡、故障恢复、动态配置等问题

Nacos 优势

  • 简单易用:简单的数据模型,标准的 RestFul API,控制台简单,文档全面
  • 稳定:支持百万级服务场景,经过阿里双十一的验证
  • 实时:数据变更毫秒级推送生效
  • 规模:十万级服务配置,扩展性强

Nacos 架构

整体架构分为用户层、业务层、内核层和插件

  • 用户层:解决用户使用的易用性问题
  • 业务层:解决服务发现和配置管理的功能问题
  • 内核层:解决分布式系统一致性、存储、高可用等核心问题
  • 插件:解决扩展性问题

Nacos 的主要功能有哪些?

  • Nacos 的主要功能包括服务注册、健康检查、负载均衡、故障恢复、动态配置等
  • 其中,服务注册和健康检查是 Nacos 最核心的功能

Nacos 的服务注册是如何实现的?

  • 服务启动:当一个微服务实例启动时,它会向 Nacos 的服务注册中心发送一个注册请求
  • 信息提交:注册请求通常包含服务的元数据,例如服务名称、端口号、健康检查 URL 等
  • 存储和索引:Nacos 服务注册中心会接收这些信息并存储在其数据存储层,同时,这些信息会被索引,以便于快速查询
  • 健康检查:一旦服务注册成功,Nacos 会定期执行健康检查以确认服务实例是否仍然可用
  • 服务列表更新:如果新服务注册或已注册服务下线,Nacos 会更新其服务列表,并通知相关的客户端或服务

Nacos 的健康检查是如何实现的?

  • 注册时的设置:当一个服务实例注册到 Nacos 时,通常可以配置健康检查的参数,比如检查间隔、超时时间等
  • 定期检查:Nacos 会根据预设的检查间隔定期对服务实例进行健康检查,这通常是通过发送 HTTP 请求或 TCP 握手来实现的
  • 状态更新:基于健康检查的结果,Nacos 会更新其内部的服务实例状态。如果一个实例被判定为不健康,Nacos 会从可用服务列表中移除它,直到该实例再次通过健康检查
  • 通知机制:如果一个服务实例的健康状态发生改变,Nacos 可以配置为通知其他关心这个状态的系统或者服务
  • 自动恢复:当一个被标记为不健康的服务实例恢复正常后,Nacos 会自动将其添加回到可用服务列表中

Nacos 的负载均衡是如何实现的?

  • 服务注册:当服务实例启动并注册到 Nacos 时,它们可以设置或更新自己的元数据,包括权重、服务能力等
  • 服务发现:客户端或其他服务通过 Nacos 进行服务发现,获取到一份可用服务实例的列表
  • 请求路由:根据预设或动态配置的负载均衡策略,Nacos 帮助路由请求到适当的服务实例
  • 健康检查和动态更新:Nacos 会持续进行健康检查并动态更新服务实例的状态。这确保了不会有请求被路由到不健康的或已下线的实例
  • Nacos 支持多种负载均衡算法,包括轮询、随机、加权等

Nacos 的故障恢复是如何实现的?

数据持久化

  • 备份和恢复:Nacos 支持对其数据(如服务注册信息、配置信息等)进行持久化存储。这样,在出现故障的情况下,可以从备份中恢复
  • 数据同步:在一个 Nacos 集群中,数据会在多个节点之间同步,以确保数据的一致性

集群和副本

  • 高可用集群:通过部署多个 Nacos 实例形成一个集群,即使其中一些节点出现故障,其他节点仍可继续提供服务
  • 负载均衡和路由:Nacos 集群内部也会进行负载均衡,以分散单个节点的压力

健康检查和自我修复

  • 自动摘除和恢复:Nacos 会自动识别不健康的服务实例,并将其从服务列表中摘除。一旦服务恢复健康,Nacos 会自动将其添加回来
  • 通知与报警:Nacos 可以配置为在出现故障时自动发送通知或报警,以便及时进行人工干预

客户端端的容错

  • 本地缓存:客户端通常会缓存一份服务列表。即使与 Nacos 的连接暂时中断,客户端也能通过缓存的数据继续运行
  • 重试机制:在进行服务调用时,客户端可以配置为自动重试,以增加成功率

灾备方案

  • 多区部署:在不同的地理位置或数据中心部署 Nacos 集群,以准备应对更大规模的故障
  • 流量切换:在紧急情况下,流量可以快速切换到备用集群或服务

Nacos 的动态配置是如何实现的?/ 配置动态更新

  • Nacos 通过监听配置数据变更的方式实现配置动态更新
    • 具体来说,当 Nacos 中的配置数据发生变化时,Nacos 会通过监听器机制将变化的信息通知给客户端
    • 客户端在接收到通知后会重新获取最新的配置数据,并更新本地的配置信息。
  • Nacos 的配置监听机制包括两个部分:客户端监听和服务端监听
    • 客户端监听是指客户端通过订阅 Nacos 的配置服务,当配置数据发生变化时,Nacos 会主动通知客户端,客户端在接收到通知后会重新获取最新的配置数据
    • 服务端监听是指 Nacos 在配置数据发生变化时,会通知所有订阅该配置的客户端,以便客户端能够及时更新配置信息
  • Nacos 中的配置监听机制是基于长连接实现的,客户端和服务端之间通过长连接来实现实时通信
    • 当客户端与 Nacos 建立长连接后,Nacos 会将客户端所订阅的配置信息发送给客户端,并保持连接状态
    • 当配置数据发生变化时,Nacos 会主动向客户端发送通知,客户端在接收到通知后会重新获取最新的配置数据,并更新本地的配置信息

总之,Nacos 通过监听配置数据变化的方式实现配置动态更新,利用长连接实现实时通信,保证配置信息的及时更新和同步。这种机制能够满足配置实时更新的需求,提高了系统的可靠性和可维护性。

Nacos 的服务发现方式有哪些?

  • DNS 和 HTTP API 是最常用的服务发现方式

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注