一、介绍
注册中心+配置中心的整合
SpringCloudAlibaba中文地址:https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/README-zh.md
下载地址:https://github.com/alibaba/nacos/
访问:http://localhost:8848/nacos/
二、使用
1、添加依赖
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、添加配置
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
3、启动类上添加@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class PayamentMain9001 {
public static void main(String[] args) {
SpringApplication.run(PayamentMain9002.class);
}
}
4、测试
三、nacosAP和CP切换
一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式,当前主流的Springclud和Dubbo服务,都适合用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。
如果需要在服务级别编辑或者存储配置信息,那么CP是必须的,K8S服务和DNS服务则使用于CP模式。CP模式下支持注册永久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
四、nacos配置中心
1、添加依赖
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、创建bootstrap.yml
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
group: DEV_GROUP
namespace: 14f15603-088f-4587-ad9f-2c2cf18bfeb0
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yaml
# nacos-config-client-test.yaml ----> config.info
3、创建application.yml
spring:
profiles:
active: dev # 表示开发环境
#active: test # 表示测试环境
#active: info
4、添加@EnableDiscoveryClient
5、业务类(@RefreshScope实现动态刷新)
@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController
{
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
6、新建配置
Data ID格式
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
spring.application.name:服务名称
spring.profile.active :开发环境
spring.cloud.nacos.config.file-extension:配置文件后缀名
7、测试
四、分类配置
NameSpace+Group+Data ID
NameSpace 默认 public
Group 默认 default_group ,可以把不同的微服务划分到一个分组里去
五、nacos集群和持久化
官网:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
持久化(mysql):
1、在nacos的conf目录下找到nacos-mysql.sql脚本执行
2、修改conf目录下的application.properties文件,添加如下内容
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=username
db.password=password
集群:
1、下载nacos linux版,在opt目录下解压
2、修改nacos mysql配置
3、修改cluster.conf
5、修改启动脚本
5、配置nginx