Nacos详解
- Nacos
- 1.介绍
- 2.Nacos专业术语
- 2.1 服务 (Service)
- 2.2 服务注册中心 (Service Registry)
- 2.3服务提供方 (Service Provider)
- 2.4服务消费方 (Service Consumer)
- 2.5版本依赖关系
- Nacos 注册中心
- 1. 启动NacosServer
- 2 使用 Nacos 做注册中心
- 2.1 nacos-client-b
- 2.2 nacos-client-b 开启服务发现客户端
- 2.3 pom.xml
- 2.4 同组才能访问
- 2.5 Nacos集成OpenFeign做远程调用
- 2.6 Nacos集成OpenFeign和gateway
- Nacos 配置文件中心
- 1.新建配置文件
- 2.新建nacos-config-a模块
- 3.回滚
- 4.读取 多个配置文件
Nacos
1.介绍
Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
- Nacos就是注册中心 + 配置中心的结合
Nacos可以用来做服务治理(服务注册和发现)和配置管理,Nacos主要提供以下四大功能:
- 服务发现与服务健康检查:Nacos使服务更容易注册,并通过DNS或HTTP接口发现其他服务,Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。
- 动态配置管理:动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。
- 动态DNS服务:Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以域名的方式暴露端点,让三方应用方便的查阅及发现。
- 服务和元数据管理:Nacos能从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。
2.Nacos专业术语
2.1 服务 (Service)
服务是指一个或一组** 软件功能**,其目的是不同的客户端可以重用。
2.2 服务注册中心 (Service Registry)
- 存储服务实例和服务负载均衡策略的数据库。
- 它是服务实例及元数据的数据库。
- 服务实例在启动时注册到服务注册表,并在关闭时注销。
- 服务和路由器的客户端查询 服务注册表以查找服务的可用实例。
实例
提供一个或多个服务的具有可访问网络地址(IP:Port)的进程。
2.3服务提供方 (Service Provider)
提供可复用和可调用 服务的应用方
2.4服务消费方 (Service Consumer)
会发起对某个服务调用的应用方
2.5版本依赖关系
Nacos 注册中心
1. 启动NacosServer
NacosServer 相当于 EurekaServer,只不过 eurekaServer 使我们自己搭建的一个项目,而 NacosServer 是阿里已经提供好了的。
安装好后
startup.cmd -m standalone 启动 单例模式, 默认(集群模式)
nacos后台管理平台
2 使用 Nacos 做注册中心
2.1 nacos-client-b
2.2 nacos-client-b 开启服务发现客户端
- 服务发现:客户端把自己的服务car-service 开启服务发现后,可以被注册中心 发现。 然后,才能注册到注册中心
- 注册中心:注册中心是一个地址的 注册列表 信息
2.3 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.powernode</groupId>
<artifactId>nacos-client-b</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>02-nacos-client-b</name>
<description>02-nacos-client-b</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.12.RELEASE</spring-boot.version>
<spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
nacos-client-a 同上操作, 可以注册 同一个命名空间 的 Z_GROUUP组
2.4 同组才能访问
- 跨命名空间不能访问,如 crm-space的 A_GROUP 的 user-service 不能访问 car-space 的
user-service - 跨组 不能访问,如 A_GROUP 的 user-service 不能访问 B_GROUP 的 user-service
- 同组 才能访问, 如 同一个组 A_GROUP 下的 两个service才能访问
2.5 Nacos集成OpenFeign做远程调用
写openfeign接口
client-a 消费者和 client-b服务提供者 都启动,然后访问 http://localhost:8080/test测试
2.6 Nacos集成OpenFeign和gateway
创建gateway模块, 引入依赖 Gateway 和 Nacos Service Discovery
配置文件
Nacos 配置文件中心
1.新建配置文件
2.新建nacos-config-a模块
sping模块
引入依赖 Spring Web 和 Nacos Configuration
读取配置中心的nacos-config-dev.yml 文件
测试 http://localhost:8080/info 即可
3.回滚
配置中心的配置文件,可以回滚到之前写的内容。
4.读取 多个配置文件
在配置中心,创建 相应的配置文件,操作跟读取单个配置文件一样。
两种写法,推荐写法1
写法1:
user-center-dev.yml
application-dev.yml
# 读取共享配置文件
server:
port: 8082
spring:
application:
name: nacos-config-test
cloud:
nacos:
config:
server-addr: localhost:8848 #注册地址不写,默认:localhost:8848
username: nacos
password: nacos
namespace: 2f8c127f-53d0-4a62-84ad-4f88000d9292 # 目前读取多配置文件的方式 只支持在同一个命名空间下
prefix: user-center # 读自身配置文件 A_GROUP下
group: A_GROUP
file-extension: yml
shared-configs: # 读共享配置文件
- application-dev.yml # 可以写共享的文件名称 只能在 DEFAULT_GROUP 默认组下(且放在当前命名空间下)
# - dataId: application-dev.yml # 这两种写法都可以
# group: C_GROUP
# refresh: true
profiles:
active: dev
#总结
#1.本地 bootstrap.yml 写什么? 2.远端的配置文件写什么?
#本地:
#1. 应用名称 spring.application.name
#2. nacos的注册和拉取配置文件
#
#远端:
#1.端口 数据源 redis mq 能放远端的全放,因为方便管理。 包括自定义配置
写法2:
user-center-dev.yml
member-center-dev.yml
server:
port: 8082
spring:
application:
name: nacos-config-test
cloud:
nacos:
config:
server-addr: localhost:8848 #注册地址不写,默认:localhost:8848
username: nacos
password: nacos
namespace: 2f8c127f-53d0-4a62-84ad-4f88000d9292 # 目前读取多配置文件的方式 只支持在同一个命名空间下
# 读取两个个配置文件1:user-center-dev.yml, 2:member-center-dev.yml
extension-configs: #可以读多个配置文件,需要在同一个命名空间下,可以是不同的组
- dataId: user-center-dev.yml
group: A_GROUP
refresh: true
- dataId: member-center-dev.yml
group: B_GROUP
refresh: false # 不动态刷线配置文件
file-extension: yml # 后缀
# 读取一个配置文件 user-center-dev.yml
# prefix: user-center
# file-extension: yml
# profiles:
# active: dev