版本说明
| Spring Cloud Alibaba | Sentinel | Nacos | RocketMQ | Dubbo | Seata |
|---|---|---|---|---|---|
| 2.2.4.RELEASE | 1.8.0 | 1.4.1 | 4.4.0 | 2.7.8 | 1.3.0 |
Nacos - 配置中心与服务注册发现
单机模式下运行Nacos
- 下载nacos 下载 1.4.1 版本 nacos-server-1.4.1.tar.gz 包. 解压至 nacos目录
tar -zxf nacos-server-1.4.1.tar.gz
- 配置nacos
- 修改
spring.datasource.platform和db.num。 - 配置数据库连接 示例如下
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_db?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
- 启动nacos
sh bin/startup.sh -m standalone
默认用户名密码 nacos/nacos
nacos命名空间(租户)
用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
nacos权限管理
nacos默认安全性较低,可配置权限分配不同的用户对不同资源的可读可写
- 新建用户
- 绑定角色
- 配置权限
spring cloud 工程使用
关于 Nacos Spring Cloud 的详细文档请参看:Nacos Config 和 Nacos Discovery。
推荐使用spring clod 和 spring cloud alibaba 的maven bom
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.4.RELEASE</spring-cloud-alibaba.version>
<spring-cloud-aliyun-oss.version>2.2.0.RELEASE</spring-cloud-aliyun-oss.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.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>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alicloud-oss</artifactId>
<version>${spring-cloud-aliyun-oss.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
Nacos Config 配置中心
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
- 在nacos中新增配置
Data ID: nacos-config.properties
Group : DEFAULT_GROUP
配置格式: yaml
配置内容: user:
name: nacos-config-properties
age: 18
注意dataid是以 properties(默认的文件扩展名方式)为扩展名。
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix默认为 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。spring.profiles.active即为当前环境对应的profile,
注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
file-exetension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置。目前只支持properties和yaml类型。
- 在pom中新增
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- 创建spring boot应用
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(ProviderApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.err.println("user name :"+userName+"; age: "+userAge);
}
}
在运行之前, 必须使用 bootstrap.yaml 配置文件来配置Nacos Server 地址,例如:
spring:
application:
name: nacos-config
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
可以看到
2021-01-19 13:31:19.025 INFO [bookola-base-service,,,] 17781 [] --- [ restartedMain] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-bookola-base-service.yaml,bookola-biz-service'}, BootstrapPropertySource {name='bootstrapProperties-bookola-base-service,bookola-biz-service'}, BootstrapPropertySource {name='bootstrapProperties-common-redis.yaml,bookola-biz-service'}]
Nacos Discovery 服务注册中心
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
- 在pom中新增
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 在appliaction.yaml中配置注册zhongxin
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
username: dev
password: dev
namespace: e8a87655-33f5-4c7a-a575-baf37ad30530
group: bookola
service: bookola-base-service
cluster-name: bookola-1
- 启动应用后即可在nacos控制台看到服务