Nacos—简述、注册中心、配置中心

简介: 官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。

什么是Nacos?


官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。


简述:集 注册中心+配置中心+服务管理 平台


参考:Nacos 注册中心的设计原理 · 语雀


什么是注册中心?


把所有的服务都统一的放在 一个中心,后续调用的时候只需要用一个服务名调用远程的服务,而不是用ip地址去调用


在一个微服务项目中,不同的服务之间做着不同的事情,服务和服务之间会涉及到调用,那如何去管理,这里可以用到注册中心,当服务启动(Service)启动时,将自己的一个实例,注册到注册中心上,注册中心可以做服务发现,服务检测、心跳机制


什么是配置中心?


帮助管理每一个服务的配置


  • 原来:每一个服务都有自己的数据库/redis/MQ等配置,就会有很多公共配置
  • 现在:把公共配置放在中,让中心去管理,而不用每个服务单独去管理


正常一个微服务项目都会有自己的一个配置文件,在这里可以配置服务的端口号、数据库地址等。当程序启动时会加载读取配置文件中的信息。当有多个服务时,我们可以将配置文件放到远端,将项目中每个服务的配置放到一起,统一管理,动态配置。


什么是服务管理平台?


可视化界面动态管理


9809b180c7fc4dfe88206c512076a6c7.png


Nacos的关键特性包括(有点)有哪些?


  • 服务发现和服务健康监测(注册中心的配置 服务管理平台可以实时健康检测)
  • 动态配置服务(动态给每个服务进行配置)
  • 动态 DNS 服务
  • 服务及其元数据管理 (元数据:注册服务时的ip、远程地址等都会进行管理)


作用(为什么要使用)?


管理所有微服务、解决微服务之间调用管理错综复杂、难以维护的问题


注册中心演变过程


e39f3b10585c445b8a27f7a6fa82dfc7.png


①、分布式架构


af5548ee3e14401e988c5a92896c0f2d.png


问题:远程服务调用必须维护远程服务的ip地址和端口,当远程的服务器一旦发生扩容或是迁移,这个时候就需要去修改url中配置的远程服务地址。一改代码就需要重新部署上线


服务器迁移或扩容,就需要手动修改配置,重新发布上线


解决方案:数据库存储远程服务信息。添加数据库注册表


②、数据库注册表


将远程服务地址存储在数据库注册表中,每一个远程服务地址都设置一个对应的服务名称。比方说:


会员服务想要调用订单服务,通过订单服务的名称order-server我们就可以查到远程服务地址


使用注册表的好处:让远程调用变得简单


存在的问题:

  • 高并发不可能每一次都去查数据库。利用缓存
  • 减少服务器的压力,实现负载均衡困难


补充:


负载均衡的优点:减少服务器的压力,将原本一台服务器所要承受的访问量分给多台,并提高项目的可用性,当一台服务器挂掉的时候不会导致项目瘫痪。


③、引入nginx


引入nginx,把所有的服务列表都配置在nginx中


6129199edc49ae0d70a0f415bedb4d11.png


存在的问题:

一旦某个服务挂掉,肯定不希望nginx下次负载均衡的时候不要放到它,但是nginx不能实时的监控以及健康检查


解决方案:

一方面:可以使用第三方服务,可以解决,但是非常麻烦


另一方面:微服务中如果有成百上千个服务都需要配置在nginx,这对于运维来说是非常麻烦的,而且人工具有出错性


所以我们可以使用注册中心(nacos服务器)来帮助解决


④、提供注册中心(其实就是nacos服务器)


ab1f1753d6c5940d7748963071852efb.png


注册中心其中有一个注册表,用来存储服务的信息(名称、远程ip、端口、状态)


还提供了一系列对外访问的rest、http等接口对外的访问,通过这些接口我们就可以动态的注册接口,以及获取到这些服务,动态的注册服务


过程:注册——>发现——>调用——>解析地址


在服务启动的时候就会调用注册接口,在注册表中添加一条这个服务的注册信息


服务之间调用前,每次服务都会注册中获取订单服务列表,调用服务获取接口(这些接口都是基于http、rest),获取到了远程服务的地址


整个过程都不需要人干,阿里巴巴提供了服务注册与发现


问题:


1.每次都去注册中心拉取订单服务列表吗?注册中心宕机了怎么办?

2.如果拉去的订单服务对应的机器宕机了怎么办?


解决方案:引入心跳机制


⑤、引入心跳机制


0db79b78eaa8f04d8aaf9885bc77d761.png


1.服务会在本地维护一个定时任务,每5s通过心跳接口发送一个心跳到注册中心,注册中心如果超过5s没有收到这个心跳,注册中心就会把这个服务视为挂掉了,把status改为down;超过30s,服务从注册表中剔除。始终维护最新的服务列表。任何一个微服务都可以称为nacos的服务端,任何一个nacos客户端都会往nacos注册中心发送一个心跳,证明我还活着


2.如果服务要停止掉,调用注销接口,把服务从注册表中删除


3.服务的Client也有一个定时任务,调用服务获取接口定时拉取订单服务列表,如果每次都拉占用系统资源,所以被缓存到客户端


Nacos的核心功能有哪些?


  • 服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。


  • 服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。


  • 服务同步:Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。 leader raft

服务发现:服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存


  • 服务健康检查:Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)
相关文章
|
3月前
|
存储 Kubernetes 安全
Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置
无论是使用 Nacos-Controller 实现配置的双向同步,还是直接在应用中接入 Nacos SDK 以获得更高级的配置管理特性,都能显著提升配置管理的灵活性、安全性和可维护性。使用 Nacos,您能够更好地管理和优化您的应用配置,从而提高系统的稳定性和可靠性。
386 49
|
6月前
|
负载均衡 Kubernetes 网络协议
注册中心如何选型?Eureka、Zookeeper、Nacos怎么选
这是小卷对分布式系统架构学习的第9篇文章,继续探讨注册中心的原理及选型。文章详细介绍了Eureka、Nacos的工作机制与特点,并对比了Eureka、Nacos、Consul和Zookeeper在一致性协议、健康检查、负载均衡等方面的差异。最后根据不同的应用场景给出了注册中心的选型建议,帮助读者理解如何选择最适合的注册中心。
543 100
|
7月前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
1431 82
高效搭建Nacos:实现微服务的服务注册与配置中心
|
3月前
|
存储 人工智能 测试技术
Nacos托管LangChain应用Prompts和配置,助力你的AI助手快速进化
AI 应用开发中,总有一些让人头疼的问题:敏感信息(比如 API-KEY)怎么安全存储?模型参数需要频繁调整怎么办?Prompt 模板改来改去,每次都得重启服务,太麻烦了!别急,今天我们就来聊聊如何用 Nacos 解决这些问题。
|
7月前
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
699 118
|
5月前
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
1351 14
|
8月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
142 5
|
8月前
|
监控 Java 测试技术
Nacos 配置中心变更利器:自定义标签灰度
本文是对 MSE Nacos 应用自定义标签灰度的功能介绍,欢迎大家升级版本进行试用。
955 183
|
8月前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
Nacos配置中心
423 1
Nacos配置中心
|
8月前
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
166 4