博客
关于我
Nacos原理
阅读量:789 次
发布时间:2023-02-13

本文共 1699 字,大约阅读时间需要 5 分钟。

基本概念

Nacos(Dynamic Naming and Configuration Service)是一款用于构建云原生应用的动态服务发现、配置管理和服务管理平台。它集成了服务注册和配置管理于一体,能够帮助开发者更高效地管理和发现服务。

特点

  • 易用性:提供简单的数据模型、标准的RESTful API、易用的控制台以及丰富的使用文档。
  • 稳定性:99.9%的高可用性,确保服务稳定运行。
  • 实时性:数据变更能够在毫秒级别推送给客户端。
  • 扩展性:支持十万级服务和配置,百万级连接,具备强大的扩展能力。

核心功能点

服务注册

Nacos客户端通过发送REST请求向Nacos服务器注册服务,提供自身的元数据,如IP地址、端口等信息。Nacos服务器将这些元数据存储在一个双层内存Map中。

服务心跳

注册完成后,Nacos客户端会维护一个定时心跳,定期向Nacos服务器发送心跳信号,表明服务仍然可用,防止服务被剔除。默认心跳周期为5秒。

服务健康检查

  • 健康实例筛选:Nacos服务器阻止向不健康的主机或服务实例发送请求。
  • 定时健康检查:Nacos服务器会定期检查注册服务实例的健康状况。
    • 若实例未收到客户端心跳超时15秒,将其健康属性置为false
    • 若实例未收到心跳超时30秒,将其从注册表中剔除。
    • 剔除的实例若恢复心跳,仍需重新注册。

服务发现

  • 服务消费者:通过向Nacos服务器发送REST请求获取服务注册表,并将结果缓存到本地。
  • 定时更新:在本地启动定时任务,定期拉取最新的服务注册表更新缓存。
  • 发现机制:支持基于DNS和RPC的服务发现,提供两种实现方式:
    • 服务提供者:支持原生SDK、OpenAPI以及独立的Agent。
    • 服务消费者:支持DNS和HTTP/API方式。

服务同步

Nacos服务器集群之间通过互相同步服务实例,确保服务信息的一致性。

服务配置

  • 中心化管理:外部化、动态化管理应用配置和服务配置。
  • 动态配置:消除配置变更需要重新部署的痛点,支持在线编辑、历史版本、回滚和灰度发布等功能。

对比

Eureka对比

  • 闭源与开源:Eureka 2.0为闭源版本。
  • 实例数量:Nacos支持的注册实例数量远超Eureka。
  • 一致性:Nacos采用Raft协议,集群一致性远超Eureka。
  • 阈值机制:Nacos的阈值针对特定服务,Eureka的自我保护阈值针对所有服务。
  • 协议与连接方式:Nacos使用Netty长连接,Eureka采用短连接定时发送心跳。
  • 保护机制
    • Eureka采用自我保护机制,在统计续约失败比例达到阈值时,暂停剔除实例。
    • Nacos在健康实例占总实例比例低于阈值时,仍返回健康实例给客户端,确保集群稳定运行。

Spring Cloud Config对比

  • 动态更新:Nacos通过长连接实时推送配置更新,速度更快。
  • 可视化界面:Nacos提供在线管理界面,Eureka仅提供服务状态预览。
  • 工作流程:Nacos支持一键回滚、历史版本等功能,简化配置管理流程。

核心功能点对比表

模块 Nacos Eureka 说明
注册中心 提供服务注册功能,实现服务中心化。
配置中心 Nacos提供完整的配置管理界面,Eureka需配合其他工具。
动态刷新 Nacos通过长连接实时更新配置,Eureka需依赖消息总线。
可用区AZ 支持服务划分区域,实现容灾自动切换。
分组 Nacos支持基于业务和环境的分组管理。
元数据 提供服务标签数据,例如环境和服务标识。
权重 Nacos默认支持权重设置,调整服务负载。
健康检查 Nacos支持服务端和客户端健康检查,Eureka由客户端发起心跳。
负载均衡 提供均衡策略,Eureka采用Ribbon。
管理界面 提供在线服务管理界面,Eureka功能有限。

总结

Nacos作为一款功能强大的服务治理平台,在服务注册、配置管理、服务发现等方面具有显著优势。其支持的高一致性、动态配置以及实时更新配置功能,使其在云原生应用构建中具有重要地位。

转载地址:http://ygdfk.baihongyu.com/

你可能感兴趣的文章