1.nacos简介
Nacos致力于提供动态服务发现、服务健康监测、动态配置服务以及服务管理的平台;
Nacos是一个为云原生应用设计的动态服务发现和配置服务平台,它提供了一系列关键功能来支持服务化架构,主要包括:
服务发现和注册:
Nacos 允许服务实例在启动时向注册中心注册自己,并在关闭时取消注册。服务消费者可以通过Nacos查询可用服务列表,并进行负载均衡。动态配置管理:
为应用提供集中化的配置管理服务,可以动态地更改配置信息,无需重启服务即可实时更新到各个服务实例。服务健康检查:
Nacos支持对服务实例的健康检查,确保通过服务发现获取到的都是健康可用的服务实例。持久化存储:
Nacos支持将服务和配置信息持久化到外部存储系统,比如MySQL数据库中,以确保数据的安全和稳定。服务监控和管理:
提供服务的实时监控,支持查询服务的状态、实例数量、服务详情等信息。支持多环境配置:
Nacos可以支持不同环境(开发、测试、生产等)的配置管理,帮助实现环境间的配置隔离。支持灰度发布:
可以管理不同版本的服务和配置,方便进行灰度测试,逐步推出新功能。负载均衡和流量管理:
Nacos提供丰富的负载均衡策略,并且可以与服务网格技术(如Istio)配合使用,实现更细粒度的流量控制和路由。支持多种配置格式:
Nacos支持properties、YAML、JSON等多种配置格式。易于集成和扩展:
Nacos提供简单的REST API,易于与各种微服务框架(如Spring Cloud、Dubbo等)集成。同时,Nacos的架构设计也易于扩展,可以适应不同规模的应用场景。
2.服务注册
启动服务实例:
当一个服务实例启动时,它会通过Nacos客户端(通常集成在服务应用中)将自己的信息,如服务名称、IP地址、端口号、版本号以及其他元数据发送到Nacos服务器。
发送心跳:
一旦服务实例注册到Nacos,它会定期(如每30秒)向Nacos服务器发送心跳,以证明自己仍然是健康和可用的。如果Nacos服务器在特定时间(如90秒)内没有收到某个服务实例的心跳,它会认为该实例已经不可用,并将其从服务列表中移除
3.服务发现
请求服务列表:
当客户端(服务消费者)需要访问某个服务时,它会向Nacos服务器查询该服务的健康实例列表。
获取服务实例:
Nacos服务器会返回所有健康的服务实例信息给客户端。然后客户端通常会缓存这些信息,并可能通过一定的负载均衡算法(如轮询、随机等)选择一个服务实例进行调用。
监听变更:
客户端还可以注册监听器到Nacos服务器,监听服务实例列表的变更。当有新的服务实例注册或已有的服务实例被移除时,Nacos服务器会推送变更到客户端,客户端更新本地缓存的服务列表
4.Nacos如何实现高可用?
Nacos实现高可用性主要是通过集群部署和数据持久化来完成的。以下是实现Nacos高可用性的关键策略:
多节点部署:
在生产环境中,Nacos 应该部署为一个节点集群。在集群模式下,Nacos 节点之间会相互协调,确保服务和配置数据的一致性。选举机制:
Nacos 使用内建的选举机制以决定哪一个节点作为领导者(leader),领导者负责处理写请求,其它节点(follower)则处理读请求。当领导者节点出现故障时,剩余的节点会进行新一轮的选举产生新的领导者。数据同步:
在集群模式下,当一条数据被修改,这个变更会同步到所有节点,确保每个节点都拥有最新的数据状态。
5.nacos AP还是CP?
Nacos是默认采用AP模型,即Nacos可以容忍节点故障,保证服务的可用性。
但是可以通过配置来切换为CP模型,即Nacos可以容忍集群故障,保证数据的一致性。
服务端配置
1 | # 指定为 CP 模式 |
客户端配置
1 | # 注册服务时选择 AP 或 CP 模式 |