什么是 Nacos
官网中的概述:Nacos官网链接
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
简单来说Nacos就是一个开源的动态服务注册与发现、配置管理和服务管理平台。
Nacos的作用:
-
服务注册与发现:Nacos提供了服务注册中心的功能,能够帮助微服务架构中的各个服务实例进行注册与发现。通过Nacos,可以轻松地实现服务间的通信,无需手动维护服务地址列表。
-
配置管理:Nacos提供了统一的配置管理平台,可以集中管理所有微服务在不同环境下的配置信息。通过Nacos,可以实现动态更新配置,避免重启服务来生效配置修改,方便快捷。
-
服务健康检测:Nacos支持服务实例进行健康检查,能够主动感知服务是否可用。同时,Nacos可以实现通知已经注册的客户端。为开发者提供了便利,可以实时感知并做出相应的处理。
-
动态路由与负载均衡:Nacos可以作为动态路由的组件,通过实时更新服务实例的状态和配置信息,实现负载均衡和流量控制等功能。提高了服务的稳定性和性能。
-
事件驱动编程:Nacos基于事件驱动的机制,当服务实例发生变更时(如上线、下线、配置修改等),Nacos可以实时通知已经注册的客户端。为开发者提供了便利,可以实时感知并做出相应的处理。
Nacos的原理:
-
服务注册:当一个服务启动时,它会将自己的元数据 (如IP地址、端口、健康状态等) 发送给Nacos注册中心,并且与注册中心建立长连接。这样,注册中心就知道每个服务的存在和相关信息。
-
服务发现:其他需要调用某个服务的服务或者客户端可以通过向Nacos注册中心发送查询请求来获取目标服务的实力列表。注册中心维护了所有以注册服务实例的元数据,并在需要时对外提供查询接口。
-
心跳与健康检查:注册中心会定期向各个服务实例发送心跳请求,用以检测服务是否在线。如果某个服务实例在一定时间内没有发送心跳,注册中心会将其标记为不可用,并且从服务列表中移除。
-
负载均衡:当服务调用方从注册中心获取到多个可用的服务实例是,它可以使用负载均衡算来选择合适的服务实例进行调用,从而实现负载均衡。
-
服务变更通知:当有服务上线、下线或者发生配置变更时,注册中心会向订阅该服务的客户端发送变更通知。客户端收到通知后,可以更新本地服务列表,从而及时感知服务的变化。
流程图:
流程如下:
-
服务启动时就会注册自己的服务信息(服务名、IP、端口)到注册中心
-
调用者可以从注册中心订阅想要的服务,获取服务对应的实例列表(1个服务可能多实例部署)
-
调用者自己对实例列表负载均衡,挑选一个实例
-
调用者向该实例发起远程调用
当服务提供者的实例宕机或者启动新实例时,调用者如何得知呢?
-
服务提供者会定期向注册中心发送请求,报告自己的健康状态(心跳请求)
-
当注册中心长时间收不到提供者的心跳时,会认为该实例宕机,将其从服务的实例列表中剔除
-
当服务有新实例启动时,会发送注册服务请求,其信息会被记录在注册中心的服务实例列表
-
当注册中心服务列表变更时,会主动通知微服务,更新本地服务列表