nacos安装
1、下载安装包
2、修改配置
配置文件:{nacos_home}/conf/application.properties
# 指定端口号
server.port=8848
# 指定数据库类型
spring.datasource.platform=mysql
# 数据库初始化使用脚本
spring.sql.init.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&serverTimezone=UTC
db.user=your_login_name
db.password=your_login_password
# 开启权限校验,开启后登陆nacos服务端或客户端使用时都需要使用账号和密码
nacos.core.auth.enabled=true
# 集群相关身份认证,使用集群事,个单元服务的身份认证信息需要一致
nacos.core.auth.server.identity.key=your_key
nacos.core.auth.server.identity.value=your_value
3、初始化数据库
在数据库中执行如下sql脚本,{nacos_home}/conf/[derby-schema.sql | mysql-schema.sql],根据不同的数据库选择不同的脚本文件。
4、启动服务
bash startup.sh -m standalone
若为云服务器,需要同时开启8848和9848端口;8848为配置文件中指定的nacos-server访问端口,9848为客户端与服务端的通讯端口,在nacos-server访问端口的基础上+1000。
nacos注册中心
nacos提供了注册中心的基本功能,包含服务注册、健康监测、动态 DNS 服务以及服务生命周期管理等功能。
基本概念
1. 命名空间
命名空间是nacos中的最大逻辑分组,需要在Nacos服务端创建,实际项目中可按照不同的运行环境prod、uat、sit、dev分为不同的命名空间;Nacos会为命名空间生成一个唯一的DataID,当客户端或服务分配权限关联命名空间是都使用DataID关联。
2. 分组
客户端定义的业务分组,实际项目中可以将相似业务模块的所有服务放在同一个业务分组;如后端交易业务可设置为交易分组,交易分组中可包含客户、产品、订单服务;分组用于业务隔离。
3. 服务名称
分布式架构中的单应用服务名称,同一服务的名称为集群。
4. 服务注册中心
存储服务实例和服务负载均衡策略的数据库。
5. 权重
实例级别的配置。权重为浮点数。权重越大,分配给该实例的流量越大。
6. 健康检查
以指定方式检查服务下挂载的实例 (Instance) 的健康度,从而确认该实例 (Instance) 是否能提供服务。根据检查结果,实例 (Instance) 会被判断为健康或不健康。对服务发起解析请求时,不健康的实例 (Instance) 不会返回给客户端。
7. 健康保护阈值
为了防止因过多实例 (Instance) 不健康导致流量全部流向健康实例 (Instance) ,继而造成流量压力把健康实例 (Instance) 压垮并形成雪崩效应,应将健康保护阈值定义为一个 0 到 1 之间的浮点数。当域名健康实例数 (Instance) 占总服务实例数 (Instance) 的比例小于该值时,无论实例 (Instance) 是否健康,都会将这个实例 (Instance) 返回给客户端。这样做虽然损失了一部分流量,但是保证了集群中剩余健康实例 (Instance) 能正常工作。
使用
1、依赖添加
implementation("com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:${nacosVersion}")
2、配置
Spring Boot项目中的application.yml
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
service: ${spring.application.name}
namespace: 33da2973-26a9-429e-93c1-19e37d1d163f
group: fund-trade
username: fund_trade_nacos_dev
password: ENC(qJJ4qlt9rEmdx1HrKjDXHJysZTm7XS9XSnGr848caZ83IdTzeyV/+w==)
nacos配置管理
Nacos提供配置管理功能,提供统一的配置平台,用于对应用配置做动态更新、版本迭代。实际项目中如Redis、Fastftp、Seata、Mysql等相关通用配置,可在Nacos配置中心中统一做配置管理。
Nacos配置管理同时提供了配置热更新的功能,避免了修改配置文件后需要重启应用服务才能生效的问题。(需要使用@RefreshScope)。
使用
1、依赖添加
implementation("com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:${nacosVersion}")
2、配置修改
Spring Boot项目中的application.yml
spring:
application:
name: trade-server
profiles:
active: dev
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
namespace: 33da2973-26a9-429e-93c1-19e37d1d163f
group: fund-trade
username: fund_trade_nacos_dev
password: fund_trade_nacos_dev@123
# spring boot:3.x中有兼容问题,需要开启
import-check:
enabled: false
config:
import:
### 指定映射的Nacos配置管理中的配置文件名称,当前示例为:trade-server-dev.yaml。除名称外,还需要与当前配置文件的namespace、group一致
- optional:nacos:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- optional:nacos:${spring.application.name}-common.properties
3、在Nacos配置管理中创建配置文件
注意配置文件所属命名空间、分组和文件名,示例对应文件如下图:
4、开启配置自动更新
在需要使用自动更新的Bean类上使用@RefreshScope注解,则Bean中使用到了配置文件中的属性会响应配置文件的更新。
@Component
@RefreshScope
public class TradeController {
@Value("${test.prop.name}")
private String testName;
}
如上述示例中的testName,当配置文件中的test.prop.name属性变更时,程序中的testName值会自动更新。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理