欢迎来到 Nacos 的世界!
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:
Nacos 的关键特性包括:
一图看懂 Nacos,下面架构部分会详细介绍。
如下图 当服务调用方调用某个服务的时候,可以通过服务名字去服务注册发现中心获取可用的服务,服务发现中心会从内存的服务列表获取所有可用的服务,然后负载均衡根据既定的规则选择一个服务将 HTTP 服务 ip port 返回给调用方。
大多数在项目配置写在例如 application.propertie,然后将各类 参数配置、应用配置、环境配置、安全配置、业务配置 都写到这个文件里。当项目代码逻辑中需要使用配置的时候,就从这个配置文件中读取。这种做法虽然简单,但如果参数需要修改,就非常的不灵活,甚至需要重启运行中的项目才能生效。
2. 配置文件无法区分环境。
由于配置文件是放在项目中的,但是我们项目可能会有多个环境,例如:测试环境、预发布环境、生产环境。每一个环境所使用的配置参数理论上都是不同的,所以我们在配置文件中根据不同环境配置不同的参数,这些都是手动维护,在项目发布的时候,极其容易因开发人员的失误导致出错。
如果一个项目中存在多个逻辑模块独立部署,每个模块所使用的配置内容又不相同,传统的做法是会在每一个模块中都放一个配置文件,甚至不同模块的配置文件格式还不一样。那么长期的结果就是配置文件过于分散混乱,难以管理。
因为采用的静态配置文件方式,所以当配置进行修改之后,不容易形成记录,更无法追溯是谁修改的、修改时间是什么、修改前是什么内容。既然无法追溯,那么当配置出错时,更没办法回滚配置了。
传统配置的方式已经暴露出了很多问题,其他的诸如:历史版本管理,权限控制,安全性等等问题,是传统的配置文件无法解决的!
随着业务的发展、微服务架构的升级,服务的数量、程序的配置日益增多(各种微服务、各种服务器地址、各种参数),传统的配置文件方式和数据库的方式已无法满足开发人员对配置管理的要求:
因此,我们需要配置中心来统一管理配置!把业务开发者从复杂以及繁琐的配置中解脱出来,只需专注于业务代码本身,从而能够显著提升开发以及运维效率。同时将配置和发布包解藕也进一步提升发布的成功率,并为运维的细力度管控、应急处理等提供强有力的支持。
文档链接:Nacos 快速开始
git下载地址:pig: 基于Spring Boot 2.7、 Spring Cloud 2021 & Alibaba、 SAS OAuth2 的微服务RBAC 权限管理系统。 记得上边点个star 关注更新。微服务交流群见底部二维码。
使用模块:pig-register
数据库初始化脚本:pig_config.sql
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
server:
port: 9999
spring:
application:
name: @artifactId@
cloud:
nacos:
#服务发现地址:nacos server服务器地址
discovery:
server-addr: pig-register:8848
#配置中心地址:nacos server服务器地址
config:
server-addr: pig-register:8848
config:
#配置监听格式
import:
- optional:nacos:[email protected]@.yml
- optional:nacos:${spring.application.name}[email protected]@.yml
服务发现效果
参考文档:
什么是 Nacos
前言 · 语雀