微服务实战(二) Nacos 动态服务发现、配置和服务管理平台
概述
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
关键特性
- 服务发现和服务健康监测
- 动态配置服务
- 动态 DNS 服务
- 服务及其元数据管理
版本选择
官网wiki:https://github.com/alibaba/spring-cloud-alibaba/wiki/
环境
官方介绍:
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
服务端安装
单机部署(Linux)
#github上 下载安装包
wget https://github.com/alibaba/nacos/releases/download/1.4.0/nacos-server-1.4.0.tar.gz
#解压至安装目录
tar -zxvf ./nacos-server-1.4.0.tar.gz -C /sunny/software/
#结构
├── bin
│ ├── shutdown.cmd
│ ├── shutdown.sh
│ ├── startup.cmd
│ └── startup.sh
├── conf
│ ├── application.properties
│ ├── application.properties.example
│ ├── cluster.conf.example
│ ├── nacos-logback.xml
│ ├── nacos-mysql.sql
│ └── schema.sql
├── LICENSE
├── NOTICE
└── target
└── nacos-server.jar
#修改配置文件application.properties
vim ./conf/application.properties
Mysql 新建数据库 nacos 执行解压包中的
nacos-mysql.sql
- 修改配置文件
application.properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
- 启动
#启动
cd ./bin/
sh startup.sh -m standalone
#登录 默认账号/密码 nacos/nacos
http://ip:8848/nacos 查看系统
集群部署
- 官网文档:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
Nacos Spring Cloud
版本选择
导入依赖
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
<!-- SpringCloud Ailibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Ailibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
添加配置
- Nacos Server添加命名空间和项目配置文件
- 项目新增配置文件
bootstrap.yml
- Nacos Server
Data Id
需要与项目中{prefix}-${spring.profile.active}.${file-extension}
一致,prefix默认为spring.application.name
的值(例sunnyws-service-demo-dev.yml)。
server:
port: 9001
spring:
application:
name: sunnyws-service-demo
profiles:
active: dev
cloud:
nacos:
discovery:
server-addr: 172.16.220.10:8848
namespace: e90d261b-9c05-4bcb-b99f-b419d952737a
config:
server-addr: 172.16.220.10:8848
file-extension: yml
namespace: e90d261b-9c05-4bcb-b99f-b419d952737a
启动类添加注解
@EnableDiscoveryClient
让注册中心能够发现,扫描到该服务
@SpringBootApplication
@EnableDiscoveryClient
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
启动程序注册到Nacos
原理浅析
// TODO
作者: SunnyWs
链接: https://sunnyws.com/posts/1beed924/
来源: SunnyWs’Blog